区块链分片技术

作者:扎克-赫斯, 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的评论

维塔利克谈到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