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
contracts
pallet – in a default configuration.
The code for this parachain can be found in the cumulus
repository.
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
tools (e.g. 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):
!drip YOUR_SS_58_ADDRESS:1002
The number 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 Alice
or Bob
,
you have to use the one you generated instead.
You can also deploy your contract from the command-line via cargo-contract
.
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.
See the cargo-contract
docs
for a more detailed documentation.