Files
pezkuwi-subxt/parachains/runtimes/contracts/contracts-rococo/README.md
T
Squirrel 9405a969f0 dir restructure to support more CGP (#1266)
* rerame res to chain-specs

* split polkadot-parachains dir

* rename dir parachains-common to common

Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
Co-authored-by: Wilfried Kopp <wilfried@parity.io>
Co-authored-by: Chevdor <chevdor@users.noreply.github.com>
2022-05-20 13:43:04 +01:00

89 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Contracts 📝
This is a parachain node for smart contracts; it contains a default configuration of
Substrate's module for smart contracts the [`pallet-contracts`](https://github.com/paritytech/substrate/tree/master/frame/contracts).
The node is only available on Rococo, a testnet for Polkadot and Kusama parachains.
It has been configured as a common good parachain, as such it uses the Rococo relay
chain's native token `ROC` instead of defining a token of its own.
See the section [Rococo Deployment](#rococo-deployment) below for more details.
If you have any questions, it's best to ask in the
[Substrate StackExchange](https://substrate.stackexchange.com/).
## Smart Contracts Development
![Contracts Overview](./contracts-overview.svg)
This node contains Substrate's smart contracts module the
[`pallet-contracts`](https://github.com/paritytech/substrate/tree/master/frame/contracts).
This pallet takes smart contracts as WebAssembly blobs and defines an API
for everything a smart contract needs (storage access, …).
As long as a programming language compiles to WebAssembly and there exists an implementation
of this API in it, you can write a smart contract for this pallet (and thus for this parachain)
in that language.
This is a list of languages you can currently choose from:
* [Parity's ink!](https://github.com/paritytech/ink) for Rust.
* [ask!](https://github.com/patractlabs/ask) for Assembly Script.
* The [Solang](https://github.com/hyperledger-labs/solang) compiler for Solidity.
There are also different user interfaces and command-line tools you can use to deploy
or interact with contracts:
* [Contracts UI](https://paritytech.github.io/contracts-ui/) a beginner-friendly UI for smart contract developers.
* [polkadot-js](https://polkadot.js.org/apps/) the go-to expert UI for smart contract developers.
* [cargo-contract](https://github.com/paritytech/cargo-contract) a CLI tool, ideal for scripting or your terminal workflow.
If you are looking for a quickstart, we can recommend
[ink!'s Guided Tutorial for Beginners](https://docs.substrate.io/tutorials/v3/ink-workshop/pt1/).
### Build & Launch a Node
To run a Contracts node that connects to Rococo
you will need to compile the `polkadot-parachain` binary:
```bash
cargo build --release --locked -p polkadot-parachain
```
Once the executable is built, launch the parachain node via:
```bash
./target/release/polkadot-parachain --chain contracts-rococo
```
Refer to the [setup instructions below](#local-setup) to run a local network for development.
### Rococo Deployment
We have a live deployment on [Rococo](https://wiki.polkadot.network/docs/build-pdk#rococo-testnet)
a testnet for Polkadot and Kusama parachains.
You can interact with the network through Polkadot JS Apps,
[click here for a direct link to the parachain](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-contracts-rpc.polkadot.io#/explorer).
This parachain uses the Rococo relay chain's native token `ROC` instead of defining a token of its own.
Due to this you'll need `ROC` in order to deploy contracts on this parachain.
As a first step, you should create an account. See [here](https://wiki.polkadot.network/docs/learn-account-generation)
for a detailed guide.
As a second step, you have to get `ROC` testnet tokens through the [Rococo Faucet](https://wiki.polkadot.network/docs/learn-DOT#getting-rococo-tokens).
This is a chat room in which you need to write:
```bash
!drip YOUR_SS_58_ADDRESS:1002
```
The number `1002` is the id of this parachain on Rococo, by supplying it the faucet will teleport `ROC`
tokens directly to your account on the parachain.
If everything worked out, the teleported `ROC` tokens will show up under
[the "Accounts" tab](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-contracts-rpc.polkadot.io#/accounts).
Once you have `ROC` you can deploy a contract as you would normally.
If you're unsure about this, our [guided tutorial](https://docs.substrate.io/tutorials/v3/ink-workshop/pt1/)
will clarify that for you in no time.