跳转到内容

@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
}

资料来源