区块链公链分片技术方案(配思维导图)

unitimes.io

全球视角,独到见解
以太坊分片思路
其基本思想是,将网络中的节点分成不同的碎片,各分片可以并行处理不同交易,这样可以并行处理相互之间未建立连接的交易,以提高网络并发量。分片方案的特点是,随着节点数目的增加,网络吞吐量也随之增加。
Vitalik Buterin在最新的推文中表示以太坊分片技术最重要的原则是“最大限度地接近与单一区块链相同的性质”
二次方分片的目的,就是通过一种双层的设计来增加交易容量。第一层不需要硬分叉,主链就保持原样。不过,一个叫做 校验器管理合约 (validator manager contract,VMC)的合约需要被发布到主链上,它用来维持分片系统。这个合约中会存在 O(c) 个 分片 (目前为 100),每个分片都像是个独立的“银河”:它具有自己的账户空间,交易需要指定它们自己应该被发布到哪个分片中,并且分片间的通信是受限的。
分片系统中的大多数用户都会运行两部分程序。(i) 一个在主链上的全节点(需要 O(c) 资源)或轻量节点(需要 O(log(c)) 资源)。 (ii) 一个通过 RPC 与主链交互的“分片客户端”
子链、侧链、状态通道
它们都属于链下扩容。
链下交易,对应比特币的闪电网络(Lightning Network)和以太坊的雷电网络(Raiden Network)。
提前支付一些以太坊或比特币作为押金,之后你可以在链下通过一些手段,来跟其他人进行交易。交易结束后把这个结算放在区块链上面。需要主流交易所、钱包这种大节点参与才比较有效。
核心思路是每个链可以独立自主地处理交易或者事物,相互之间不需要交流,最终把结算信息放在主链上。
跟分片最本质的区别是,分片是链上扩容,是对整个区块链网络的一个重构,节点也是相互关联的。
代理人共识协议
典型代表EOS,TRX。如何选出这些代理人,可以用权益证明,也可以通过一些官方的验证。
不管是7个代理人还是21个代理人,甚至可能是几十个代理人,大家会形成一个小团体。这个机制的好处是可以保证在一个很小的团体内部,很快就达成共识。
zilliqa分片
开源地址:https://github.com/Zilliqa/Zilliqa
C++实现的
在亚马逊的EC2上面测试得到用3600节点实现了每秒2488笔交易
特点:分片技术、PoW+PBFT混合共识机制
测试网络:https://explorer.zilliqa.com
Zilliqa的设计构思 第1部分:网络分片
https://my.oschina.net/zilliqa/blog/2962501
Zilliqa 的设计构思 第2部分:共识协议
https://my.oschina.net/zilliqa/blog/2962504
Zilliqa 的设计构思 第3部分:使共识更有效
https://my.oschina.net/zilliqa/blog/2962511
Zilliqa官方挖矿指南中文版
https://www.huoxing24.com/newsdetail/20181206173835283794.html
网络分片
假设我们有一个包含1000个节点的网络,将自动地把该网络分成10个、每个包含100个节点的分片,且所有分片可并行地处理交易。
由于分片架构能平行地处理交易,因此吞吐量可随着网络规模增加而线性增长。
每个分片现在都能独立处理交易并因此产生高吞吐量。
需要解决的关键问题
对女巫攻击的防御(Sybil Resistance)
创建分片、给分片分配节点和任务
分片大小
跨片交易
zilliqa解决方法
1. 防控女巫节点
使用PoW。每个希望加入Zilliqa网络的新节点都必须先执行PoW,网络中的现有节点验证新节点的PoW并授权其加入网络。
POW工作量证明部分跟以太坊基本上是一样的,这要求你将上一个区块的哈希值、节点的IP地址和你的公钥一起进行哈希计算。
对应的难度是相匹配的,例如哈希值的前100位都是0,如果你算出来的哈希值满足这个条件,就说明你完成了工作量证明。
根据工作量证明节点ID的最后几位,来决定分到哪一个分片上。对于一个新的节点来说,是无法通过自己的意志去加入某一个分片的,只能通过工作量证明,而工作量证明难度较高,因此可以避免出现新节点自己选择分片的情况。因此工作量证明的最后几位,就可以从数学上保证你的随机性是足够的。可以保证一些恶意节点不能直接加入到某一个分片。
2. 自动创建分片
有一个单独的分片即DS委员会去整合每个分片的结果,收集不同分片里面交易哈希,进行一个共识协议,形成哈希的哈希,然后广播,其他节点验证签名。
在每个DS Epoch开始时,所有候选人都将运行工作证明(Ethash算法)过程300秒窗口,以便竞争加入Zilliqa网络。
每个DS Epoch(约1.5小时)内总共有100个TX时期(每个~1分钟)。第100个TX时期被称为Vacuous时期。空白时期会处理coinbase交易(奖励机制)、升级机制(因为pBFT中没有分支)和持久状态存储(写入节点的DB而不是仅存储在内存中)。在这个时期,网络不会处理任何常规交易。
基于POW选举出DS委员会,使用先进先出策略定期移出一名DS委员会老成员、增加一名新成员,新进入委员会的节点是最快解决PoW的节点,任何时候DS委员会的大小都是固定的。DS委员会一旦当选,便启动分片程序,网络中的所有其他节点立即执行另一个PoW,其PoW由DS委员会验证,每个节点根据提交情况和随机性,被分配到特定的分片。PoW提交的最后几位二进制数字决定了节点将被分配到哪个分片。
3. 选择合适的尺寸
选择合适的分片大小对系统的安全至关重要。使用PoW创建分片相当于随机无差别地抽样一个节点集。
从600个节点开始,其包含三分之一的恶意节点的概率降至百万分之一。出于这个原因,Zilliqa认为最小分片大小为600。
4. 避免跨片交易
因为跨片交易需要锁协议,因此其开销成本很高,在分片设计之初就尽量避免跨片交易的产生
原子提交协议技术方案
5. 交易分片
每当交易到达网络时,它就被分配到一个特定的分片上。分配是由交易发送地址的前几位二进制数字决定的,这就叫做交易分片。
交易首先由分片打包,生成微块,然后上传给DS委员会,如果幸运,能被DS节点确认并签名,生成最终块。
每一个节点都可以收到最终的区块,这个区块的内容是很小的。同时,不同区块之间也会进行交换数据,从而分享最终区块内的这些交易。
整个系统有三层结构:第一层,是哈希的哈希;第二层,交易的哈希;第三层,真正的交易内容。通过这种三层结构来保证整个系统在每一步进行广播的时候,内容量都是相对比较小的。因此过了一段时间之后,你的不同分片里面,大家都可以获得这一段时间以来交易处理之后的一个共同状态。
交易分片按照交易发送者的账号地址来划分,来自同一发送者的所有交易都将在同一个分片中处理,允许每个分片成员检测其是否双花。通过每个交易中存在的随机数nonce,可以轻松检测双重花费(或重放攻击)。
6. 计算分片
分片还使计算执行和智能合约运行十分高效。例如,一部分分片可以充当映射器(mapper),其他部分分片可以充当归约器(reducer),并非常有效地执行映射-归约任务(map-reduce task),这也被称为计算分片。
共识协议
计算密集型的PoW需要大量的时间进行计算并且可能减慢共识协议,且它与网络中的节点数量无关,而是取决于网络的集体计算能力。不能很好地利用分片小的优势。
实用拜占庭容错协议(Practical Byzantine Fault Tolerance, 简称为PBFT)
Zilliqa采用PBFT在每个分片中达成共识。该协议是由卡斯特罗和利斯科夫(Castro and Liskov)在1999年提出的。它是在这样的假设下运行的:在执行协议之前,假设每个分片中最多有1/3的节点是恶意的。
在PBFT中,一个共识组中(即一个分片中)的所有节点按顺序排列,它有一个主节点(领导者),其他节点被称为备份节点。每轮PBFT都有三个阶段:预备、准备、提交。
PBFT与Nakamoto共识协议相比其他优点
1. 交易最终性
一旦交易被提交到区块链,那么它就是最终的了且不会有临时分叉,因此不需要确认。
2. 低能耗
Zilliqa只使用PoW来防止女巫节点攻击、确认节点身份并进行分片,而不用于达成共识。现实中,每确认大约100个区块才需要做一次PoW。
3. 报酬差异小
Zilliqa中参与共识协议的每个矿工都可以获得对应的奖励
PBFT的挑战
一个主要缺点:只有当分片规模很小时(即小于50)才高效。但是,正如我们前面的文章中所讨论的,出于安全原因,Zilliqa的分片大小必须不少于600个节点。
PBFT对于大型网络而言效率低下的主要原因是它有一个潜在的通信成本,即 分片中的每个节点都必须与所有其他节点通信,这就是通信成本二次方的原因。
使用数字签名而不是MAC将发送消息的数量从二次方数量级减少到线性,当n很大时这种减少会产生重要影响。以600个节点为例,其中传播的消息数量可以从17.97万减少到599。
使用多重签名的方法来降低通信成本,减少每个消息的大小。
目前一种比较流行的多重签名方案是基于Schnorr数字签名技术。
Zilliqa使用了近期一些学术论文中的技术来提高经典pBFT协议的效率。
附:思维导图

来源:虫洞社区
作者:大自然
【文章版权归原作者所有,其内容与观点不代表Unitimes立 场。转载文章仅为传播更有价值的信息,合作或授权联系请发邮件至 contact@unitimes.media或添加微信unitimes2017】

Ai sẽ là người được lợi trong đợt Bull Run của Bitcoin?
Theo báo cáo của sàn giao dịch OKEx trong thời kỳ Bull Run hiện tại của Bitcoin, những ch...
MCDEX khởi chạy trên mạng thử nghiệm Arbitrum Rollup L2
MCDEX vui mừng thông báo về việc ra mắt testnet của mình trên Arbitrum Rollup, một giải pháp khả năn...
[Tổng kết AMA] Cùng BigcoinVietnam tìm hiểu về Lien.Finance
Vào 11:00 AM - 12:00 PM, thứ tư, ngày 02/12/2020 Lien.Finance và BigcoinVietnam đã tổ chức một ...