區塊鏈分片技術

作者:扎克-赫斯, Zack Hess https://github.com/zack-bitcoin/amoveo-docs/blob/master/other%5Fblockchains/sharding.md

區塊鏈分片管理

草稿版本5

在比特幣區塊鏈中,無論你在系統中增加多少個完整的節點,你都無法提高交易的處理速度。 區塊鏈分片的想法是,不同的全節點應該專門負責共識過程的不同部分。這樣,如果我們在區塊鏈上增加更多的計算機,我們每秒鐘可以處理的交易數量就會增加。

本文件的目的是爲了

  • 描述可能導致區塊鏈瓶頸的不同資源
  • 描述了一些關於如何向區塊鏈添加分片的不同計劃。
  • 計算每個不同的計劃將如何改變我們的資源需求。

區塊鏈資源,以及它們如何限制比特幣的交易帶寬 #


  • cpu功率。#txs/秒 = O(CPU / #full_nodes)
  • 帶寬。#txs/second = O(Bandwidth / #full_nodes)
  • 內存空間。#txs = O(Memory / #full_nodes) -> #txs/second = O(Memory * (memory getting cheaper by moorse law) / #full_nodes)
  • 硬盤內存訪問。#txs = O(hard_drive_speed / #full_nodes)
  • 硬幣時間。如果你需要將幣鎖定一段時間。#txs = O(0)

對於今天的大多數區塊鏈來說,硬盤內存訪問是他們能夠處理交易的速度的瓶頸。

分片計劃 #


  • 無狀態全節點。在無狀態全節點中,每個區塊都包含你驗證該區塊所需的所有默克爾證明。因此,驗證區塊的過程從不涉及從硬盤上讀取數據。這意味着區塊需要大10倍左右。這是爲Amoveo發明的策略,這也是Amoveo自創世區塊以來的工作方式。以太坊正在考慮增加這一功能 https://ethresear.ch/t/the-stateless-client-concept/172
  • Lazy Ledger - https://arxiv.org/pdf/1905.09274.pdf 。Lazy ledger是一種技術,全節點只需要下載大約sqrt(# transactions),他們可以得到概率保證,該區塊中的所有txs都被正確處理。它使用擦除編碼和默克爾欺詐證明。Lazy Ledger依賴於存儲節點專家的存在,這些專家被付錢記住所有txs的全部歷史,並將這些信息的隨機子集提供給每個需要它的人。
  • optimistic rollups。https://arxiv.org/pdf/1904.06441.pdf 通過optimistic rollups,我們在鏈上保留歷史,但我們將所有可編輯狀態的處理轉移到側鏈上。礦工在發佈區塊時,會支付一筆安全保證金。如果有人能證明一個區塊不適當地處理了一筆交易,他們可以銷燬一半的安全押金,並贏得其餘的作爲獎勵。

我對optimistic rollups的評論

維塔利克談到Optimistic Rollups,看起來這就是Eth2.0的計劃。

  • Plasma MVP https://ethresear.ch/t/minimal-viable-plasma/426 Plasma MVP是一種側鏈,每個用戶都需要了解自己側鏈上的所有活動,並準備好挑戰任何不當的提款。側鏈的管理者可以在任何時候決定終止該側鏈和其中的所有合約。所以等離子體MVP只能做支付,不能做智能合約。如果對歷史的發生方式有異議,我們可以在歷史上做二進制搜索,在主鏈上解決這個問題,我們可以燒掉安全存款,這樣這種二進制搜索幾乎不會發生,但我們確實需要準備好處理鏈上最壞的情況。如果一個側鏈一下子被轉移到鏈上,那麼所有參與該側鏈的人都需要在鏈上公佈他們對金錢的要求。因此,它與用戶的數量呈線性關係。而用戶的數量與txs的數量呈線性關係。
  • 等離子體現金 https://ethresear.ch/t/plasma-cash-plasma-with-much-less-per-user-data-checking/1298 等離子體現金是一種側鏈,當你把幣存入側鏈時,它們是一次性的,不能與該側鏈的其他幣合併。你需要爲你所擁有的所有一次性款項記錄整個歷史。關閉一個側鏈的成本與坨坨的數量成線性關係。坨坨的數量與用戶的數量呈線性關係。每個用戶的txs數量是一個線性關係。
  • Plasma Flow https://github.com/snjax/plasma-cashflow-spec Plasma Flow是一個關於如何升級Plasma Cash的計劃,它能夠合併和分割側鏈內的腫塊。如果側鏈突然要在鏈上關閉,其成本將與當時存在的腫塊數量成線性關係。所以它的效率和其他版本的等離子體是一樣的。

記分牌 #


這些分數是基於運行一個完整節點的成本,而不是整個網絡的成本。10分是一個完美的分數。0是最差的分數。

如果一個網絡有不同種類的節點,那麼我們就計算出運行一組最小節點的成本,以保持區塊鏈的活力。

我把比特幣加到了記分板上,這樣你就可以比較默認設置和分片計劃。

各種分數的含義。0 - O(N ^ #txs)

1 - O(#txs ^ N)
2 - O(#txs * log(#txs))
3 - O(#txs)
4 - O(#txs/N)
6 - O(sqrt(#txs))
7 - O(log(#txs))
9 - O(1)
10 - O(0)


我們對比的計劃。
B = Bitcoin,
S = Stateless full nodes,
O = optimistic rollup,
OL = optimistic rollup + lazyledger,
P = Plasma
PC = Plasma Cash
PF = Plasma Cashflow

資源。
CPU = CPU
NB = 網絡帶寬
MS = 內存大小
MB = 內存帶寬
CH = 幣*小時 鎖定多少股權。

xCPUNBMSMBCH
B334310
S33101010
O33361
O66661
P44449
PC44449
PF44449