在我们向您呈上本周动态之时,技术团队仍然像以往一样忙于提高区块链业务的效率。以下是我们核心技术和 Scilla 开发的概要。

核心技术更新

在我们最近的几个版本处理了查找节点操作之后,核心技术团队现在将注意力转向提高主网操作的效率和稳健性。这不仅涉及对核心 C++ 源代码,还关系到对托管的基础设施的几个主要更改,包括为基础设施维护的内部脚本和实用程序。

对于基础设施重构,我们已经将工作负载完全分离到独立的环境中,并为承载不同需求的部署创建了指导原则。我们已经回顾了访问控制策略,并使用适当的工具对它们进行了强制,从而朝着基础设施即代码的方向又迈进了一步。

对于正在进行的 Zilliqa 核心工作,在下一个主要版本中,用户还有望看到包括智能事务和微块处理、目录服务 (DS) 委员会信誉系统等方面的多项改进。此外,按照惯例,我们还将引入一些其他功能和安全性的改进。

Scilla 更新

我们的测试套件包含一个多重签名钱包,这是一年前编写的,当时 Scilla 缺少了一些重要功能,不过现在都已经加入其中。在对这个钱包合约进行安全审核之后,我们已经开始对其进行重写,通过使用一些更新、更有效的特性使其更加安全。我们计划将此合约和其他合约添加到合约模板库中,便于合约开发人员从中汲取灵感。

在 Scilla 核心开发方面,我们一直致力于优化解释器的 I/O 需求。在当前版本中,Scilla 附带了一个解释器(具有最小化可信代码库),该解释器以黑盒方式与核心区块链交互,即,它将调用当前合约状态和函数(又名转换),并返回更新后的合约状态。但是,提供给解释器的当前状态可能很大,并且可能会造成 I/O 瓶颈。我们一直在努力改进这一点,确保解释器只从状态中读取必要的条目,而不是整个状态。为此,我们重新建构了每个节点存储状态的方式以及将状态传递给解释器的方式。未来几周将公布更多细节。

为了简化在 Scilla 中的开发,我们还添加了两个新的折叠原语 nat_foldk 和 list_fold——这是一个允许提前终止遍历的折叠版本。作为扩展,我们重构了 NatUtils 和 ListUtils,以利用新引入的折叠原语,并减少了 gas 的使用:nat_eq、list_zip_with、list_eq、list-nth 和 list_find。

我们还在 ListUtils 和 NatUtils 中添加了两个新函数:nat_fold_while、list_foldl_while。有关这些功能的文档正在编写中。

其他改进和 bug 修复的总结如下:

  • 重构 BoolUtils,减少 gas 使用
  • 重构 nat_fold、list_foldl 和 list_foldr 原语,减少 gas 使用_
  • 增加 map 内建的测试覆盖率,以修复 put 和 remove 内建的语义_
  • 增加了标准库的几个函数的测试覆盖率_
  • 为性能测试的 eval-runner 添加 gaslimit cli 选项
  • 修正了 to_nat 内置的堆栈溢出错误和 nats 的美观打印错误。
  • 修正了 list 美化打印的二次复杂度(现在它是准线性复杂度)
  • 修正了 nat 折叠的二次复杂度

分类帐支持的开发

几个星期前,我们提交了一个分类帐应用程序供分类帐团队审核。我们最近收到了一些初步的反馈。为了解决这些问题,我们重构了应用代码,支持以下功能:

  • 通过检测 schnorr 签名函数,使其在「流模式」下工作,从而启用任意大小事务的签名
  • 在 ZIL ledger 应用程序代码中添加 nanopb (用于嵌入式设备的 protobuf 库),对事务字节进行反序列化,以显示金额、toaddr 和 gas 费用
  • 修改主机 python 和 nodejs 应用程序