Appearance
@stdlib/deploy
提供统一的部署机制。
要使用此库,请导入 @stdlib/deploy
:
solidity
import "@stdlib/deploy";
消息
Deploy
ts
message Deploy {
queryId: Int as uint64;
}
DeployOk
ts
message DeployOk {
queryId: Int as uint64;
}
FactoryDeploy
ts
message FactoryDeploy {
queryId: Int as uint64;
cashback: Address;
}
特性
Deployable
最简单的特性 Deployable
提供了一种方便的统一部署机制,通过实现一个简单的接收器来接收 Deploy 消息。
所有合约都是通过向它们发送消息来部署的。虽然可以使用任何消息进行部署,但最佳实践是使用特殊的 Deploy 消息。
此消息有一个字段 queryId
,由部署者提供(通常设置为零)。如果部署成功,合约将回复一个 DeployOk 消息,并在响应中回显相同的 queryId
。
源代码:
solidity
trait Deployable {
receive(deploy: Deploy) {
self.notify(DeployOk{queryId: deploy.queryId}.toCell());
}
}
使用示例:
solidity
import "@stdlib/deploy";
contract ExampleContract with Deployable {
// 现在,此合约有一个接收 Deploy 消息的接收器
}
FactoryDeployable
特性 FactoryDeployable
提供了一种方便的链式部署机制。
源代码:
solidity
trait FactoryDeployable {
receive(deploy: FactoryDeploy) {
self.forward(deploy.cashback, DeployOk{queryId: deploy.queryId}.toCell(), false, null);
}
}
使用示例:
solidity
import "@stdlib/deploy";
contract ExampleContract with FactoryDeployable {
// 现在,此合约有一个接收 FactoryDeploy 消息的接收器
}