@stdlib/deploy
提供统一的部署机制。
要使用该库,请导入 @stdlib/deploy
:
import "@stdlib/deploy";
消息 - Messages
Deploy
message Deploy { queryId: Int as uint64;}
DeployOk
message DeployOk { queryId: Int as uint64;}
FactoryDeploy
message FactoryDeploy { queryId: Int as uint64; cashback: Address;}
Traits
Deployable
最简单的 trait Deployable
提供了一个便捷的统一部署机制,通过实现一个简单的接收器来处理 Deploy 消息。
所有合约都是通过发送消息来部署的。 虽然任何消息都可用于此目的,但最佳做法是使用特殊的 部署 消息。
该消息只有一个字段 queryId
,由部署者提供(通常设置为零)。 如果部署成功,合约将回复一条 DeployOk 消息,并在回复中呼应相同的 queryId
。
源码:
trait Deployable { receive(deploy: Deploy) { self.notify(DeployOk{queryId: deploy.queryId}.toCell()); }}
示例用法:
import "@stdlib/deploy";
contract ExampleContract with Deployable { // Now, this contract has a receiver for Deploy message}
FactoryDeployable
Trait FactoryDeployable
为连锁部署提供了方便的统一机制。
源码:
trait FactoryDeployable { receive(deploy: FactoryDeploy) { self.forward(deploy.cashback, DeployOk{queryId: deploy.queryId}.toCell(), false, null); }}
用法示例:
import "@stdlib/deploy";
contract ExampleContract with FactoryDeployable { // Now, this contract has a receiver for FactoryDeploy message}