2018年11月12日
Yiling Ding 发布于Zilliqa博客,Rita译
上周,我们在推特和官方电报群和大家分享了项目和主网上线的最新进展。最终,我们将主网上线日期确定在2019年1月底,距离Zilliqa代币发行刚好一年整。
主网上线详细路线图
Zilliqa主网将是一个大规模的分布式网络,这意味着它非常复杂,其工程难度要远超比特币和以太坊等基于中本聪协议的项目。作为科学家和工程师,我们一直希望为主网实现尽可能多的新功能,并尽全力进行彻底的测试和校准。经过深思熟虑,我们将主网上线日期定在这个时间,并认为这一时间上线不会牺牲主网的去中心化特性、稳定性和安全性。
Zilliqa主网发布的首要考虑因素是安全性。正如几周前我们在官方电报群社区中所讨论的那样,我们必须要确保在主网启动初始阶段、哈希算力相对较低期间,网络免受攻击。这就是为什么Zilliqa在主网上线后,首先会渡过一个引导阶段(bootstrap phase),来确保网络的安全性。在引导期,矿工挖矿可正常获得奖励,但网络并不处理交易。当我们认为哈希算力已足够、生产的区块数满足一定值之后,孵化引导期将自动结束。
挖矿将是Zilliqa网络的重要组成方面。我们将在11月底分享有关Zilliqa挖矿的更多细节和分步骤说明,届时我们还将发布3.0版测试网,让大家体验与主网上线后基本一致的公开挖矿。
对于那些熟知我们测试网以及新加坡美食的朋友们,您能猜出3.0版Zilliqa测试网的代号吗?
如您有更多关于主网及其他方面的问题,欢迎参加于11月15日下午3点在我们的官方电报群举办的自由问答AMA交流活动,与心书、Amrit和Yiling一起互动!活动详情和问题提交可查阅网址: https://www.reddit.com/r/zilliqa/comments/9swvn6/ask_us_anything_zilliqa_ama_15th_nov_2018/
同往常一样,如您想要了解Zilliqa的更多信息或与我们讨论项目技术,请随时通过以下官方渠道与我们联系:
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(开发相关专用频道,包括“生态构建资助计划”)
已举办的活动
一方面,我们的技术团队在积极推进主网上线;另一方面,团队其他成员在亚洲各地出席活动,努力推动区块链教育并吸引更多开发人员一起发展Zilliqa生态体系。我们很高兴地与大家分享,新加坡交易所CoinHako已经支持ZIL/MYR、ZIL/IDR以及最重要的我们当地的ZIL/SGD交易对。
En Hui和Yiling出席了在香港举办的数字媒体亚洲活动,帮助推动区域链技术教育的普及,还向诸位优秀的记者和媒体机构介绍了区块链生态系统的整体情况。
我们的CMO Yiling在香港数字媒体亚洲演讲
我们团队的Edison(区块链应用程序开发人员)和Sophia(中国商业开发)赴北京在清华大学介绍了公链扩容与区块链在游戏中的应用。
与穿着Zilliqa帽衫的清华学生和区块链游戏开发者合影
我们还于11月10日在Gitter频道上(地址https://gitter.im/Zilliqa/ecogrant)与多位“Zilliqa生态资助金”获奖者共同举办了以开发钱包为主题的对话会活动。这次对话富有成效,激发了多个合作创意,其中包括Zilliqa增强提案(Zilliqa Enhancement Proposal,缩写SEP)和在Github组织OpenZesame(https://github.com/OpenZesame)下整合Zilliqa社区开发项目等。我们将继续举办这个对话活动,频率是两周一次,从而让我们的社区开发者更好地参与Zilliqa生态系统建设。敬请大家期待未来更多精彩的对话活动!
11月对我们来说将是一个相对安静的月份,因为我们把重点放在了关键技术和主网合作伙伴关系的开发上,目前已确认的活动有:
1、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
2、11月25日17:00,Gitter频道线上
第二次“Zilliqa生态资助金”获奖者对话会
网址:Https://gitter.im/Zilliqa/ecogrant
技术进展
从前文我们分享的路线图中可以看出,技术团队当前主要专注于测试,包括单元测试编码和运行系统级测试。同时,我们还对现有的三个功能进行了增强,并实现了其中一个新功能的首个版本。
增强视图更改机制
如果DS委员会层面的一轮共识由于DS领导者没有响应而停止了相当长时间,则DS备份节点会触发视图更改以恢复停滞的共识。此前版本中,视图更改算法始终选择第一个相邻节点作为新的候选DS领导者,但实际上这一算法意味着此行为是可预测的,从而有被恶意节点利用的潜在威胁。
为了解决这个问题,我们现在将候选DS领导者这一过程进行随机化。此外,由于视图更改机制仅在一段时间后才被激活,因此存在DS备份落后于其他节点的可能性,所以在进入视图变化之前需要添加预检查。在预检查期间,DS备份节点向查找节点查询最新的可用DS块和终块。如果查询到的块信息表明DS备份确实落后于网络的其余部分,则DS备份会跳过执行视图更改,而是开始重新加入过程。最后,由于视图变化可能发生在各种复杂的场景中,我们对单元测试用例进行了改进,以感应多种共识失速情况。
目录服务微块(DS MB)和终块(FB)共识合并
在之前版本中,DS委员会从每个分片收到提交的微块后,会发生两轮共识协议。第一轮,委员会就其自己的微块(即DS MB)达成共识,然后在掌握所有微块的基础上,就终块达成第二轮共识。我们认为这个两轮流程最终可以合并为一个,所以用了大概两周时间来实现这一想法。合并的明显好处是减少了每个交易周期的总执行时间,此外,在整个过程中我们也减少了终块的存储需求。
增强升级机制
此前,我们升级机制的工作原理是,让节点在目标DS周期中自动下载、解压并安装我们最新发布的GitHub软件包。从初始版本开始,我们在发布包生成中慢慢添加了许多文件,包括配置常量和DS节点的初始列表。此外,我们的升级机制需要一个单独的daemon程序在升级后重新启动节点,截至目前,该程序专门针对我们基于Kubernetes的内部测试环境而设计。对于实际部署,我们现在已经创建了daemon程序的脚本版本,以及一个示例脚本来指示用户执行它。
节点恢复
节点恢复是我们在过去几周内完成的重要功能之一。如果节点因任何原因(如完成升级)而终止然后重新启动,它将读取存储在机器数据库中的持久数据(如DS委员会组成、分片结构、DS块、终块等数据)以恢复其最后的已知状态并开始与网络的其余部分重新同步。整个恢复过程仅依赖于节点自己的数据库,而不需查询其他节点,从而能够防止恶意节点反复重新自我启动而浪费网络流量。一旦所有数据被读出,节点就开始执行类似于前面针对视图改变机制描述的预检查。该节点向查找节点查询最新的可用DS块和终块信息,并在发现它落后于网络其余部分时开始重新加入过程。
Scilla解释器
工作继续围绕现金流分析原型展开。我们现在支持多态性和除了列表、maps在内的所有内置ADT。另外,虽然目前不支持库函数,但已支持内置函数。现金流量分析器的目的是,为每个字段确定该字段是否在合约中以某种方式用于表示货币。
例如,请注意下面Crowdfunding
合约中显示的goal
字段和backers
字段:
contract Crowdfunding (* Immutable parameters *) (owner : ByStr20, max_block : BNum, goal : Uint128)
(* Mutable fields *) field backers : Map ByStr20 Uint128 = Emp ByStr20 Uint128 field funded : Bool = False (* Backers can invoke it donate funds *)
transition Donate ()
end
(* Allows the owner to get funds out of the contract *) transition GetFunds ()
end
(* Allows backers to claim back money if the campaign is not successful *) transition ClaimBack ()
end
goal
(Uint128
)代表众筹合约的目标。该字段清楚地表示金额,并且分析能够正确识别它。backers字段是从backers的地址(ByStr20
)到他们贡献的金额(Uint128
)的映射。分析还应并可以做到将其识别为代表资金。
同时,我们也开始研究另一种资源分析器的工具。
请注意,执行智能合约需要向矿工支付预付gas费。根据正在执行的转换和转换的输入,执行它所消耗的gas费可以变化。Scilla的资源分析是静态分析(这意味着实际上没有运行转换,但只分析源代码),它提供了对特定转换可能消耗的gas费的估计,作为输入的参数。
举一个简化的例子,分析可以表明处理n个元素列表的成本是n * (cost of processing one element of the list)
。我们已经完成了分析器的设计并开始实施它。敬请关注下一次更新来了解更多信息!
开发工具
正如此前承诺的那样,我们最终发布了Zilliqa JavaScript库的v0.2.0以及文档。它们可以通过npm / yarn安装,如下所示:
- @ zilliqa-js/zilliqa
- @ zilliqa-js/account
- @ zilliqa-js/contract
- @ zilliqa-js/core
- @ zilliqa-js/crypto
- @ zilliqa-js/util
我们建议您使用next标签(如npm install @zilliqa-js/zilliqa@ next
),这样您将始终安装通常每天发布的最新版本(包含所有修复程序)。
请注意,此版本不适用于当前的公开测试网。希望测试新版本的开发人员应使用https://api-scilla.zilliqa.com和https://explorer-scilla.zilliqa.com。
与往常一样,请随时在我们的Gitter 和 Slack频道向我们反馈任何意见和错误报告!
Zilliqa新闻报道
TechRepublic上刊登的对Amrit和Ilya的采访,分别介绍了Zilliqa和智能合约语言Scilla:
https://www.techrepublic.com/article/how-scilla-could-speed-up-blockchain-transactions/
日文对Zilliqa的报道:
https://crypto.watch.impress.co.jp/docs/event/1150479.html
https://crypto.watch.impress.co.jp/docs/news/1152633.html
有关Zilliqa的3.0版公测网和主网消息的报道:https://www.cryptorecorder.com/2018/11/08/zilliqa-zil-testnet-end-of-november-upbit-btc-market-listing-in-24-hours-its-a-good-day-for-zil-investors/