2 个不稳定版本

0.2.0 2024 年 5 月 14 日
0.1.0 2024 年 3 月 28 日

#14#casper

Download history 83/week @ 2024-05-06 230/week @ 2024-05-13 70/week @ 2024-05-20 67/week @ 2024-05-27 75/week @ 2024-06-03 84/week @ 2024-06-10 41/week @ 2024-06-17 65/week @ 2024-06-24 11/week @ 2024-07-01 4/week @ 2024-07-08 8/week @ 2024-07-15 30/week @ 2024-07-22 59/week @ 2024-07-29 27/week @ 2024-08-05 3/week @ 2024-08-12

120 每月下载量
5 个 crates 中使用 (通过 odra-schema)

MIT 许可证

16KB
271

Casper 合同 Schema

欢迎来到我们的 Casper 合同 Schema 仓库!这是我们构建连接智能合约与 Casper 网络的标准方式的地方。这一切都是为了使区块链应用更好地协同工作,我们需要您的帮助使其更加完善。使用 Casper 合同 Schema 意味着您的区块链项目将更加兼容,并且更容易开发。

您可以如何帮助

我们正在寻找对 Schema 的反馈,并期待您的意见。如果您有任何想法、建议或问题,请提交一个问题或拉取请求。

示例

请参阅 erc20_schema.jsondns_schema.json 以了解示例用法。

在代码更改后更新 Schema,请运行

$ just update-schema

Schema 格式

以下是 Schema 格式的粗略描述。

Schema 的根是一个具有以下属性的对象

  • casper_contract_schema_version - Schema 的版本。
  • toolchain - 编译合约使用的工具链。
  • authors - 合约作者的列表。
  • repository - 可选的仓库 URL。
  • homepage - 可选的项目主页 URL。
  • contract_name - 合约的名称。
  • contract_version - 合约的版本。
  • types - 在 entry_pointsevents 中使用的自定义类型列表。
  • errors - 用户定义的错误列表。
  • entry_points - 入口点列表。
  • events - 事件列表。
  • call - 描述 call 方法的可选部分。不存在时为 null

类型

类型部分用于定义在 entry_pointsevents 中自定义的所有类型。自定义类型可以由 CLTypes 和其他自定义类型构成。

有两种类型的类型

  • struct - 代表具有字段列表的结构化数据。
  • enum - 代表具有字段列表的枚举类型。定义变体时有三种模式
    • 单个未命名字段 - 带有单个未命名字段的变体按原样编码,
    • 多个未命名字段 - 带有多个未命名字段的变体打包成一个元组,
    • 命名字段 - 带有命名字段的变体按结构体编码。

入口点、参数、结构体、结构体的成员和枚举都有一个 description 字段。它可以是字符串或 null

可以添加许多具有相同名称的参数。然后所有这些都必须标记为 optional。由契约决定使用哪个。

有关所有示例,请参阅 dns_schema.json

Casper 2.0 不再计划使用 CLType 格式。但是,它仍然应该在这里使用,因为 CLType 已经在所有 SDK 中实现。对于 2.0,我们可能准备下一个具有不同类型格式的版本。

递归类型

可以在模式中定义递归类型。例如,链表。如何处理无限递归由实现决定。我们建议将递归限制在合理的深度。

入口点

入口点是可以在合约上调用的函数。每个入口点有以下属性

  • name - 入口点的名称。
  • description - 入口点的描述。
  • is_mutable - 入口点是否可变。
  • arguments - 入口点的命名参数列表。
  • return_ty - 入口点的返回类型。
  • is_contract_context:如果为 true,则为合约上下文,否则为会话上下文。
  • access - 入口点的访问控制。可以是 public 或带有组列表的 group

错误

错误是合约可能回退的自定义错误列表。每个错误有以下属性

  • name - 错误的名称。
  • description - 错误的描述。
  • discriminant - 错误的区分符。

事件

事件是命名类型的列表。每个事件有以下属性

  • name - 事件的名称。
  • ty - 事件的类型。

它旨在允许以不同的名称重用相同的类型。

依赖关系

~10MB
~207K SLoC