作者:扎克-赫斯, Zack Hess https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/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,看起來這就是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 = 幣*小時 鎖定多少股權。
x | CPU | NB | MS | MB | CH |
---|---|---|---|---|---|
B | 3 | 3 | 4 | 3 | 10 |
S | 3 | 3 | 10 | 10 | 10 |
O | 3 | 3 | 3 | 6 | 1 |
O | 6 | 6 | 6 | 6 | 1 |
P | 4 | 4 | 4 | 4 | 9 |
PC | 4 | 4 | 4 | 4 | 9 |
PF | 4 | 4 | 4 | 4 | 9 |