Appearance
OTP-006: 合约包
该提案定义了一种将已编译合约、其依赖项以及所有相关元数据打包到单个文件中的方法。
动机
需要一种统一的包格式,以简化使用各种工具部署和升级合约的过程,而无需配置它们。
规范
包文件扩展名为 .pkg
,并且是一个 JSON 文件:
json
{
"name": "My Contract",
"code": "... boc of code ...",
"abi": "ABI string to be uploaded as is to IPFS or Ton Storage",
"init": {
"kind": "direct", // 表示该合约可以直接部署
"args": {
// ... ABI 格式的参数
},
"prefix": {
// 合约初始化状态的可选前缀
"bits": 0, // 前缀中的位数
"value": 0 // 前缀的值
},
"deployment": {
"kind": "system-cell", // 表示该合约可以直接部署
"system": "... boc of system cell ..."
}
},
"sources": {
"file.ton": "... base64 encoded source file ..."
},
"compiler": {
"name": "func",
"version": "0.4.1",
"parameters": "..." // 可选的字符串参数
}
}
字段解释
name
: 合约的名称。code
: 合约代码的 BOC(Bag of Cells)格式。abi
: 合约的 ABI 字符串,可以直接上传到 IPFS 或 Ton Storage。init
: 初始化数据,包括:kind
: 初始化类型,例如direct
表示合约可以直接部署。args
: 初始化参数,采用 ABI 格式。prefix
: 可选的初始化状态前缀,包括:bits
: 前缀中的位数。value
: 前缀的值。
deployment
: 部署信息,包括:kind
: 部署类型,例如system-cell
表示合约可以直接部署。system
: 系统单元的 BOC 格式。
sources
: 源文件,以 base64 编码。compiler
: 编译器信息,包括:name
: 编译器名称。version
: 编译器版本。parameters
: 可选的字符串参数。
缺点
无
参考
BOC(Bag of Cells): BOC 文档