Zilliqa 3.0版公测网正式上线 — — 代号“猫山王”
2018年11月30日
Xinshu Dong发布于Zilliqa博客,Rita译
今年6月底,我们推出了2.0版Zilliqa公测网,它具有文档、智能合约Scilla集成开发环境等重要功能,使开发人员能够在我们的平台上编写和测试他们的智能合约。
今天,我们很高兴地向大家宣布: 代号为“猫山王”的3.0版Zilliqa公测网现正式上线! 同之前测试网的代号一样,“猫山王”是我们十分喜欢的榴莲品种。“猫山王”测试网正式上线标志着我们在技术上又达到了新的里程碑 — —据我们所知,这是 世界上首个同时实现网络分片、交易分片以及智能合约分片的成熟测试网 。这个测试网还成功解决了我们安全审计公司发现的一些潜在的安全问题,添加了必要的安全检查机制和额外的执行机制,提高了系统的稳定性。
“猫山王”包含了许多与即将推出的主网相同的功能,其中包括在整个网络中全面实施安全智能合约语言Scilla、全面实现智能合约的分片https://blog.zilliqa.com/provisioning-sharding-for-smart-contracts-a-design-for-zilliqa-cd8d012ee735以及公开挖矿功能。可以说,这个版本的测试网能够让我们对即将推出的主网核心功能进行更大规模的公开测试,标志着我们向2019年1月31日发布主网又迈出了关键一步( 路线图可查阅 )。
和以前一样,测试网地址为https://explorer.zilliqa.com,测试钱包地址为https://wallet.zilliqa.com.
我们将于12月3日星期一发布挖矿的全部细节和有关文件,为我们的矿工提供及时的技术和错误修复支持。
对于社区的非榴莲爱好者,您也可以通过此链接(https://guide.michelin.com/sg/features/guide-to-durian-know-the-difference-between-mao-shan-wang-and-d24/news)来了解更多关于猫山王、红虾(1.0测试网代号)和D24(2.0测试网代号)之间的区别。
为什么"猫山王"至关重要
1. 标志着Zilliqa的技术里程碑,据我们所知世界上首个同时实现 网络分片 、 交易分片 以及智能合约分片https://blog.zilliqa.com/provisioning-sharding-for-smart-contracts-a-design-for-zilliqa-cd8d012ee735的成熟测试网。
2. 对所有矿工开放Zilliqa挖矿https://blog.zilliqa.com/with-zilliqa-do-more-with-your-gpus-miners-fbe29ac72ede。正是因为在Zilliqa网络中PoW仅用于建立矿工身份而不用于达成共识,因此GPU只需要在一定时间段内满负荷运行PoW一小段时间,意味着Zilliqa挖矿效率更高、更经济环保。
3. 全面实施智能合约语言Scilla,新加入的节点也可以执行智能合约。(在过去的测试网中,Scilla仅在20至40个节点的小组上实现,仅用于开发人员测试。)
4. 实施新的矿工奖励机制,即通过考虑矿工对共识协议的贡献来计算奖励,例如通过计算矿工在过去几个周期中签署的次数。
5. 新的升级协议使节点可以轻松、无缝地升级到最新版本。
"猫山王"挖矿
如上所述,我们将于周一(2018年12月3日)发布“猫山王”的详细挖矿指南。
在此公测网上挖矿的建议配置如下:
Ubuntu 16.04.5 64位操作系统
Intel i5处理器或更高版本
8GB DRR3内存或更高
可选:GPU显卡(例如3GB 显存的1 x GTX 1060)
NAT环境下支持UPnP的路由器(较新款的路由器应当都具有此功能)https://en.wikipedia.org/wiki/Universal_Plug_and_Play或公共IP地址
"猫山王"主要新功能
如果您一直关注我们的双周报,就会很熟悉“猫山王”的这些新功能。过去几个月,我们一直在努力实现这些功能,现在我们很高兴邀请矿工和开发人员公开测试这些功能。
核心协议:
支持智能合约分片
GPU挖掘
Coinbase奖励
燃料费奖励
燃料费计价
PoW难度调整
升级协议
Gossip协议
多输入、多输出(MIMO)DS委员会
事件和日志交易收据
合并的PoW:将两轮PoW合并为一轮
节点恢复机制
状态增量转发
迁移到Kubernetes
档案节点
Scilla语言:
类型检查器
静态分析器和检查器套件
用于添加新通道和分析的API
燃料费核算
改进了映射访问
支持活动
开发工具:
改进的集成开发环境Savant:https://savant-ide.zilliqa.com/
改进的JavaScript库:https://github.com/Zilliqa/Zilliqa-JavaScript-Library
RPC服务器Kaya:https://github.com/Zilliqa/kaya
更多技术细节
核心协议
PoW挖矿的GPU选择:“猫山王”支持GPU挖矿。矿工可以将一个或多个GPU单元用于一个节点。例如,如果一个矿工拥有6个可用的GPU,那么他可以使用这6个GPU的任意组合来配置一个Zilliqa节点,方式可以是启动多个Zilliqa节点也可以是每个节点分配给一个特定的GPU等。
Coinbase奖励:在这个测试网中,只要矿工参与了共识协议,无论是DS节点还是普通分片节点都可以获得测试币Zil。具体而言,节点在交易周期中对区块进行签名来参与共识协议的次数越多,就会获得越多的测试币。例如,一个节点如果既参与了微块又参与了终块的签名,那么它就可以贡献两个签名,因此可以获得两次奖励。
燃料费奖励:公链的一个重要特征是通过燃料费向矿工分配奖励。在本版本的测试网中,处理交易产生的燃料费将被累积到总的coinbase奖励中,并在下一轮PoW提交开始前分发。
燃料费计价:此前,我们的网络在处理交易时已把燃料费的消耗和限制计算在内,但实际的燃料费定价机制是在近期实现的。我们新编写的燃料费定价机制工作流程如下:首先,矿工们在提交工作量证明PoW时也同步提交愿接受的最低燃料费价格;之后,DS委员会就即将到来的DS周期内网络可接受的整体最低燃料费价格达成共识;最后,网络仅接受燃料费价格大于等于既定最低价的交易。
智能合约的分片:几个月前,我们发布了一篇博文(https://blog.zilliqa.com/provisioning-sharding-for-smart-contracts-a-design-for-zilliqa-cd8d012ee735),详细介绍了Zilliqa如何实现智能合约的分片。在Zilliqa中,DS委员会处理一些特定类型的智能合约交易。因此,DS委员会现在将进行额外的共识轮来验证这些交易。在DS委员会收到有关由分片验证的交易数据后,就会发生这种情况。
升级协议:我们认为,为了确保系统的安全性,网络必须具有升级更新和补丁升级的功能。我们已经实现了升级协议的首个版本。举个例子,如果有一方(比如https://latest-release.zilliqa.com)有我们源代码和多方签署的、SHA-256值二进制文件的最新版本,那么软件版本将被存储在名为VERSION的独立文件中,其中包含版本信息、预期DS周期和SHA-256值的信息。
节点恢复:节点恢复是我们在过去几周内完成的重要功能之一。如果节点因任何原因,如完成升级等掉线而重新启动,它将读取存储在机器数据库中的持久数据(如DS委员会成员、分片结构、DS块和终块等数据)以恢复其最后的已知状态并开始与网络的其余部分重新同步。
智能合约语言Scilla
类型检查器和静态分析器套件:Scilla现在包括一套静态分析器和检查器。这些检查器的目标是帮助开发人员编写的智能合约能够通过一些基本到高级安全检查。例如,Scilla附带的一个类型检查器就可以用于检查合约的类型安全,而类型安全程序可以消除运行时可能出现的一些问题。另一个检查器(也是套件的一部分)可以检查编好的代码是否模式匹配。例如对于一个合约,它可以检查模式匹配的所有使用是否涵盖所有可能的分支,因此是穷举式的。它还检查无法访问的模式。当输入导致未处理的分支时,非穷举模式匹配可能在运行时导致错误。这些检查器将由每个矿工在部署时运行,因此可以为在Zilliqa上的合约提供基本的但强大的安全保障。
更高级的静态分析器,如现金流分析器和燃料费分析器,也可供终端用户或IDE等客户使用。但分析器不是由矿工运行的。更多有关这些分析器的信息请参阅我们之前发布的双周报。
实际上,您也可以使用我们的API将任何其他静态分析器添加到套件中。欢迎您加入我们的Github(https://github.com/Zilliqa/scilla)来畅游Scilla代码库并添加您自己的功能。一些理想的检查器应当具有:1、未使用的变量;2、没有整数溢出;3、至少有一个转换接受付款。
燃料费计算:在之前版本的测试网中,处理智能合约往往需要恒定的燃料费成本,而不管计算性质如何。此版本的测试网带有适当的燃料费计算机制,其中每个表达、声明、读取、写入、存储等都具有明确的成本。此链接https://drive.google.com/file/d/1a2UdXfUFTpS0dYwwdVZMB8SgsqI7y2mR/view?usp=sharing列出了每个操作所消耗的燃料费。注意:这些燃气费标价可能发生变化。
支持事件:Scilla合约能够发出客户可以收听的事件。支持事件需要在语言中添加新构造,以及在区块链端添加对交易接收的支持。但是事件尚未编制索引,因此查询满足某些条件的事件(例如包含特定参数的所有事件)是不可行的。我们计划在下一版本中支持高效查询。
开发工具
为了促进智能合约的开发,我们还提供了一些之前已经公开过的开发项目,其中包括全新的Savant IDE:https://savant-ide.zilliqa.com/。我们推荐大家更多使用这个新的IDE,不再使用以前的JSON文件模拟区块链层的IDE,因为Savant对开发人员更加友好,终端用户不再需要手动编写JSON文件。IDE通过维护内存(在浏览器中)区块链来工作。如果你还没有尝试过,那就赶快来试一试吧!这个IDE还预装了一些可以直接玩的Scilla合约样本。我们还修改了JavaScript库,以改善客户端和网络之间的交互。此外,还提供了一个基于RPC的内部智能合约测试框架,名为Kaya:
https://github.com/Zilliqa/kaya。我们也真诚地邀请开发人员来试用这些工具,并及时向我们反馈您的意见!