Contracts on Rococo
Rococo is a testnet for Polkadot and Kusama parachains. We have a live testnet named Contracts as a parachain online there.
What is the Contracts parachain?
It's a Substrate parachain for smart
contracts. We configured it to use Substrate's smart contracts module – the
pallet – in a default configuration.
The code for this parachain can be found in the
Our parachain uses the Rococo relay chain's native token (
ROC) instead of having its own token.
Due to this you'll need
ROC in order to deploy contracts on our testnet.
How can I use it?
(1) Create an Account
As a first step, you should create an account. This can be done via command-line
subxt) or via a wallet (e.g. with the
polkadot-js browser extension).
See here for a detailed guide.
(2) Get Testnet Tokens
As a second step, you have to get
ROC testnet tokens through the Rococo Faucet.
Alternatively, you can use the Element chat room.
You must send a message like this (Note the
:1002 after the wallet address):
1002 is the parachain ID of Contracts on Rococo, by supplying it you instruct the
faucet to teleport
ROC tokens directly to your account on the parachain.
If you have some tokens on the Rococo relay chain, you can teleport them to the Contracts parachain on your own. Read more on teleporting assets here.
If everything worked out, the teleported
ROC tokens will show up in your account.
In case you are using the
polkadot-js frontend, you can see them under
the "Accounts" tab for Contracts.
(3) Deploy Your Contract
Once you have
ROC on Contracts you can deploy a contract nearly as you would with
a local developer node.
The only difference is that you can't use pre-endowed accounts like
you have to use the one you generated instead.
You can also deploy your contract from the command-line via
Make sure you are in the folder of your contract and that it has been
built recently. Then execute:
cargo contract upload --suri "your twelve or twenty-four words"
cargo contract instantiate --suri … --constructor new --args true
new in this case would be a constructor method exposed by the contract,
--args would be any arguments the constructor expects.
for a more detailed documentation.