距离上一次的更新有很长一段时间了。以后我会尽量更规律地给大家更新。

Tezos开发人员的邮件列表

如果你和我们从来没有在其他的平台有过联系,现在我们给活跃的Tezos相关项目开发人员创建了一个邮件列表(译者注:需要科学上网)。目前我们对修改列表的权限做了限制,但所有人都可以查看这个列表。如果你正在从事一个Tezos相关的项目,请通过Reddit、Email联系我。我会给你权限去修改该列表,或者你也可以给我发送一个烟雾图标加上你的邮件地址和项目的描述。

 

合并请求

分割数据编码

Tezos的库文件Data_encoding变得越来越庞大,已经超过了2000多行的代码。这导致了难以把控和臃肿。这个合并请求将其中包含的功能分割,分别装入了不同文件中的子模块里。新的API会更加的清晰和易于理解,尤其是对于新人来说。这个合并请求的描述非常具体,如果你想要全面了解所有的改动,你可以自行查看。

 

Vendors/blake2b: use bigstring

许多OCaml项目通过Cstruct Library来操作字节。该库文件使得OCaml阵列映射成类C的结构。这个合并请求用Bigstrings代替了Cstruct Library。这个新的API会更直接并减少错误。这个合并请求修改了原先包含Cstruct Library的Blake2b库文件。

 

Vendors/tweetnacl: use bigstring

就像上一个合并请求中所说的,Bigstring代替了原有的Cstruct。这个合并请求修改了基于tweetnacl的Libcrypto库文件。

 

Data_encoding: better documentation of `int`

这个合并请求做了一些关于Data_encoding模块的文档修改。它们阐明了ranged_int编译器的操作方式以及它受限于32位平台的OCaml整数型数据。

 

Stdlib/MBytes: 避免重复报错

在Mbytes模块中有一个小的Bug,导致原本应该在程序错误里抛出来的错误信息有些延迟。但是无伤大雅,因为正确的错误信息终究是显示出来了。新的代码会更简洁和正确。

 

Secp256k1的修复

这个合并请求对我们使用中的Secp256k1绑定做了许多修复和改善。包括删除硬编码常量、使用更具表现力的类型、添加更多文档以及使用 Alcotest 库进行测试。

 

提高引导通道

当一个节点进入到Tezos网络,它必须要和其他的节点同步。这是一个引导的过程。通过调整信息记录、增加平行度、调整请求的发起间隔,这个合并请求减少了CPU的空闲时间,并提高了整个引导过程的性能。该变化会在区块链变得庞大时越来越重要,因为引导过程所需的时间会越来越长。

 

节点:用native TLS取代OpenSSL

这个合并请求将Tezos转化为单纯的OCaml版本TLS。这消除了外部的依赖性,保证TLS实现过程中内存的安全性。

 

ocplib-json-typed

这个合并请求包含了一个安全的JSON序列库OCPlib-json-tyed。这个库在最开始就应用于Tezos中。我们考虑到因关联库文件的更新而导致经常性地要让人们去升级系统,或者重新编译Tezos代码是比较痛苦的,所以我们决定更改该库文件的供应方。

 

重新设定被禁止的同级分支

不幸的是,区块链是在一个对抗的环境中运行。这意味着会存在尝试诈骗的节点。这些坏的行为出于恶意的意图。为了效率的考虑,最好是不允许你的节点受它们的欺骗。这个合并请求创建了一个灰名单。它会一定时间内阻断你和那些坏节点的交互。这个灰名单的逻辑是基于Patricia tree。(我知道这个链接指向Radix trees,但是Patricia tree是Radix trees的其中一种)。我个人从中学习到了很多东西。如果你想要更好地理解和运用OCaml的功能,强烈建议你也去阅读一番。

作者:Tezos核心开发者Milo Davis
翻译:Tezos中文社区成员/Song.W