2018年8月6日
贾瑶琪发布于Zilliqa博客,Rita译
Zilliqa团队的目标是构建一个安全、可扩展、去中心化的公有区块链平台。过去几周,我们对技术白皮书中的Zilliqa的协议进行一些改进,如我们将两种PoW合并为一种(下文将详细介绍),用状态变化共享取代了原始交易数据共享等。
当前,我们也已完成对智能合约分片的重要设计,这是Zilliqa白皮书中未涉及的全新内容,可使分片技术性能更强、用户体验更佳,将在 Zilliqa 首版产品中亮相。智能合约的分片将确保涉及智能合约的交易在各分片和DS委员会间并行处理,且所涉协议对运行的 Scilla 智能合约类型没有任何限制。我们将于近期发布博客文章介绍这一架构。
正是为了加入新技术增强网络性能,我们团队在过去几周就是否更改路线图进行了深入并且广泛的讨论。最终我们得出结论,项目需要更多时间来保证代码被核心团队、社区和专业审计公司全面核校。此外,我们还将利用新增的时间来:
- 进行彻底的安全审核
- 准备和执行token映射
- 整合钱包
- 开发工具链
- 继续开发生态,带来更多的分布式应用
我们将尽快向社区发布主网上线新的路线图。现阶段,我们设定的目标是今年底或者明年1月。我们对推迟主网上线深表歉意,但我们坚信这一决定对项目的长远未来是最有利的,也希望得到大家的支持和理解。
在商业开发和技术方面,我们继续稳步前进。我们已宣布与日本知名的企业应用集成软件开发公司Infoteria建立合作伙伴关系,该公司将为Zilliqa进入日本企业市场提供平台。
在智能合约方面,我们已开源安全智能合约语言Scilla的代码,地址为:https://github.com/Zilliqa/scilla。我们真诚邀请社区成员尝试Scilla,并帮助我们进一步改进。
像往常一样,如您想要了解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上实现您的想法,请在Gitter上与我们联系:https://gitter.im/Zilliqa/。
与Infoteria合作伙伴关系
8月2日,我们宣布与日本领先的企业软件公司Infoteria建立合作关系,后者为日本东京股票交易所上市公司(交易代码:3853)。通过双方的合作,Zilliqa可以更好地发挥下一代高吞吐量区块链平台的优势,为企业使用分布式应用dAPP提供支持。
Infoteria和Zilliqa都将在ASTERIA平台上推广Zilliqa,该平台是Infoteria公司的中间件(middleware)产品,目前在日本拥有超过6500家企业客户和该领域41%的市场份额。我们还将在今年晚些时候推出一系列计划,支持基于Zilliqa区块链和ASTERIA平台的企业分布式应用的开发。Zilliqa还将为ASTERIA开发一个特殊的连接适配器,以便企业轻松使用Zilliqa平台,如下所示。
社区动态
已举办的活动
新加坡教育部长王乙康到访Zilliqa办公室。
不久前,我们面向中文社区举行了中文命名比赛,获奖名称为“晶砺”。我们在公司接待了比赛的获胜者。
即将举办的活动
Zilliqa将于9月19日至20日参加新加坡共识大会Consensus Singapore(网址https://www.coindesk.com/events/consensus-singapore-2018/),欢迎大家届时到我们的展台参观。
技术进展
过去两周,我们的技术团队改进了系统的多项功能,如合并PoW1和PoW2、支持GPU挖矿、提高稳定性、重构当前协议从而支持我们的分片友好型智能合约设计等。
在之前的版本中,节点在加入网络时有两种不同类型的PoW,分别对应加入DS委员会和普通分片。为了降低系统的复杂性并统一接口,我们将两种PoW合并为一种。但所有候选节点在当选为分片节点时,仍存在最小难度。与此同时,在PoW的提交中,即使随机性的集是相同的,但包含0的位数越多,就越有可能当选为DS节点。
当前,每个节点都可将其PoW的解提交给DS分片。DS委员会的作用是向所有节点提出DS块和分片结构。新的DS领导者在加入DS委员会时,时间最久的DS节点将退出并加入普通分片。
在挖矿方面,我们此前的测试网仅支持CPU挖矿,但现在我们用OpenCL开发了一个库,支持GPU进行基于Ethash的PoW挖矿。因此有了这个新功能,矿工们可以用自己的GPU来挖测试ZIL币。在当前主要基于Zilliqa的PoW类的版本中,我们定制并改进了Ethminer的挖矿算法,并使用包装函数包装了Ethminer的挖矿部分。我们现在支持OpenCL允许的GPU,未来也将很快支持CUDA驱动的GPU。
在稳定性方面,我们每次向Github提交新的旨在提高网络稳定性的代码后,都会在第一时间刷新测试网的版本,从而确保这些更改在大规模测试中能运行良好。最近两周,我们还使用了AddressSanitizer和ThreadSanitizer等运行时错误检测工具,检测出了几个内存和并发问题,并修复了潜在的安全漏洞。接下来几周,我们将重新启用恢复功能,以便测试币、用户创建的交易、智能合约等数据在测试网重启时仍然可用。
当前,我们正在一边努力提高代码质量,一边有序推进构建和测试设施的改进。经审查CI和CD的工作流,我们删除了耗时的部分并清除了Travis上的缓存问题,从而使每个自动构建比以前更快捷。通过这些处理,我们的开发人员可以在构建和测试代码后更快地进行部署,并减少Travis的积压。
为了全面支持我们的分片友好型智能合约设计,我们新添加了一系列相关功能:
- 一是为了将收到的交易根据gas费和nonce排序,我们开发了一种新算法。
- 二是提出了将交易和状态增量转发到微块共识完成的那一刻,从而缩短在每个节点转发消息所需的等待时间。
- 三是当分片节点将状态增量发送到DS委员会时,我们将其附加到了微块消息中,之后DS节点聚合所有状态增量并在每个周期中生成最终状态增量。DS节点将最终增量附加到最终块消息中,该消息将被广播到所有更新了其AccountStore的分片节点中。
为了支持我们新的分片友好型智能合约设计,未来我们还将添加更多新功能。之后我们还将就此推出一篇专题博文,向大家详细介绍这些新的设计。以下列出了其他增强功能的摘要:
- 修复了微块的DS区块号。
- 增加了丢失交易检索的功能。
- 修复了日志消息中不可打印的ascii字符(“区块类型”和“难度”)。
- 处理多种视图更改的案例。
- 改进了视图更改的代码文档。
Kaya
最近,我们发布了首版基于node.js
的RPC服务器,用于在Zilliqa上测试和开发Scilla合约,我们给它起名叫做Kaya(译者注:该词原意是新加坡的一道知名美食,被称为咖椰酱)。对于熟悉Solidity的开发人员,Kaya可被理解为类似的TestRPC或Ganache。
有了Kaya,开发分布式应用程序可以更快、更轻松,因为它并不通过区块链集成开发环境等待链上的块确认,而是为开发人员提供近乎即时的响应,大大加快了开发过程。
此外,开发人员可以选择启用“调试模式(debug mode)”。该模式提供的详细程度更大,其提供的日志可使开发人员从非Scilla相关的错误(如格式错误的JSON请求、错误的nonce、gas不足、地址无效等)调试其智能合约代码。
当Kaya在本地运行时,开发人员可以将他们的代码开发过程保密,并在一切就绪之后再向公众展示。
Kaya还支持Zilliqa 的Javascript 库中指定的功能列表(地址:https://github.com/Zilliqa/Zilliqa-JavaScript-Library)。它不会取代任何现有的工具,而是补充了我们的工具集,使开发人员能够在我们的平台上创建应用程序。
您可以通过克隆https://github.com/Zilliqa/kaya来尝试我们的Kaya。
Scilla解释器
我们已经完成了针对Scilla合约的首版typechecker。您现在可以尝试使用二进制 scilla-checker
针对您的Scilla合约进行类型检查。该文件可以在Scilla项目存储库的 bin
文件夹中找到。我们很快就会将typechecker添加到IDE中。
我们还完成了对非穷举模式匹配(non-exhaustive pattern matches)的检查,它在运行时确保模式匹配表达式不会失败(除非子表达式失败)。检查还包括了对无法访问的模式的检查。这些并不会导致合约失败,但它们确实显示出程序员犯了错误,因为模式不能成功匹配该匹配的值。执行检查的时间是在构建描述模式匹配的决策树时。该检查当前嵌入在typechecker中,但之后将移至单独的阶段。
下面列出了对Scilla解释器做的其他一些小的改动:
1、在Scilla中删除了十六进制值(地址和散列)的仅小写限制。由于十六进制值的内部表示是字符串,因此在对值进行哈希处理时,同时具有大写和小写可能会导致不同的结果。因此,更改的内容包括解析后(来自Scilla源或JSON)在内部表示中的规范化(此处指转换为小写)。
2、使合约中的库可选。此前,解析器强制要求库部分要在合约中进行声明(即使是空的)。
3、在JSON解析中改进了对ADT文字的验证(包括类型一致性)。这样,在JSON解析期间可捕获更多错误,我们已增加了测试来证明这一点。
4、添加了文字的结构类型验证。它以递归方式遍历Maps和ADT文字,并验证它们是否是正确形成的类型。
5、我们还将Scilla构建系统从 jbuilder
迁移到 dune
。
Zilliqa团队新成员
我们很高兴地向大家介绍Zilliqa团队的新成员:Ian Tan。Ian的学术经历颇为有趣,他有Bristol大学的法学学士学位(荣誉,一等)。在学习法律的同时,他也学习了软件和编程。
Ian现在是一名专业工程师,对开发工具和智能合约非常感兴趣。正是因为他有法律的背景,所以他特别着迷于智能合约和区块链技术在贸易融资和国际商务领域的应用和发展。
欢迎加入Zilliqa!
我们正在积极招聘高素质人才,共同挖矿Zilliqa的最大潜力。我们招聘的人员有:具有深厚C ++经验的程序员、编译器工程师和商业开发。如果您可胜任或有推荐,请随时联系careers@zilliqa.com!
Zilliqa新闻报道
与Infoteria合作的新闻被日本媒体广泛报道:
https://www.infoteria.com/jp/news/press/2018/08/02_01.php
https://jp.cointelegraph.com/news/infoteria-partnered-with-zilliqa-to-inplament-dapps