Zilliqa进度更新第20期

12 个月前 · 原创文章

2018年10月29日

Yiling Ding 发布于Zilliqa博客,Rita译

随着Zilliqa主网上线的日子 — — 1月31日,日益临近,我们的技术团队也在持续取得积极进展,主要包括:推进平台测试,完成区块链核心功能的开发;在智能合约语言Scilla方面,我们一直在完善开发工具,并积极致力于一项名为“现金流分析”的新安全功能,该功能可以检测合约中未计入的资金,从而检测任何潜在的资金泄漏。我们将继续努力,使Scilla成为智能合约开发的安全标准。

在业务开发方面,本月我们积极参加世界各地的活动,与开发人员密切互动,并得到了大量有益的反馈。上周,我们还在日本东京与DMM.com、LayerX和Infoteria的开发人员一起举办了Scilla研讨会。

随着主网上线越来越近,我们很多社区成员都表示希望可以更多地了解我们的技术进展和市场计划。因此,我们将于11月15日下午3点(UTG时间上午7点)在Zilliqa官方电报群(地址:https://t.me/zilliqachat)举行AMA自由问答活动,欢迎大家届时向我们提问。我们也将在社交媒体渠道上分享更多细节。

同往常一样,如您想要了解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(开发相关专用频道,包括“生态构建资助计划”)

已举办的活动

这个十月充实精彩,我们在世界多地举办和参加了多场见面会和研讨会。这两周,我们还先后在巴塞罗那、东京、法兰克福和雅加达参加及举办了活动。尤其值得一提的是,我们在日本东京与来自DMM.com、LayerX和Infoteria的开发人员共同举办了Scilla研讨会。

我们直接与LayerX和DMM.com的开发人员共同讨论使用Scilla构建智能合约应用程序的结构和好处

商业开发主管Ong En Hui在东京Blockchain Jam活动上致辞

Max Kantelia在巴塞罗那的加密经济世界2018大会上发表演讲

Juzar Motiwalla在2018年雅加达Tech in Asia活动中发言

11月对我们来说将是一个相对安静的月份,因为我们将从准备主网上线的角度出发,更加关注技术开发和合作伙伴关系。

1、 中国,香港

时间:11月7–9日

活动:数字媒体亚洲2018

https://events.wan-ifra.org/events/digital-media-asia-2018

2、 中国,北京

时间:11月9日

活动:清华大学见面会 — — 公链扩容与区块链在游戏中的应用

http://www.huodongxing.com/event/1463975733300

3、 新加坡

时间:11月12–13日

活动:区块链和网络安全研讨会

http://sgcsc.sg/Blockchain-and-Cybersecurity-Workshop-2018/

11月13日,我们还将举行Zilliqa安全智能合约的研讨会,欢迎大家积极参加,报名地址:https://www.eventbrite.sg/e/zilliqa-workshop-on-secure-smart-contracts-tickets-51866230291

技术进展

核心开发团队一方面在不断加快测试和增强性能,另一方面也在重点推进区块链运行所必需的关键功能的开发完成。此次技术更新我们将分享这些新功能中的三个以及一个很值得注意的增强功能:

PoW挖矿的GPU选择

应社区开发者的要求,我们持续增强挖矿方面的功能。例如,许多社区开发者表示,希望挖矿可以支持GPU选择,从而允许将一个或多个GPU单元一起使用来进行PoW挖矿。举个例子,一个用户具有6个可用的GPU,现在他就可以任意选择一个GPU或几个的组合来配置Zilliqa的一个节点,同时也可以启动多个Zilliqa节点。

燃料费奖励

公有链的重要特征之一是向矿工分配燃料费。在我们当前的网络版本中,燃料费在每个交易周期中通过处理交易生成,并被累积到总的挖矿交易池中。之后,在下一个交易周期中(也就是我们所说的真空周期Vacuous epoch,因为在这个周期中不处理交易)、下一轮PoW提交之前,这些奖励将会分发给各个矿工节点。此功能需要在交易微块中添加一个表示分片总燃料费的新字段。之后,DS委员会能够将所有微块的燃料费求和,并在挖矿交易池启动奖励时执行奖励分配。出于安全原因,交易终块中也添加了类似的字段。这样,每个周期的燃料费都将成为终块共识的一部分。

PoW排序验证

DS委员会领导者宣布的DS区块共识消息包含下一个DS周期的建议分片结构。如果备份DS节点未对此结构进行彻底审查,则恶意节点可能会伪装成领导者并宣布无效的分片结构。由于所有的DS节点必须从其验证的PoW提交中识别所有分片节点,因此使用这些提交作为生成和验证分片结构的基础很有必要。现在,结构生成将严格遵循基于最终的交易块和每个节点的PoW结果连接的哈希值的排序。

Fallback机制

我们引入了一种fallback机制来提高网络的稳健性,并确保网络在出现无法预料的停顿后仍能取得进展。当整个系统停顿很长一段时间后,系统中的第一个分片将承担DS委员会的职责来恢复网络。如果系统仍未取得进展,则第二个分片承担这个职责。这种机制由候选fallback分片实现,该分片对新的块类型 (为此机制设计的fallback块)执行共识。共识一旦达成,该块就被广播到网络的其余部分,此后开始新一轮的工作量证明PoW提交。

Scilla解释器

现金流分析:正是因为Scilla的设计宗旨之一就是安全性,因此我们一直在致力于开发一种新的安全功能,来可以检测合约中未计入的资金,从而达到检测资金泄漏的目的。更具体地说就是,我们目前正在部署一个Scilla合约的静态分析器,用于跟踪合约中的资金流动情况,我们称之为现金流分析(cashflow analysis)。

现金流分析的基本思路是,一些合约使用‘field’(一个可变状态变量)来跟踪合约的资金用途。例如,kickstarter众筹合约可能想要跟踪每个贡献者投了多少钱,以便在不满足目标时可以还钱。如果合约跟踪的钱与合约的余额不符(由区块链跟踪),就意味着中间出问题了。用现金流分析的目的就是,一旦这种差异被检查出来,就可以向合约开发人员发出警告。

并非所有合约都以这种方式跟踪资金,因此如果发现合约与分析结果不符,这只会导致发出警告。实际上,一些合约可能想要跟踪比当前余额更多的资金。例如,多签名钱包合约将跟踪所有尚未签署的交易,无论合约中是否有足够的钱来支付全额。

现金流分析的第一个原型将在未来几天内开发完成。但这个原型还无法处理库函数,并且对“ADT”的支持有限。之后,我们将在此原型上进一步完善开发,从而支持完整语言。为了支持现金流分析,我们必须首先实现能够报告警告的底层基础架构。

性能测试:过去几周,我们一直在进行大量实验,来了解解释器的性能并检测任何有可能的性能瓶颈。我们很高兴与大家分享,实验现已结束。在这些实验的最后一步,我们进行了一些细粒度的测试,以确定算术和哈希操作的燃料成本。我们还对Scilla库进行了性能测试。

新的映射运算符:我们添加了新的in-place映射运算符,从而允许以更简单的方式修改和查询映射。请注意,这里的in-place更新仅适用于‘Map’字段。此外,`map`s的纯表达处理仍可通过`builtin`映射运算符获得。换句话说,所有先前的map语义仍然存在,包括`put`,`get`,`remove`和`contains`。支持的新的运算符如下:

l `m [k1] [k2] […]:= v`:in-place更新。如果不存在中间键,那么它们将被创建。

l `delete m [k1] [k2] […]`:in-place删除密钥。如果中间密钥不存在,则不执行任何操作。

l `v < — m [k1] [k2] […]`:in-place取指。用键索引后返回“some valve”,如果所有键都不存在,则返回“None”。

l `b < — exists m [k1] [k2] […]`:in-place存在检查。检查是否所有键都映射了值。

开发工具

为了支持主网上线,我们一方面为现在稳定的JS客户端添加了更多的功能,另一方面还对区块链和客户端进行了实验并做了相当大的改动。以下列出了一些更改:

-用于交易确认轮询的指数退让,防止在带宽受限的客户端环境中不必要地使用网络,从而浪费资源。

-将手动编码、解码功能转换为Protobuf等效功能,因为Zilliqa核心正在转移至gRPC、Protobuf作为主要线路格式。

-实现BIP-0032、BIP-0039和BIP-0044,以便客户端开发人员可以用`zilliqa-js`来获取所有与加密相关的函数,而不用自己编写。请注意,`coin_type`仍未确定,因此现在使用占位符值。

-基本智能合约日志过滤的初始内部规范,可能通过额外的RPC API、`GetLogs`(暂定)。

-`HTTPProvider`的默认编码、解码中间件。

-以及其他大量测试

我们的目标是本周发布`zilliqa-js`的`0.2.0`版本,同时继续将每日更新推到’@ zilliqa / zilliqa-js — * @ next`中,以便社区开发人员可以随时获得最新的前沿消息。未来,我们在NPM上发布时,还将在Gitter上做出进一步的公告。

最后一项要点是,对于Emacs的粉丝,我们为Emacs添加了Scilla flycheck模式。这将Emacs与`scilla-checker`集成在一起,从而实现了错误突出显示。请尽情享受用Scilla编码吧!

Zilliqa新闻报道

一篇技术文章分析了Zilliqa使用的分片技术和Scilla智能合约语言以及与以太坊的比较:

https://medium.com/on-the-origin-of-smart-contract-platforms/on-the-origin-of-zilliqa-1b1afc344aa7

一篇强调了Zilliqa和Scilla在智能合约中进行形式化验证的文章:

https://blockonomi.com/formal-verification-smart-contracts/

多篇关于Zilliqa的自发的报道:

https://cryptorecorder.com/2018/10/26/zilliqa-zil-the-singapore-connection-is-a-strategic-edge-for-zilliqa/

https://www.cryptorecorder.com/2018/10/22/how-zilliqa-zil-might-be-a-champion-of-scalability-solutions/

https://ethereumworldnews.com/all-eyes-on-zilliqa-zil-as-its-mainnet-launch-approaches/

https://cryptoblockwire.com/interesting-facts-about-zilliqa-zil/

如果您支持和信任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

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