Deploy a Token¶
Deploy using JSON configuration¶
To deploy a Token, you first need to build its JSON configuration..
Then, execute the #createFactory()
static method of the Token
class using a signer to generate a plan to deploy a
Token according to its configuration. The process will emit several progress
events that you can subscribe to follow
the deployment of the contracts and configuration steps. The method returns a deployment factory that will itself
resolve to a Token object via its .deploy
method.
const tokenFactory = await Token.createFactory({ /* Configuration */ })
tokenFactory.on('fail', (event) => { console.log(event); });
tokenFactory.on('progress', (event) => { console.log(event); });
tokenFactory.on('deployed', (event) => { console.log(event); });
await tokenFactory.makePlan();
console.log(tokenFactory.plan); // Describes the steps required to deploy the token.
const token = await tokenFactory.deploy({ signer });
const tx = await token.registerIdentity();
await tx.wait();
Deploying contracts individually¶
const token = new Token();
token.provider = "YOUR PROVIDER"; // Set your provider (e.g., Homestead, Ropsten, etc.)
token.signer = "YOUR SIGNER"; // Set your signer, the wallet used to sign transactions
await token.deployClaimTopicsRegistry();
await token.deployTrustedIssuersRegistry();
// ClaimTopics and TrustedIssuers are required to Deploy Identity Registry
await token.deployIdentityRegistry();
await token.deployCompliance();
// Identity Registry and Compliance are required to Deploy Token
await token.deployToken();
Once deployed, you can get smart contracts addresses by using:
const tokenAddress = token.getTokenAddress();
const identityAddress = token.getIdentityRegistryAddress();
const complianceAddress = token.getComplianceAddress();
const claimTopicsAddress = token.getClaimTopicsRegistryAddress();
const trustedIssuers = token.getTrustedIssuersRegistryAddress();
Redeploy Token only¶
If you need to redeploy Token (e.g., in case you need to re-issue a Token without redeploying all the smart contracts), and an IdentityRegistry and / or Compliance already exists, you can deploy Token by loading both contracts.
const token = new Token();
await token.loadIdentityRegistry(
"IDENTITY REGISTRY ADDRESS"
);
await token.loadCompliance("COMPLIANCE ADDRESS");
await token.deployToken();