Language
Libraries
@stdlib/deploy

@stdlib/deploy

Provides unified mechanisms for deployments.

To use this library, import @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

Simplest trait Deployable that provides a handy unified mechanism for deployments by implementing a simple receiver for the Deploy message.

All contracts are deployed by sending them a message. While any message can be used for this purpose, best practice is to use the special Deploy message.

This message has a single field, queryId, provided by the deployer (usually set to zero). If the deployment succeeds, the contract will reply with a DeployOk message and echo the same queryId in the response.

Source code:

trait Deployable {
    receive(deploy: Deploy) {
        self.notify(DeployOk{queryId: deploy.queryId}.toCell());
    }
}

Usage example:

import "@stdlib/deploy";
 
contract ExampleContract with Deployable {
    // Now, this contract has a receiver for Deploy message
}

FactoryDeployable

Trait FactoryDeployable provides a handy unified mechanism for chained deployments.

Source code:

trait FactoryDeployable  {
    receive(deploy: FactoryDeploy) {
        self.forward(deploy.cashback, DeployOk{queryId: deploy.queryId}.toCell(), false, null);
    }
}

Usage example:

import "@stdlib/deploy";
 
contract ExampleContract with FactoryDeployable {
    // Now, this contract has a receiver for FactoryDeploy message
}

Sources