十万简书钻头号玩家好文推荐解忧麻将社

zilliqa,第一个实现了分片技术提升性能的公链

2019-04-15  本文已影响24人  苍天鸭

分片的技术一直在区块量行业被提起,但以太网络的分片推进也是相当的缓慢。相反,Zilliqa,作为第一个使用了分片技术用来提升整体网络吞吐量的公链,已经上线了。在Zilliqa自己的测试网络上,有4个分片,每个分片600个节点,达到了支持每秒1400的交易容量,在加入更多分片和节点的情况下,达到了2800多的TPS。

官网https://zilliqa.com
Zilliqa主要解决两方面的问题:

  1. 提高公链性能。通过引入分片机制,使得公链的整体性能与分片和节点数保持线性增加的比例,从而解决现有公链性能差,无法支持大规模用户和应用的问题。
  2. 解决公链(尤其是以太)智能合约适用性的问题。通过引入Scilla,一种新的智能合约语言,实现了偏向分布式计算应用的需求实现;并针对现有的solicit编写的智能合约出现的安全性问题,做了全面的优化。

这篇文章主要来解读一下Zilliqa的分片机制。


Zilliqa的挖矿节点采用了PoW的形式,但PoW只是用来防止女巫攻击,以及生成节点的身份凭证,而不用做共识。其PoW使用了Ethash算法。Ethash算法使得使用ASIC专用矿机变得困难,从而可以让更多使用GPU的矿机加入挖矿节点,从而保证矿工的数量,进而保证安全。

Zilliqa区块链里面的“区块”有两层:

  1. 第一层,叫DS Block,全称是directory service blocks。一个DS Block包含了将要参与交易区块共识的节点信息。
  2. 第二层,就是普通的交易区块TX-Blocks。由在DS Block里指定的节点进行共识。

Zilliqa的分片和共识机制如下:
1. DS Block的共识
一个目录服务委员会(directory service committee,简称 DS committee) 被选举出来,然后目录服务委员会将整个网络节点分片,并将每个节点分配到相应的分片中。

2. 分片的产生
在DS committee确认后,分片开始了。

DS节点会在一个公开信道(public channel)里面发布相关的信息,这些信息也是经过2/3以上的DS节点共识的。这些信息包括但不限于以下内容:

  • DS节点的身份标记以及连接方式;
  • 每个分片里的节点;
  • 每个交易提交到不同分片的逻辑。

3. 交易处理

每个交易提交到不同分片的逻辑如下:
根据每个交易发送方地址的最后几位,通过(log 2 L) + 1 的算法将交易分配到不同的L个分片中做验证。

注:由于交易是按照发送者的地址来决定进入哪个分片处理的,所以双花问题可以在一个分片中被处理并被发现

4. 最终区块的共识

  • 如果交易信息不是在本分片的,那么交易发送者的账户在本分片会被暂时挂起,直到根据全局状态的更新会把该账号的挂起解除。
  • 如果该交易是在本分片的,那么最终区块的数据项会被本区块掌握的交易信息填充,该交易账户的状态以及全局状态也会被更新。

不管是在DS committee里面,还是在每个分片里面,共识机制都是PBFT,但加以了改进,利用数字签名,将PBFT需要的交流复杂度从O(n2)降低到了O(n);并应用了植入了EC-Schnorr 多签方法,以及自定义的签名数位(bitmap)的方式,并将签名数据大小从O(n)降低到了O(1)。
Zilliqa的签名数位是指:通过一个数字B[i],记录第i个节点是否签名。签名的话,B[i]=1,不然为0。

Zilliqa里面交易确认以及智能合约的运行也是需要消耗“gas”的。Zilliqa里面的gas用Zilliqa自己的通证ZIL来支付。每个参与交易区块共识的分片里面的节点(包括领导者),以及DS committee的共识节点(包括领导者)都能从区块里面的“gas”这个数据项指定的数字获得指定的ZIL的奖励。ZIL总量是210亿,会在10年内被“挖矿”出来,前4年大约挖出整体的80%,后6年则是20%。

上一篇下一篇

猜你喜欢

热点阅读