Zilliqa进度更新第16期

7 个月前 · 原创文章

2018年9月3日

Yiling Ding 发布于Zilliqa博客,Rita译

为了解决当今区块链行业最具挑战性和最令人兴奋的研究问题之一,上周我们发布了智能合约分片的技术方案。截至目前,我们已在白皮书和其他材料中分别详述了分片(在比特币类的支付模式中)和智能合约的解决方案。这篇新发布的博文将分片和智能合约进行了有机结合,介绍了如何在分片构架上高效运行智能合约。

此前,Zilliqa的代码库还仅能处理支付类的交易,对非分片架构上的智能合约的支持是在另外一个独立的测试网上进行的。过去几周,我们已经实现了处理分片架构上智能合约的所有核心功能,并将在全面测试后将这些功能逐步应用到我们的核心构架中。

这篇博客文章的介绍有些偏技术,但我们强烈建议对Zilliqa感兴趣的朋友阅读此文。

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

社区动态

面向Zilliqa生态系统的分布式应用

继上次发布“Zilliqa生态构建资助金”首批参与项目名单后,我们又在推特上向大家介绍了一些“Zilliqa生态构建资助金”的获奖者。

例如KZen Networks正在开发的基于应用安全多方计算的钱包,该钱包将密钥生成和交易签名分发给多方,且无需更改Zilliqa协议。

以及Appbery正在开发的Chrome扩展程序。Appbery是位于澳大利亚的区块链爱好者和开发者团队,他们的兴趣是编程(Dapp游戏,插件和SDK开发)和游戏(魔兽世界和FIFA)。

我们诚挚邀请优秀的开发人员和团队来申请我们的“Zilliqa生态构建资助金”,我们还在积极寻找游戏以及去中心化交易所等金融应用程序的开发团队。如果您有想法或希望探索如何在Zilliqa上实现您的想法,请随时在Gitter上与我们联系:https://gitter.im/Zilliqa/。

即将举办的活动

9月将是一个忙碌充实的月份,我们将在全球多地出席多场活动。

1、罗马尼亚,克鲁日

时间:2018年9月4日,10:00–18:00

活动:智能合约语言Scilla的全天研讨会 — —学习如何用Scilla编程

https://medium.com/cryptoland-tech/workshop-2-diving-into-scilla-a-safe-by-design-smart-contract-language-5cb23f71222b

2、德国,柏林

时间:2018年9月6日

活动:Dezentral

https://www.dezentral.io/

3、中国,北京

时间:2018年9月5日

活动:POD连接公链生态与杰出开发者大会

https://www.odaily.com/post/5133227

4、中国,北京

时间:2018年9月7日至9日

活动:全球区块链技术案例峰会

http://bccc.msup.com.cn/

5、越南,河内

时间:2018年9月15日至16日

活动:加密货币和数字资产对话

https://www.vietnamcryptodialogue.com/

6、新加坡

日期:2018年9月19日至20日

活动:2018新加坡共识大会

https://www.coindesk.com/events/consensus-singapore-2018/

7、新加坡

日期:2018年9月19日,19:00–21:00

活动:Zilliqax DMM.com x LayerX:区块链应用的工具、用例和新措施


Zilliqa团队新成员

Han Wen Chua作为开发者关系主管加入团队。

Han Wen是一位理想主义的自由主义者,他希望帮助Zilliqa建立一个活跃的开发者社区。他是挖矿社区的早期活跃成员。此前曾在航空航天工业中设计过无人机和客机到货机的解决方案。他的其他兴趣包括3D打印、地缘政治和专业游戏。

技术进展

过去两周,我们的技术团队一直致力于推进开发事件日志和交易收据的部署、有效的交易生成器、PoW的难度调整以及Scilla多个新功能的添加。

区块链核心功能

事件和日志交易收据。客户端可以通过发送具有适当参数的交易来调用智能合约中的转换。一旦交易到达网络,运行合约的节点将在其本地数据库和区块链中提交更新的可变状态。但是,由于客户端位于区块链网络的外部,且不自我运行合约,因此无法直接获取转换返回的值。事件的目的是解决这个问题。智能合约可以以日志的形式发出记录在每个节点的本地存储中的事件。通过读取日志,客户端可以听取事件并获取合约返回的值。

我们为系统设计了事件和交易收据,并实现了在区块链后端支持这两个新功能的逻辑。现在,它可以与Scilla解释器的输出连接,并生成到RPC服务器的JSON消息。

有效的交易生成器。在交易生成方面,我们改变了生成测试交易并将其分配到查找节点的方式。查找节点现在能够加载预先生成的测试交易并以受控速率将它们分配到不同的分片。为了支持上述更改,我们利用Kubernetes中的持久分卷,允许从多个pod读取和写入,并在查找节点和交易生成器之间共享分卷。

在压力测试场景中,交易生成器和查找节点之间的接口是包含生成的序列化有效交易的交易文件。查找节点将持续监视交易文件的目录,并从任何未读文件中获取交易。交易从创世账户发送到随机有效的钱包地址。为了最大化使用交易生成器的好处,如果交易来自相同的创建帐户,该交易将根据其随机数进行排序,以便生成的交易在分派到非查找节点后不太可能被交易排序机制忽略。查找节点使用每个创建帐户计数器来跟踪每个创世帐户的最后一个调度交易的随机数值。启动查找节点时可以设置这些值。它还有一组参数来控制每个交易周期的发送速率。

PoW难度调整。我们设计了PoW难度调整的首个版本。当我们引导系统时,每个节点都从常量文件中读取难度参数。之后,每个节点将在每个DS周期的首个交易周期开始时更新难度级别。在每个DS周期开始时,每个DS节点将接收PoW的提交并记录它们。当DS领导者提出DS块时,它将调用CalcNewDifficulty来生成难度,以替换DS块中的字段并将其通告给最终块共识协议中的每个DS备份节点。DS生成具有新难度的DS块后,DS会将其广播到分片。每个分片节点将接受新的难度并使用它来计算下一个DS周期的PoW。

以下列出了核心协议方面其他增强功能的摘要:

• 持久存储恢复机制的维护。

• 重构合约帐户状态增量的序列化和反序列化,以减少消息大小并节省带宽消耗。

• 在分片备份节点上重新设计了交易指令验证程序,以保证分片领导者组成的指令的正确性。

Scilla解释器

我们一直在持续进行scilla-checker多阶段的重构工作,该检查器能够对Scilla智能合约进行解析和类型检查。整体结构现已到位,剩下的工作是对内置数据类型和处理库的缓存的递归原则的解析和类型检查的分离。请注意,此重构的目标是确保scilla-checker每个中间阶段彼此独立工作,这将允许用户定义的检查作为单独的阶段实现,并在任何用户想要的位置插入。

除了代码重构,我们还一直在努力为Scilla添加新功能。一是我们在语言级别添加了对事件的支持。 Scilla中的事件与消息类似,可以使用event创建。在执行转换期间创建的事件通过output.json传递给解释器调用程序。

二是添加了非常重要且有用的能够在合约中签名和验证消息的功能。Scilla支持的签名方案是Schnorr,即在Zilliqa核心协议中签署交易和共识消息的原生方案。该实现将我们的C ++ Schnorr部署与我们的OCaml Scilla解释器连接起来。

有了这个,我们现在提供Scilla内置插件,用于生成密钥对、签名消息和验证签名。现在支持Schnorr可以实现多个有趣的合约,例如多重签名钱包合约、实施状态通道的合约等。

为了支持任意大小的签名消息,我们现在添加了对新数据类型ByStrX的支持,后者表示X字节的十六进制字符串。ByStrX现在概括了已有的Address和Hash数据类型。例如,Hash现在是ByStr32,而Address是ByStr20。对Address和Hash数据类型的支持已从语言中删除。

三是发布了一个Scilla合约,该合约实现了ERC-721不可替代token的功能。不可替代token在性质上是独特的,并且可以彼此区分。因此,它们可用于表示区块链上的独特数字资产,如密码猫等可收集的物品。不可替代token合约有过渡以协助token的生成、转移和批准功能。欢迎您申请试用不可替代token的合约,并告诉我们您的反馈意见。

最后,我们还在Scilla中添加了对整数除法和模运算的支持。

Scilla开发工具

在对Scilla代码库进行核心改进的同时,我们也在积极开发Scilla的工具。有关Kaya RPC服务器和Scilla集成开发环境改进的更多信息如下:

Kaya RPC服务器

我们在Kaya RPC服务器中有模块化组件。模块化是必要的,因为它允许我们单独测试不同的组件并支持未来的增强。通过模块化,我们还为Kaya RPC引入了更多自动化测试用例。根据Jest的测试覆盖率,Kaya RPC中53.65%的线路现在都在自动化测试中。在将测试覆盖率作为分支合并的标准之前,我们的目标是将覆盖率提高到大约80%。

Scilla集成开发环境IDE

我们正在努力改进Scilla集成开发环境 IDE。改进后的IDE正在从头开发,以改善开发人员的体验并吸引更多人的关注。

这个新的IDE正在重建,以便有兴趣的开发人员可以在网上轻松地尝试Scilla。新IDE将具有几项重要的质量改进:

• 由IndexedDB支持的伪文件系统,允许开发人员从之前访问应用程序的位置开始。

• 自动化状态管理,允许开发人员调用转换,就好像他们在实际的区块链上这样做,但具有即时反馈。

• 可以使用类型检查,错误消息更具描述性。

• 状态树查看器,允许在本机JS类型中浏览合约的状态,并可选择查看原始Scilla编码类型。

欢迎加入Zilliqa

我们正在积极招聘高素质人才,共同挖掘Zilliqa的最大潜力。我们招聘的人员有:具有深厚C ++经验的程序员、编译器工程师和商业开发。如果您可胜任或有推荐,请随时联系careers@zilliqa.com!

Zilliqa新闻报道

企业家杂志谈论了区块链的扩展性问题,并提到Zilliqa是一种可能的解决方案:

https://www.entrepreneur.com/article/319014

心书在CCN播客上谈论区块链的可扩展性和Zilliqa:

Arthur Falls曾经的采访在上周刚刚发布:

– END 

我们很高兴地邀请您加入我们的社区,与技术专家、金融业者和加密数字货币爱好者们一同探讨!您可以通过以下方式关注我们的进展:

微博:https://weibo.com/zilliqa

微信公众号:ZilliqaCN

Zilliqa中文社区联盟:http://www.zilliqa.com.cn

关注我们的推特:https://twitter.com/Zilliqa

通过邮箱订阅我们的新闻:http://zilliqa.us16.list-manage.com/subscribe?u=52acaef93d75cf69065e355ff&id=11f0b30bdd

关注我们的博客:https://blog.zilliqa.com/

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

Slack:https://invite.zilliqa.com/

Gitter:https://gitter.im/Zilliqa/

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

Zilliqa

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