这一系列的文章赢得了“野兽编辑”的称号,好羞愧。曾经我一直是利用Emacs这个文本编辑器来写文章。这个程序允许我随时退出,而其他很多程序不具有这样的功能。

现在有一半的读者觉得依然有必要继续阅读这一系列关于每周的合并请求的文章。

Data_encoding: add support for Zarith

该请求增加了一个序列化数字的更好方法。让我们谈谈这个合并请求解决了什么问题:有一些整数可以拥有任意长度,虽然绝大多数并不会。在我们谈论新的序列化格式之前,我想先尝试解释一下为什么Tezos正在使用这些整数。

如果你思索日常生活中使用的整数范围,几乎都是在64位整数之间(-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)。然而这对于形式验证来说并不充分。当你形式验证一些事情的时候,你需要计算所有的可能输入值,包括超出上述范围的整数。此外,有些时候一些中间变量有可能会溢出,即使最终的结构是在这个范围之内的。举个例子,有一个值X,我们计算他的4次方时有可能溢出,而除以2就不会。

事实上大部分的数字都是小的,这意味着可以简单地用一个大小字节序列来包含1.5-2x的数字。取而代之的,此次的合并请求利用每一个字节的第一位来验证该字节是否是某个数字的最后一个字节。

  • 1xxxxxxx – 最后一个字节,停止查看
  • 0xxxxxxx – 不是最后一个字节,继续查看

首字节中的第二位保存正负信息(1代表负数,0则是正数)。

  • 10xxxxxx – 正数首字节
  • 11xxxxxx – 负数首字节

余下的7位(首字节的6位)开始才代表数字本身。

Node: add test for CORS

Tezos节点现在可以正确处理CORS请求。

Client: improve printing of logged requests

利用HTTP请求登录JSON时打印功能有一些微小的问题,该合并请求修复了这些问题。

MBytes: implement with `bigstring`

Mbytes模块现在正式使用bigstring库!该库文件经过了很好的测试,并且消除了大部分的自定义代码,极大简化了整体的代码。

Do not forfeit bond when seed are not revealed by bakers

该合并请求对烘焙方的惩罚做了一些小的调整。如果他们无法返回随机数,那么他们失去的不再是他们的存款,而是本次区块里包含的交易费用和区块奖励。

Docker: proper cleanup on chain reset

该合并请求清理了链的复位方式。现在之前测试连的数据已被从docker存储中删除了。

Alpha: fail on early revelations

该合并请求强制让某些错误在一个周期之内只报告一次并增加了一些报告逻辑。它曾经用三种不同的方式提交三次错误,这带来一些无效的信息。

Alpha: exclude signature from the minimal stamp of PoW.

每一个Tezos区块包含一些极少的工作量证明,这是为了减少类似垃圾邮件一样的欺骗。这次的合并请求调整了工作量证明的确认方式。它不再包含签名自身。在区块的头文件中,工作量证明需要被签名,这会导致烘焙区块过程中产生过多的签名。这次的合并请求修复了这个问题,并简化/加速了烘焙的进程。

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