Skip to main content

Deploy your dapp to Testnet

Run these commands from your Hello World project folder.

Get tCHR

You'll need a Web3 wallet such as MetaMask to sign requests.
Request tCHR tokens from the Chromia Testnet Faucet.

Lease a container

Generate a key pair for your Testnet container:

chr keygen --key-id="testnet_container_key"

Use the pubkey shown to lease a container. This gives you a Container ID.

Configure chromia.yml

Make sure the blockchain name is unique:

blockchains:
<blockchain_name>: # ← ensure this doesn't say 'my_rell_dapp' — use a unique name
module: main

Then add the Testnet deployment block and insert your Container ID:

deployments:
testnet:
container: <container_id> # ← paste your Container ID here

Using testnet as the deployment name automatically configures the brid and url for you. A custom deployment name would require these to be specified manually. See deployment configuration for more details.

Make the code unique

Your code must differ from anything previously deployed. Easy ways to make it unique:

module;

// A unique comment makes this build different.
// Example: deploy-uniq-xyz

object my_name {
// Or initialize with something unique:
// mutable name = "Alice_42"
mutable name = "World";
}

operation set_name(name) {
my_name.name = name;
}

// Random whitespace (blank lines or spaces) also counts as a unique edit:
// .
// .
// .....

query hello_world() = "Hello %s!".format(my_name.name);

Deploy

Deploy using the key ID from your generated key:

chr deployment create --network testnet --key-id testnet_container_key
If deployment is pending...

Use the printed tx-rid to fetch transaction status:

curl -X GET "https://node0.testnet.chromia.com/tx/6F1B061C633A992BF195850BF5AA1B6F887AEE01BB3F51251C230930FB792A92/{tx_rid}/status"

Replace {tx_rid} with the value shown by the CLI. Pattern (for reference): curl -X GET "{node}/tx/{directory_chain_brid}/{tx_rid}/status"

Deployment gives you the Blockchain RID to add under the chains tag in your chromia.yml:

deployments:
testnet:
container: <container_id>
# Add chains tag with the Blockchain RID from the CLI output
chains:
<blockchain_name>: x"<blockchain_rid>"

Check it works

Using the blockchain name you defined in chromia.yml, set the name to "Deployer":

chr tx --network testnet --blockchain <blockchain_name> set_name "Deployer"

Hello Deployer! 👋

chr query --network testnet --blockchain <blockchain_name> hello_world