Skip to content

@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 消息的接收器
}

源代码