Zilliqa进度更新第19期

10 个月前 · 原创文章

2018年10月16日

Yiling Ding 发布于Zilliqa博客,Rita译

过去两周,我们在世界多地举办和参加了多场活动,收集到诸多有益反馈并不断推动更多人了解和参与Zilliqa的开发和生态建设。我们积极举办这些活动是因为,我们致力于完善Zilliqa各方面的性能,希望有更多实用、有价值的应用搭建在这个平台之上,从而推动Zilliqa和区块链整个行业的真正普及,并且我们也深知,吸引开发人员和整个社区的反馈是这一问题的关键所在。

在技术方面,我们一直在努力实现新功能,从而不断提高网络的稳健性,内容包括实施基于树的集群广播、MIMO DS委员会、来自查找节点的消息验证等。我们还根据伦敦黑客马拉松活动的反馈,改进了Scilla解释器并更新了我们的客户端库。我们渴望听到更多您的声音,欢迎随时向我们反馈任何意见!

同往常一样,如您想要了解Zilliqa的更多信息或与我们讨论项目技术,请随时通过以下官方渠道与我们联系:

电报群:https://t.me/zilliqachat

Slack: https://invite.zilliqa.com

推特: https://twitter.com/zilliqa

Reddit:https://www.reddit.com/r/zilliqa/

Github: https://github.com/Zilliqa/zilliqa

Gitter:https://gitter.im/Zilliqa/ecogrant(开发相关专用频道,包括“生态构建资助计划”)

已举办的活动

过去两周,我们在世界多地举办和参加了多场活动,包括马耳他DELTA峰会、伦敦Scilla黑客马拉松活动、旧金山区块链周等。

在伦敦国王学院举办的Scilla 开发者研讨会和黑客马拉松活动。获奖者已正式加入“生态构建资助计划”!

心书在旧金山区块链周 Epicenter发表讲话。

Edison在美国卡内基梅隆大学(他的母校)举办了Scilla研讨会。

即将举行的活动

未来几周,欢迎大家积极参加我们在欧洲和亚洲的活动!

1、西班牙,巴塞罗那

时间:10月16–18日

活动:Blockchain Solutions World大会https://www.blockchainsolutionsworld.com/

2、西班牙,巴塞罗那

时间:10月19–21日

活动:Kairos欧洲峰会

http://kairossummit.eu/

3、日本,东京

时间:10月21日

活动:BlockChainJam 2018

https://blockchainjam2018.peatix.com/

4、德国,法兰克福

时间:10月22–23日

活动:East-West Crypto Conference

https://ewcc.io/

5、印度尼西亚,雅加达

时间:10月23–24日

活动:Zilliqa的联合创始人之一Juzar Motiwalla将出席2018年雅加达Tech in Asia大会,并在SEA专题区块链创新会议上发言

https://www.techinasia.com/events/jakarta

技术进展

过去两周,技术团队继续改进现有性能并添加了许多新功能,一些主要的更新如下:

基于树的集群广播

基于树的集群广播(Tree-Based Cluster Broadcasting,简称TBC)是一种确定性的多播方法,我们现已将其添加到我们的网络通信策略集当中。分片节点在DS(Directory Service)块内接收分片结构前等其他一些新的对等信息尚不可用的情况下,TBC将补充我们的Gossip协议(在上一期技术更新中已对此协议进行了介绍)。

在这种情况下TBC的工作方式是,接收块的每个分片节点继续将其多播到一个集群,即大小为N的分片中的X个节点的子集。这些对等体又将该块多播到其他大小相等的集群组中,在我们达成具有log_X(N)级别的树结构之前,该过程重复进行。与Gossip协议一样,此方法中的冗余支持网络的稳健性,并能确保所有节点及时接收消息。

多入/多出DS委员会

多入/多出(Multiple-In Multiple-out,简称MIMO)DS委员会

为了对DS委员会的组成进行全面洗牌改组,我们更改了协议,允许多个节点在每个DS周期之后加入或离开DS委员会。选择标准基于提交的解的难度以及满足DS难度标准的提交数量。使用这种新方法,执行最多工作的节点(即解PoW时开头0最多的解)将有更高的机会被选入到下一个周期的DS委员会中。这也意味着我们能够更快地从委员会中剔除任何有故障或脱机的DS节点,而不是之前那样,在每个周期只能剔除一个这样的节点。

修改DS块结构

我们继续改进从DS块获得的信息。结合MIMO DS委员会的更新,我们录入了有关所有传入DS节点的网络信息和公钥的信息。此外,DS块的领导者现在包含一个可选的视图更改(VC)块列表。最后,我们还修改了块的序列化和反序列化,以使用Google Protocol Buffers(Protobuf)。之后,我们将对代码内的所有其他数据类型进行相同的处理,来进一步避免一些行为风险,如越界缓冲区访问和未经验证的缓冲区大小调整等。

视图更改块的传输

视图更改(View Change,简称VC)块的传输

如果在一个事件中,DS块共识完成之前发生了视图更改,我们也将延迟VC块向分片节点的发送。相反,这些块现在已集成到随后的DS块消息中,该消息在视图更改完成、DS块共识成功后发送。这种变化背后的基本原理是它允许我们使用前面部分中描述的TBC多播方法。如果预先发送VC块,那么分片结构尚不可知所以TBC将不被用。通过在DS块上运用这些VC块,可以实现TBC方法。

档案节点(Archival Nodes)

为了减轻查找节点的存储需求和它接收的请求量,我们新创建了档案节点。该节点在预定时间之后定期从查找节点提取数据,并以JSON或字节格式将此信息存储在MongoDB中。这些信息包括交易(Tx)块,DS块,状态,Tx体和微块。档案节点的最终目的是,通过处理来自节点的查询来进一步支持查找节点。有关进度请持续关注。

验证查找节点中的消息

验证查找节点的真实性对区块链的安全性至关重要。因此,我们已将查找节点集成到白名单中,并将验证代码添加到我们的查找消息处理功能中。在引导序列期间,每个节点都将得到关于初始查找节点集的信息的预定义列表,特别是其公钥。此后,每一条从查找节点接收到的消息都将被验证其签名是否正确,从而有效地防止攻击者伪装成查找节点发送恶意消息。

测试网改进

一方面,我们正在积极准备扩大测试规模,另一方面,我们也在持续改进测试基础架构。经过几轮实验,我们基于Kubernetes的设置现在能够启动一个2000节点的集群,高于之前1000个节点。此升级主要集中在群集主节点的规范上。除此之外,还涉及升级这些节点的AWS EC2实例,通过更高的IOPS和根卷优化来提高EBS卷性能,并在kops附加安装阶段增加内存限制。

Scilla解释器

过去两周,我们一直在进行Scilla解释器的性能实验。根据获得的结果,我们对解释器做了一些改动。例如,我们已经将Scilla`Map`的内部表示从OCaml`List`更改为`HashMap`。这确保了在Scilla`Map`中插入`(key,value)`在`Map`的大小上不再是线性的。我们还删除了所有从literals构造错误和日志消息的代码,因为它们会变得很大,从而影响解释器的性能。

我们还一直在努力改进解释器的错误和失败报告。截至目前,Scilla二进制文件(`scilla-runner`和`scilla-checker`)在成功时返回结构化输出,但在错误和失败时,输出不是系统的。因此,我们重构了错误报告,并以JSON数组的形式构建了它。基于JSON的结构化错误报告使客户端(例如IDE)更容易向最终用户报告错误。

我们还在解释器中添加了对RIPEMD160和Keccak256哈希函数的支持。Keccak256支持是由我们的社区成员编写的。我们很高兴看到社区对Scilla核心开发的贡献。请注意,RIPEMD160用于生成比特币v1地址,而Keccak256用于以太坊。

在伦敦研讨会之后,我们开始编写“scilla-checker”中使用的分段方法的文档。这将允许其中一位获胜者更轻松地添加额外的静态检查。应几位社区成员的要求,我们已经开始实现用户定义的代数数据类型,以便更容易地实现复合值。这将允许Scilla开发人员以比现有替代方案(使用`Pair`)更简单的方式编写`struct`。

过去两周内完成的其他任务摘要如下:

改进了函数和内置函数参数的位置信息(在错误报告期间)。

所有运行者现在可以在退出状态中区分出成功与失败。此前并这些信息不会被报告,但现在所有成功退出都报告0,失败报告1。更新的测试套件现在已可以反映这一点。

开始在Scilla检查器中进行现金流量分析,希望用户能够检测合约中的资金是否被错误记录。

开发工具和库

过去两周,我们继续努力更新开发人员将用于与区块链网络交互的客户端库。现阶段,许多核心功能已完成。应用程序开发人员已经可以:

通过私钥和密钥库文件导入和导出帐户。

签署任意字节,包括交易。

使用`Transaction`abstraction,当交易被确认时,它会在超时时自动解决。

使用“Contract” abstraction,允许部署智能合约和调用转换。

该库几乎为每个模块系统构建提供了多个软件包(最后计数为6个)。它还包括“Providers”的中间件abstraction,允许开发人员根据自己的喜好自定义默认和其他提供程序(例如,将调度操作分配给`Redux`存储或类似的pub-sub机制)。

随着主网发布越来越近,我们十分期待社区成员能多向我们反馈意见,因为您将成为我们工作的最终消费者;为此,我们鼓励所有级别和背景的开发人员随时联系我们提供宝贵的意见。

Zilliqa新闻报道

在旧金山区块链周期间,Crush Crypto对心书和Victor的采访视频:

https://www.youtube.com/watch?v=6E0QHJB0Dsg

有关Zilliqa的介绍: 

https://www.finder.com/nz/zilliqa

对Zilliqa新设立的英国伦敦办事处的报道:https://blockspoint.com/news/archive/platform-zilliqa-enters-european-market

https://www.youtube.com/watch?v=QfaCO2Vjk3I

如果您支持和信任Zilliqa,欢迎转发到朋友圈,让更多的人认识Zilliqa。

如果您对项目有什么疑问,欢迎到评论区留言,我们会及时、认真回复每一个问题!

– END 

往期推荐

Zilliqa的设计构思(第1部分:网络分片)

https://mp.weixin.qq.com/s/ib2F2cg0OUgN-_etHt9qVQ

Zilliqa 的设计构思(第2部分:共识协议)

https://mp.weixin.qq.com/s/pKJqDRf31LOW88jpz0xVZQ

Zilliqa 的设计构思(第3部分:使共识更有效)

https://mp.weixin.qq.com/s/O6W3q14ho2CULzsp7hJpbw

Zilliqa生态构建资助金首批参与项目介绍

https://mp.weixin.qq.com/s/Wl7MMKihDaQjUOCRZI-yEQ

Zilliqa

下一代高吞吐量区块链平台