十、分片的難題 —— 交易有效性
還有個分片難題是交易有效性。交易有效性問題就是防止無效交易進入區塊,成為
區塊鏈維護的歷史真相的一部分。
舉
比特幣的例子,假如我是超級大礦工,掌握了大部分算力。我想偽造一筆交易,把別人地址上的比特幣轉給我,能不能做到呢?答案是做不到。
因為這筆交易沒有地址對應的私鑰簽名,是無效的,包含這筆交易的區塊也是無效的,不會被其他節點所接受。即便我掌握了大部分算力,可以挖出最長的鏈,但也只是構建了一個很長的分叉。
眾多的比特幣錢包、交易所都不會認可我這個分叉。所以 51% 攻擊,并不能把誰的
btc 偷走,或者憑空創造出比特幣。最多是雙花攻擊,雙化不展開談了。總而言之,比特幣網絡不存在交易有效性問題。
那么這樣一個十年前就被完美解決的問題,怎么又會出現呢?原因是 btc 等公鏈的節點都擁有全部數據,因此能完全獨立地驗證交易有效性。現在變成了多個分片,節點只存儲部分數據,也就無法獨立驗證交易有效性。
我們看左側的圖,有兩個分片,分片 1 已經被惡意的驗證人所控制,在 B 區塊里打包了無效交易,例如給自己的地址上憑空創造了很多通證。在下一個區塊 C,攻擊者發起跨片交易,要把通證轉到分片 2 上的 DApp,可能是去中心化交易所。分片 2 看到的 C 區塊里面的交易都沒有問題,而且分片 2 也沒有 C 區塊之前的數據,所以無法驗證交易有效性。
下面我們介紹一個在分片環境下解決交易有效性的方案,叫舉報獎勵。其實還有別的方案,但跟主題無關,就略去不提。
看右側圖,分片 1 雖然被惡意驗證人控制了,但是還有至少一個誠實的驗證人。分片 2 不能驗證跨鏈交易的有效性,就選擇相信分片 1,打包了跨鏈交易。這時候分片 1 里的誠實節點可以要跳出來舉報,說區塊 B 是非法的,我有證據。
系統接受了舉報,就會懲罰分片 1 里的惡意驗證人,沒收他們質押的通證,并向舉報者提供獎勵。所以為什么有的區塊鏈,驗證人要收回質押的通證,都需要等幾個月。主要的原因就是給舉報和證實舉報留出足夠的時間。
以上我們介紹了四個分片的難題,和相應的解決方案。
本文為劉毅博士演講《萬字長文說透 Polkadot 架構》的一部分,本文做了節選
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。