本周合并请求概述:第二部分

欢迎回来,这里是无限多Tezos合并请求系列文章的第二部分。由于本周不是合并请求的高发阶段,我将着重介绍一个额外的聚光灯模块。话不多说,让我们开始吧。

已完成的合并请求(Merge Request,简称MR

文档:增加了客户端注册错误和RPC的日志生成。

对于从事Tezos开发的人员来说,他们首先要明白系统发生了什么。文档就是为了这个目的而建立。这次的合并请求增加了一些代码,有助于JSON PRCs和过程中发生错误时生成相应的日志文档。如果你好奇这类文档长什么样子,你可以点击上面的超链接。

协议中的Map.find替换为Map.find_opt

在Ocaml的标准库中,各种函数都可以抛出异常。虽然这会让很多工作变得简单,但是却会让避免系统运行出错这件事情变得有些费力。举个栗子,当你需要从地图中得到一个元素的时候,你需要确认这个元素被加入到了地图中,除非你有一个常量确保这个元素将会存在于地图中。新版本的Ocaml标准库在原有的find函数基础上添加了一个find_opt函数,用来返回一个选项类型(option type)数据。有些人也许不熟悉什么是选项类型,它代表这个值有可能不存在。这对于上述你尝试取得而地图中有可能不存在的元素就很有效果。在访问该元素之前,它的值首先被检查,潜在的错误被预先处理了。这样就大大减少了运行过程中抛出来的异常。也有一些替代的标准库,比如Jane Street’s Core默认就拥有这个功能。现在我们把它放入我们的协议,希望能在系统运行之前帮助我们抓住更多的程序错误。

取消水龙头开关操作(faucet operations),添加兑换操作

正如亚瑟在几周前宣布的那样, 测试网络中的水龙头操作很快就要被取消了。这次的MR移除了水龙头操作,并且添加了一个新的激活操作。所谓激活操作,是用来激活某个预分配的账户。等到相关的代码进入测试网络,你们就可以得到更多有关预分配账户的信息了。

Quyen/隔离转移

这次的MR添加了一个新的类型,用来创建某些类型的原始版本。这个尚处于初始阶段,主要用于测试。

模块聚光灯:Script_int_repr

这个模块定义Michelson中使用的数字。Michelson使用任意精度的整数。以致于你在编写代码的时候不需要担心整数精度溢出的问题,这让许多工作变得简单一些。我们知道有两种类型的数字:整数和自然数。他们都使用一个具体的类型Z.t。有一个虚拟的类型被用来区分它们。一般情况下虚拟类型的工作方式是这样的:type ‘a x = Z.t ,然后你就可以通过修改动态参数来创建不同版本的类型。你也可以在书写函数时忽略参数。这个模块可以利用这些动态参数输出不同类型的相关功能。所以在模块以外,不同类型数据无法混合在一起。你可以在Michhelson的解释文档中找到这个模块,它有可能叫做Script_int。

脚注

除非我死亡(不可能),放弃(也许),或者被秘密政府带走(有可能)

作者:Tezos核心开发成员 Milo Davis

翻译:Tezos中文社区成员/Song.W