跳转到内容

@stdlib/deploy

提供统一的部署机制。

要使用该库,请导入 @stdlib/deploy

import "@stdlib/deploy";

信息

Deploy

message Deploy {
queryIdInt as uint64;
}

DeployOk

message DeployOk {
queryIdInt as uint64;
}

工厂部署

message FactoryDeploy {
queryIdInt as uint64;
cashbackAddress;
}

特质

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
}

资料来源