一、概述
我们使得某些选定的结构体可以作为入口函数和视图函数( entry and view functions)的有效参数。
二、动机
到目前为止,只有原始值可以传递到入口函数。主要是因为允许通用结构体作为输入将使得重要的不变量失效,比如无中生有地创建Coins。
到目前为止,只有原始值可以传递给入口函数。主要是因为允许将通用结构体作为输入会破坏重要的不变量,比如无中生有地创建 Coin 。
三、规范
- 入口函数可以接受
String作为输入参数。这已经是一个特殊情况,并且将继续得到支持。该字符串以一个必须是有效UTF-8的vector形式给出,否则交易验证将失败。 - 入口函数可以接受
FixedPoint32、FixedPoint64作为输入参数。传递的值分别为u64或u128,分别代表固定点数值的原始值。 - 入口函数可以接受
Option<T>作为输入参数,前提是T是有效的输入参数类型。格式是:一个空的向量表示None,以及一个单元素向量表示Some(x),其中x的类型为T。超过一个元素的向量将在输入验证时会被拒绝。 - 入口函数可以接受
Object<T>作为输入参数。格式将仅是对象的地址。资源T必须在指定地址存在,否则输入验证将失败。
四、参考实现
- 启用通用结构体的代码已合并至 https://github.com/aptos-labs/aptos-core/pull/7090
五、时间线
Devnet:已经可用于测试
Testnet:约 4 月 24 日
Mainnet:5 月 1 日