diff --git a/.github/workflows/release-02_create-draft.yml b/.github/workflows/release-02_create-draft.yml index c6ab7c19ad..f189d5e266 100644 --- a/.github/workflows/release-02_create-draft.yml +++ b/.github/workflows/release-02_create-draft.yml @@ -43,7 +43,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "canvas-kusama"] + runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "contracts-rococo"] steps: - name: Checkout sources uses: actions/checkout@v3 @@ -135,7 +135,7 @@ jobs: STATEMINE_DIGEST: ${{ github.workspace}}/statemine-srtool-json/statemine-srtool-digest.json STATEMINT_DIGEST: ${{ github.workspace}}/statemint-srtool-json/statemint-srtool-digest.json ROCOCO_PARA_DIGEST: ${{ github.workspace}}/rococo-parachain-srtool-json/rococo-parachain-srtool-digest.json - CANVAS_KUSAMA_DIGEST: ${{ github.workspace}}/canvas-kusama-srtool-json/canvas-kusama-srtool-digest.json + CANVAS_KUSAMA_DIGEST: ${{ github.workspace}}/contracts-rococo-srtool-json/contracts-rococo-srtool-digest.json REF1: ${{ github.event.inputs.ref1 }} REF2: ${{ github.event.inputs.ref2 }} PRE_RELEASE: ${{ github.event.inputs.pre_release }} @@ -191,7 +191,7 @@ jobs: RUNTIME_DIR: polkadot-parachains strategy: matrix: - runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "canvas-kusama"] + runtime: ["shell", "statemine", "statemint", "westmint", "rococo-parachain", "contracts-rococo"] steps: - name: Checkout sources uses: actions/checkout@v3 @@ -221,8 +221,7 @@ jobs: id: fix-runtime-path run: | cd "${{ matrix.runtime }}-runtime/" - mv "$(sed 's/-parachain/_parachain/' <<< ${{ matrix.runtime }})_runtime.compact.compressed.wasm" "${{ matrix.runtime }}_runtime.compact.compressed.wasm" || true - mv "$(sed 's/-kusama/_kusama/' <<< ${{ matrix.runtime }})_runtime.compact.compressed.wasm" "${{ matrix.runtime }}_runtime.compact.compressed.wasm" || true + mv "$(sed -E 's/-(.*)/_\1/' <<< ${{ matrix.runtime }})_runtime.compact.compressed.wasm" "${{ matrix.runtime }}_runtime.compact.compressed.wasm" || true - name: Upload compressed ${{ matrix.runtime }} wasm uses: actions/upload-release-asset@v1 diff --git a/.github/workflows/srtool.yml b/.github/workflows/srtool.yml index 52a1e656ed..42fdde095c 100644 --- a/.github/workflows/srtool.yml +++ b/.github/workflows/srtool.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - chain: ["statemine", "westmint", "statemint", "rococo-parachain", "shell", "canvas-kusama"] + chain: ["statemine", "westmint", "statemint", "rococo-parachain", "shell", "contracts-rococo"] steps: - uses: actions/checkout@v3 with: diff --git a/Cargo.lock b/Cargo.lock index 0089b521ff..e54e8a58e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -924,72 +924,6 @@ dependencies = [ "serde", ] -[[package]] -name = "canvas-kusama-runtime" -version = "0.2.0" -dependencies = [ - "cumulus-pallet-aura-ext", - "cumulus-pallet-dmp-queue", - "cumulus-pallet-parachain-system", - "cumulus-pallet-session-benchmarking", - "cumulus-pallet-xcm", - "cumulus-pallet-xcmp-queue", - "cumulus-primitives-core", - "cumulus-primitives-timestamp", - "cumulus-primitives-utility", - "frame-benchmarking", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-benchmarking", - "frame-system-rpc-runtime-api", - "frame-try-runtime", - "hex-literal", - "kusama-runtime-constants", - "log", - "pallet-aura", - "pallet-authorship", - "pallet-balances", - "pallet-collator-selection", - "pallet-contracts", - "pallet-contracts-primitives", - "pallet-contracts-rpc-runtime-api", - "pallet-multisig", - "pallet-randomness-collective-flip", - "pallet-session", - "pallet-sudo", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-utility", - "pallet-xcm", - "parachain-info", - "parachains-common", - "parity-scale-codec", - "polkadot-core-primitives", - "polkadot-parachain 0.9.22", - "polkadot-runtime-common", - "scale-info", - "serde", - "smallvec", - "sp-api", - "sp-block-builder", - "sp-consensus-aura", - "sp-core", - "sp-inherents", - "sp-io", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-std", - "sp-transaction-pool", - "sp-version", - "substrate-wasm-builder", - "xcm", - "xcm-builder", - "xcm-executor", -] - [[package]] name = "cargo-platform" version = "0.1.2" @@ -1231,6 +1165,72 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +[[package]] +name = "contracts-rococo-runtime" +version = "0.2.0" +dependencies = [ + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", + "cumulus-pallet-session-benchmarking", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-timestamp", + "cumulus-primitives-utility", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "hex-literal", + "kusama-runtime-constants", + "log", + "pallet-aura", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-contracts", + "pallet-contracts-primitives", + "pallet-contracts-rpc-runtime-api", + "pallet-multisig", + "pallet-randomness-collective-flip", + "pallet-session", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-utility", + "pallet-xcm", + "parachain-info", + "parachains-common", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain 0.9.22", + "polkadot-runtime-common", + "scale-info", + "serde", + "smallvec", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-io", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-transaction-pool", + "sp-version", + "substrate-wasm-builder", + "xcm", + "xcm-builder", + "xcm-executor", +] + [[package]] name = "convert_case" version = "0.4.0" @@ -7693,8 +7693,8 @@ version = "0.9.190" dependencies = [ "assert_cmd", "async-trait", - "canvas-kusama-runtime", "clap 3.1.18", + "contracts-rococo-runtime", "cumulus-client-cli", "cumulus-client-consensus-aura", "cumulus-client-consensus-common", diff --git a/Cargo.toml b/Cargo.toml index 31e3db293a..f9a0bcc87a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ members = [ "polkadot-parachains/statemint", "polkadot-parachains/statemine", "polkadot-parachains/westmint", - "polkadot-parachains/canvas-kusama", + "polkadot-parachains/contracts-rococo", "test/client", "test/relay-sproof-builder", "test/relay-validation-worker-provider", diff --git a/README.md b/README.md index da1021e810..58b802077d 100644 --- a/README.md +++ b/README.md @@ -59,95 +59,9 @@ CHAIN=westmint # or statemine Refer to the [setup instructions below](#local-setup) to run a local network for development. -## Canvas 🧑‍🎨 +## Contracts 📝 -[![matrix][k1]][k2] [![discord][l1]][l2] - -[k1]: https://img.shields.io/badge/matrix-chat-brightgreen.svg?style=flat -[k2]: https://riot.im/app/#/room/#ink:matrix.parity.io -[l1]: https://img.shields.io/discord/722223075629727774?style=flat-square&label=discord -[l2]: https://discord.com/invite/wGUDt2p - -This is a node implementation of `Canvas`, a common good parachain for `pallet-contracts` -based wasm smart contracts. Right now this repository only contains the `canvas-kusama` runtime -which we plan to use for both Rococo and Kusama. - -If you have any questions, feel free to talk to us on [Element][k2] or on [Discord][l2] -(in the [`ink_smart-contracts`](https://discord.com/channels/722223075629727774/765280480609828864) channel). - -## Developing Smart Contracts for Canvas - -![Canvas Overview](./docs/canvas-overview.svg) - -This node contains Substrate's smart contracts module ‒ the -[`contracts`](https://github.com/paritytech/substrate/tree/master/frame/contracts) pallet. -This `contracts` 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 Canvas ‒ 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: - -* [polkadot-js](https://polkadot.js.org/apps/) -* [Canvas UI](https://paritytech.github.io/canvas-ui/) (outdated) - -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 Canvas node that connects to Rococo (Kusama and Polkadot parachains are not deployed, yet) -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 rocanvas -``` - -Refer to the [setup instructions below](#local-setup) to run a local network for development. - -### Rococo Deployment - -We have a live deployment of the Canvas parachain 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 Canvas](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-canvas-rpc.polkadot.io#/explorer). - -The Canvas 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 Canvas. - -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 parachain id of Canvas 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 for Canvas](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-canvas-rpc.polkadot.io#/accounts). - -Once you have ROC on Canvas 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. +See [the `contracts-rococo` readme](polkadot-parachains/contracts-rococo/README.md) for details. ## Rococo 👑 @@ -190,7 +104,7 @@ Once the executable is built, launch collators for each parachain (repeat once e ### Parachains * [Statemint](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-statemint-rpc.polkadot.io#/explorer) -* [Canvas on Rococo](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-canvas-rpc.polkadot.io#/explorer) +* [Contracts on Rococo](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-contracts-rpc.polkadot.io#/explorer) * [RILT](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo.kilt.io#/explorer) The network uses horizontal message passing (HRMP) to enable communication between parachains and diff --git a/polkadot-parachains/Cargo.toml b/polkadot-parachains/Cargo.toml index 14bdc7bd91..f1a6e282dd 100644 --- a/polkadot-parachains/Cargo.toml +++ b/polkadot-parachains/Cargo.toml @@ -26,8 +26,8 @@ seedling-runtime = { path = "seedling" } statemint-runtime = { path = "statemint" } statemine-runtime = { path = "statemine" } westmint-runtime = { path = "westmint" } -canvas-kusama-runtime = { path = "canvas-kusama" } -jsonrpsee = { version = "0.13.1", features = ["server"] } +contracts-rococo-runtime = { path = "contracts-rococo" } +jsonrpsee = { version = "0.13.0", features = ["server"] } parachains-common = { path = "parachains-common" } # Substrate diff --git a/polkadot-parachains/canvas-kusama/Cargo.toml b/polkadot-parachains/contracts-rococo/Cargo.toml similarity index 99% rename from polkadot-parachains/canvas-kusama/Cargo.toml rename to polkadot-parachains/contracts-rococo/Cargo.toml index 35bc6095e6..1bea26bb98 100644 --- a/polkadot-parachains/canvas-kusama/Cargo.toml +++ b/polkadot-parachains/contracts-rococo/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "canvas-kusama-runtime" +name = "contracts-rococo-runtime" version = "0.2.0" authors = ["Parity Technologies "] edition = "2021" diff --git a/polkadot-parachains/contracts-rococo/README.md b/polkadot-parachains/contracts-rococo/README.md new file mode 100644 index 0000000000..973d84a14b --- /dev/null +++ b/polkadot-parachains/contracts-rococo/README.md @@ -0,0 +1,88 @@ +# 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. diff --git a/polkadot-parachains/canvas-kusama/build.rs b/polkadot-parachains/contracts-rococo/build.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/build.rs rename to polkadot-parachains/contracts-rococo/build.rs diff --git a/docs/canvas-overview.svg b/polkadot-parachains/contracts-rococo/contracts-overview.svg similarity index 96% rename from docs/canvas-overview.svg rename to polkadot-parachains/contracts-rococo/contracts-overview.svg index a4a480f9bf..ad48df6510 100644 --- a/docs/canvas-overview.svg +++ b/polkadot-parachains/contracts-rococo/contracts-overview.svg @@ -5,8 +5,8 @@ viewBox="0 0 829 715" version="1.1" id="svg8" - inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" - sodipodi:docname="how-it-works.svg" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)" + sodipodi:docname="contracts-overview.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" @@ -18,6 +18,12 @@ xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> + The WebAssembly blob targetsThe WebAssembly blob targetsan API exposed by Substrate'san API exposed by Substrate'scontracts module. + y="650.11108" + style="font-size:15.875px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.264583" + id="tspan2432" + sodipodi:role="line">contracts module. - - Canvas - - - - - - - - - + diff --git a/polkadot-parachains/canvas-kusama/src/constants.rs b/polkadot-parachains/contracts-rococo/src/constants.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/constants.rs rename to polkadot-parachains/contracts-rococo/src/constants.rs diff --git a/polkadot-parachains/canvas-kusama/src/contracts.rs b/polkadot-parachains/contracts-rococo/src/contracts.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/contracts.rs rename to polkadot-parachains/contracts-rococo/src/contracts.rs diff --git a/polkadot-parachains/canvas-kusama/src/lib.rs b/polkadot-parachains/contracts-rococo/src/lib.rs similarity index 99% rename from polkadot-parachains/canvas-kusama/src/lib.rs rename to polkadot-parachains/contracts-rococo/src/lib.rs index ddf15918b3..6eda8971bb 100644 --- a/polkadot-parachains/canvas-kusama/src/lib.rs +++ b/polkadot-parachains/contracts-rococo/src/lib.rs @@ -108,8 +108,8 @@ impl_opaque_keys! { #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("canvas-kusama"), - impl_name: create_runtime_str!("canvas-kusama"), + spec_name: create_runtime_str!("contracts-rococo"), + impl_name: create_runtime_str!("contracts-rococo"), authoring_version: 1, spec_version: 900, impl_version: 0, @@ -538,7 +538,7 @@ impl pallet_contracts_rpc_runtime_api::ContractsApi for Runtime { fn on_runtime_upgrade() -> (Weight, Weight) { - log::info!("try-runtime::on_runtime_upgrade canvas"); + log::info!("try-runtime::on_runtime_upgrade contracts"); let weight = Executive::try_runtime_upgrade().unwrap(); (weight, RuntimeBlockWeights::get().max_block) } diff --git a/polkadot-parachains/canvas-kusama/src/weights/block_weights.rs b/polkadot-parachains/contracts-rococo/src/weights/block_weights.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/block_weights.rs rename to polkadot-parachains/contracts-rococo/src/weights/block_weights.rs diff --git a/polkadot-parachains/canvas-kusama/src/weights/extrinsic_weights.rs b/polkadot-parachains/contracts-rococo/src/weights/extrinsic_weights.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/extrinsic_weights.rs rename to polkadot-parachains/contracts-rococo/src/weights/extrinsic_weights.rs diff --git a/polkadot-parachains/canvas-kusama/src/weights/mod.rs b/polkadot-parachains/contracts-rococo/src/weights/mod.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/mod.rs rename to polkadot-parachains/contracts-rococo/src/weights/mod.rs diff --git a/polkadot-parachains/canvas-kusama/src/weights/paritydb_weights.rs b/polkadot-parachains/contracts-rococo/src/weights/paritydb_weights.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/paritydb_weights.rs rename to polkadot-parachains/contracts-rococo/src/weights/paritydb_weights.rs diff --git a/polkadot-parachains/canvas-kusama/src/weights/rocksdb_weights.rs b/polkadot-parachains/contracts-rococo/src/weights/rocksdb_weights.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/weights/rocksdb_weights.rs rename to polkadot-parachains/contracts-rococo/src/weights/rocksdb_weights.rs diff --git a/polkadot-parachains/canvas-kusama/src/xcm_config.rs b/polkadot-parachains/contracts-rococo/src/xcm_config.rs similarity index 100% rename from polkadot-parachains/canvas-kusama/src/xcm_config.rs rename to polkadot-parachains/contracts-rococo/src/xcm_config.rs diff --git a/polkadot-parachains/res/canvas-rococo.json b/polkadot-parachains/res/contracts-rococo.json similarity index 99% rename from polkadot-parachains/res/canvas-rococo.json rename to polkadot-parachains/res/contracts-rococo.json index 2bebd97590..7d1b84be20 100644 --- a/polkadot-parachains/res/canvas-rococo.json +++ b/polkadot-parachains/res/contracts-rococo.json @@ -1,6 +1,6 @@ { - "name": "Canvas on Rococo", - "id": "canvas-rococo", + "name": "Contracts on Rococo", + "id": "contracts-rococo", "chainType": "Live", "bootNodes": [ "/ip4/34.90.191.237/tcp/30333/p2p/12D3KooWKg3Rpxcr9oJ8n6khoxpGKWztCZydtUZk2cojHqnfLrpj", @@ -80,4 +80,4 @@ "childrenDefault": {} } } -} \ No newline at end of file +} diff --git a/polkadot-parachains/src/chain_spec.rs b/polkadot-parachains/src/chain_spec.rs index ec3a6e84d0..9b65ac8e59 100644 --- a/polkadot-parachains/src/chain_spec.rs +++ b/polkadot-parachains/src/chain_spec.rs @@ -835,39 +835,38 @@ fn westmint_genesis( } } -/// We use the same runtime on kusama and rococo. -pub type CanvasKusamaChainSpec = - sc_service::GenericChainSpec; +pub type ContractsRococoChainSpec = + sc_service::GenericChainSpec; /// No relay chain suffix because the id is the same over all relay chains. -const CANVAS_PARACHAIN_ID: u32 = 1002; +const CONTRACTS_PARACHAIN_ID: u32 = 1002; -/// The existential deposit is determined by the runtime "canvas-kusama". -const CANVAS_KUSAMA_ED: canvas_kusama_runtime::Balance = - canvas_kusama_runtime::constants::currency::EXISTENTIAL_DEPOSIT; +/// The existential deposit is determined by the runtime "contracts-rococo". +const CONTRACTS_ROCOCO_ED: contracts_rococo_runtime::Balance = + contracts_rococo_runtime::constants::currency::EXISTENTIAL_DEPOSIT; -pub fn canvas_rococo_development_config() -> CanvasKusamaChainSpec { +pub fn contracts_rococo_development_config() -> ContractsRococoChainSpec { let mut properties = sc_chain_spec::Properties::new(); properties.insert("tokenSymbol".into(), "ROC".into()); properties.insert("tokenDecimals".into(), 12.into()); - CanvasKusamaChainSpec::from_genesis( + ContractsRococoChainSpec::from_genesis( // Name - "Canvas on Rococo Development", + "Contracts on Rococo Development", // ID - "canvas-rococo-dev", + "contracts-rococo-dev", ChainType::Development, move || { - canvas_kusama_genesis( + contracts_rococo_genesis( // initial collators. vec![ ( get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), + get_collator_keys_from_seed::("Alice"), ), ( get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), + get_collator_keys_from_seed::("Bob"), ), ], vec![ @@ -884,7 +883,7 @@ pub fn canvas_rococo_development_config() -> CanvasKusamaChainSpec { get_account_id_from_seed::("Eve//stash"), get_account_id_from_seed::("Ferdie//stash"), ], - CANVAS_PARACHAIN_ID.into(), + CONTRACTS_PARACHAIN_ID.into(), ) }, Vec::new(), @@ -894,33 +893,33 @@ pub fn canvas_rococo_development_config() -> CanvasKusamaChainSpec { None, Extensions { relay_chain: "rococo-local".into(), // You MUST set this to the correct network! - para_id: CANVAS_PARACHAIN_ID, + para_id: CONTRACTS_PARACHAIN_ID, }, ) } -pub fn canvas_rococo_local_config() -> CanvasKusamaChainSpec { +pub fn contracts_rococo_local_config() -> ContractsRococoChainSpec { let mut properties = sc_chain_spec::Properties::new(); properties.insert("tokenSymbol".into(), "ROC".into()); properties.insert("tokenDecimals".into(), 12.into()); - CanvasKusamaChainSpec::from_genesis( + ContractsRococoChainSpec::from_genesis( // Name - "Canvas on Rococo", + "Contracts on Rococo", // ID - "canvas-rococo-local", + "contracts-rococo-local", ChainType::Local, move || { - canvas_kusama_genesis( + contracts_rococo_genesis( // initial collators. vec![ ( get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), + get_collator_keys_from_seed::("Alice"), ), ( get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), + get_collator_keys_from_seed::("Bob"), ), ], vec![ @@ -937,7 +936,7 @@ pub fn canvas_rococo_local_config() -> CanvasKusamaChainSpec { get_account_id_from_seed::("Eve//stash"), get_account_id_from_seed::("Ferdie//stash"), ], - CANVAS_PARACHAIN_ID.into(), + CONTRACTS_PARACHAIN_ID.into(), ) }, // Bootnodes @@ -953,25 +952,25 @@ pub fn canvas_rococo_local_config() -> CanvasKusamaChainSpec { // Extensions Extensions { relay_chain: "rococo-local".into(), // You MUST set this to the correct network! - para_id: CANVAS_PARACHAIN_ID, + para_id: CONTRACTS_PARACHAIN_ID, }, ) } -pub fn canvas_rococo_config() -> CanvasKusamaChainSpec { +pub fn contracts_rococo_config() -> ContractsRococoChainSpec { // Give your base currency a unit name and decimal places let mut properties = sc_chain_spec::Properties::new(); properties.insert("tokenSymbol".into(), "ROC".into()); properties.insert("tokenDecimals".into(), 12.into()); - CanvasKusamaChainSpec::from_genesis( + ContractsRococoChainSpec::from_genesis( // Name - "Canvas on Rococo", + "Contracts on Rococo", // ID - "canvas-rococo", + "contracts-rococo", ChainType::Live, move || { - canvas_kusama_genesis( + contracts_rococo_genesis( vec![ // 5GKFbTTgrVS4Vz1UWWHPqMZQNFWZtqo7H2KpCDyYhEL3aS26 ( @@ -1012,7 +1011,7 @@ pub fn canvas_rococo_config() -> CanvasKusamaChainSpec { // AccountId of an account which `ink-waterfall` uses for automated testing hex!["0e47e2344d523c3cc5c34394b0d58b9a4200e813a038e6c5a6163cc07d70b069"].into(), ], - CANVAS_PARACHAIN_ID.into(), + CONTRACTS_PARACHAIN_ID.into(), ) }, // Bootnodes @@ -1039,38 +1038,38 @@ pub fn canvas_rococo_config() -> CanvasKusamaChainSpec { // Properties Some(properties), // Extensions - Extensions { relay_chain: "rococo".into(), para_id: CANVAS_PARACHAIN_ID }, + Extensions { relay_chain: "rococo".into(), para_id: CONTRACTS_PARACHAIN_ID }, ) } -fn canvas_kusama_genesis( +fn contracts_rococo_genesis( invulnerables: Vec<(AccountId, AuraId)>, endowed_accounts: Vec, id: ParaId, -) -> canvas_kusama_runtime::GenesisConfig { - canvas_kusama_runtime::GenesisConfig { - system: canvas_kusama_runtime::SystemConfig { - code: canvas_kusama_runtime::WASM_BINARY +) -> contracts_rococo_runtime::GenesisConfig { + contracts_rococo_runtime::GenesisConfig { + system: contracts_rococo_runtime::SystemConfig { + code: contracts_rococo_runtime::WASM_BINARY .expect("WASM binary was not build, please build it!") .to_vec(), }, - balances: canvas_kusama_runtime::BalancesConfig { + balances: contracts_rococo_runtime::BalancesConfig { balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(), }, - parachain_info: canvas_kusama_runtime::ParachainInfoConfig { parachain_id: id }, - collator_selection: canvas_kusama_runtime::CollatorSelectionConfig { + parachain_info: contracts_rococo_runtime::ParachainInfoConfig { parachain_id: id }, + collator_selection: contracts_rococo_runtime::CollatorSelectionConfig { invulnerables: invulnerables.iter().cloned().map(|(acc, _)| acc).collect(), - candidacy_bond: CANVAS_KUSAMA_ED * 16, + candidacy_bond: CONTRACTS_ROCOCO_ED * 16, ..Default::default() }, - session: canvas_kusama_runtime::SessionConfig { + session: contracts_rococo_runtime::SessionConfig { keys: invulnerables .into_iter() .map(|(acc, aura)| { ( - acc.clone(), // account id - acc, // validator id - canvas_kusama_runtime::SessionKeys { aura }, // session keys + acc.clone(), // account id + acc, // validator id + contracts_rococo_runtime::SessionKeys { aura }, // session keys ) }) .collect(), @@ -1080,10 +1079,10 @@ fn canvas_kusama_genesis( aura: Default::default(), aura_ext: Default::default(), parachain_system: Default::default(), - polkadot_xcm: canvas_kusama_runtime::PolkadotXcmConfig { + polkadot_xcm: contracts_rococo_runtime::PolkadotXcmConfig { safe_xcm_version: Some(SAFE_XCM_VERSION), }, - sudo: canvas_kusama_runtime::SudoConfig { + sudo: contracts_rococo_runtime::SudoConfig { key: Some( hex!["2681a28014e7d3a5bfb32a003b3571f53c408acbc28d351d6bf58f5028c4ef14"].into(), ), diff --git a/polkadot-parachains/src/command.rs b/polkadot-parachains/src/command.rs index 7e259d9698..9836501fe1 100644 --- a/polkadot-parachains/src/command.rs +++ b/polkadot-parachains/src/command.rs @@ -46,7 +46,7 @@ trait IdentifyChain { fn is_statemint(&self) -> bool; fn is_statemine(&self) -> bool; fn is_westmint(&self) -> bool; - fn is_canvas_kusama(&self) -> bool; + fn is_contracts_rococo(&self) -> bool; } impl IdentifyChain for dyn sc_service::ChainSpec { @@ -65,9 +65,8 @@ impl IdentifyChain for dyn sc_service::ChainSpec { fn is_westmint(&self) -> bool { self.id().starts_with("westmint") } - fn is_canvas_kusama(&self) -> bool { - // we use the same runtime on rococo and kusama - self.id().starts_with("canvas-kusama") || self.id().starts_with("canvas-rococo") + fn is_contracts_rococo(&self) -> bool { + self.id().starts_with("contracts-rococo") } } @@ -87,8 +86,8 @@ impl IdentifyChain for T { fn is_westmint(&self) -> bool { ::is_westmint(self) } - fn is_canvas_kusama(&self) -> bool { - ::is_canvas_kusama(self) + fn is_contracts_rococo(&self) -> bool { + ::is_contracts_rococo(self) } } @@ -133,12 +132,12 @@ fn load_spec(id: &str) -> std::result::Result, St "westmint" => Box::new(chain_spec::ChainSpec::from_json_bytes( &include_bytes!("../res/westmint.json")[..], )?), - // -- Canvas on Rococo - "canvas-rococo-dev" => Box::new(chain_spec::canvas_rococo_development_config()), - "canvas-rococo-local" => Box::new(chain_spec::canvas_rococo_local_config()), - "canvas-rococo-genesis" => Box::new(chain_spec::canvas_rococo_config()), - "canvas-rococo" => Box::new(chain_spec::ChainSpec::from_json_bytes( - &include_bytes!("../res/canvas-rococo.json")[..], + // -- Contracts on Rococo + "contracts-rococo-dev" => Box::new(chain_spec::contracts_rococo_development_config()), + "contracts-rococo-local" => Box::new(chain_spec::contracts_rococo_local_config()), + "contracts-rococo-genesis" => Box::new(chain_spec::contracts_rococo_config()), + "contracts-rococo" => Box::new(chain_spec::ChainSpec::from_json_bytes( + &include_bytes!("../res/contracts-rococo.json")[..], )?), // -- Fallback (generic chainspec) "" => Box::new(chain_spec::get_chain_spec()), @@ -155,8 +154,8 @@ fn load_spec(id: &str) -> std::result::Result, St Box::new(chain_spec::ShellChainSpec::from_json_file(path.into())?) } else if chain_spec.is_seedling() { Box::new(chain_spec::SeedlingChainSpec::from_json_file(path.into())?) - } else if chain_spec.is_canvas_kusama() { - Box::new(chain_spec::CanvasKusamaChainSpec::from_json_file(path.into())?) + } else if chain_spec.is_contracts_rococo() { + Box::new(chain_spec::ContractsRococoChainSpec::from_json_file(path.into())?) } else { Box::new(chain_spec) } @@ -210,8 +209,8 @@ impl SubstrateCli for Cli { &shell_runtime::VERSION } else if chain_spec.is_seedling() { &seedling_runtime::VERSION - } else if chain_spec.is_canvas_kusama() { - &canvas_kusama_runtime::VERSION + } else if chain_spec.is_contracts_rococo() { + &contracts_rococo_runtime::VERSION } else { &rococo_parachain_runtime::VERSION } @@ -343,11 +342,11 @@ macro_rules! construct_async_run { let task_manager = $components.task_manager; { $( $code )* }.map(|v| (v, task_manager)) }) - } else if runner.config().chain_spec.is_canvas_kusama() { + } else if runner.config().chain_spec.is_contracts_rococo() { runner.async_run(|$config| { - let $components = new_partial::( + let $components = new_partial::( &$config, - crate::service::canvas_kusama_build_import_queue, + crate::service::contracts_rococo_build_import_queue, )?; let task_manager = $components.task_manager; { $( $code )* }.map(|v| (v, task_manager)) @@ -638,8 +637,8 @@ pub fn run() -> Result<()> { .await .map(|r| r.0) .map_err(Into::into) - } else if config.chain_spec.is_canvas_kusama() { - crate::service::start_canvas_kusama_node( + } else if config.chain_spec.is_contracts_rococo() { + crate::service::start_contracts_rococo_node( config, polkadot_config, collator_options, diff --git a/polkadot-parachains/src/rpc.rs b/polkadot-parachains/src/rpc.rs index 04671aa8ef..ef26b8595d 100644 --- a/polkadot-parachains/src/rpc.rs +++ b/polkadot-parachains/src/rpc.rs @@ -70,8 +70,8 @@ where Ok(module) } -/// Instantiate all RPCs we want at the canvas-kusama chain. -pub fn create_canvas_kusama( +/// Instantiate all RPCs we want at the contracts-rococo chain. +pub fn create_contracts_rococo( deps: FullDeps, ) -> Result> where diff --git a/polkadot-parachains/src/service.rs b/polkadot-parachains/src/service.rs index 09e8414256..38b23fac89 100644 --- a/polkadot-parachains/src/service.rs +++ b/polkadot-parachains/src/service.rs @@ -158,18 +158,18 @@ impl sc_executor::NativeExecutionDispatch for WestmintRuntimeExecutor { } } -/// Native Canvas on Kusama executor instance. -pub struct CanvasKusamaRuntimeExecutor; +/// Native Contracts on Rococo executor instance. +pub struct ContractsRococoRuntimeExecutor; -impl sc_executor::NativeExecutionDispatch for CanvasKusamaRuntimeExecutor { +impl sc_executor::NativeExecutionDispatch for ContractsRococoRuntimeExecutor { type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; fn dispatch(method: &str, data: &[u8]) -> Option> { - canvas_kusama_runtime::api::dispatch(method, data) + contracts_rococo_runtime::api::dispatch(method, data) } fn native_version() -> sc_executor::NativeVersion { - canvas_kusama_runtime::native_version() + contracts_rococo_runtime::native_version() } } @@ -1334,7 +1334,7 @@ where } #[sc_tracing::logging::prefix_logs_with("Parachain")] -async fn start_canvas_kusama_node_impl( +async fn start_contracts_rococo_node_impl( parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, @@ -1457,7 +1457,7 @@ where deny_unsafe, }; - crate::rpc::create_canvas_kusama(deps).map_err(Into::into) + crate::rpc::create_contracts_rococo(deps).map_err(Into::into) }) }; @@ -1545,15 +1545,17 @@ where } #[allow(clippy::type_complexity)] -pub fn canvas_kusama_build_import_queue( - client: Arc>>, +pub fn contracts_rococo_build_import_queue( + client: Arc< + TFullClient>, + >, config: &Configuration, telemetry: Option, task_manager: &TaskManager, ) -> Result< sc_consensus::DefaultImportQueue< Block, - TFullClient>, + TFullClient>, >, sc_service::Error, > { @@ -1590,7 +1592,7 @@ pub fn canvas_kusama_build_import_queue( } /// Start a parachain node. -pub async fn start_canvas_kusama_node( +pub async fn start_contracts_rococo_node( parachain_config: Configuration, polkadot_config: Configuration, collator_options: CollatorOptions, @@ -1598,15 +1600,15 @@ pub async fn start_canvas_kusama_node( hwbench: Option, ) -> sc_service::error::Result<( TaskManager, - Arc>>, + Arc>>, )> { - start_canvas_kusama_node_impl::( + start_contracts_rococo_node_impl::( parachain_config, polkadot_config, collator_options, id, |_| Ok(RpcModule::new(())), - canvas_kusama_build_import_queue, + contracts_rococo_build_import_queue, |client, prometheus_registry, telemetry, diff --git a/scripts/ci/changelog/bin/changelog b/scripts/ci/changelog/bin/changelog index 85044f8022..e9df4a4ca2 100755 --- a/scripts/ci/changelog/bin/changelog +++ b/scripts/ci/changelog/bin/changelog @@ -81,7 +81,7 @@ WESTMINT_DIGEST = ENV['WESTMINT_DIGEST'] || 'digests/westmint-srtool-digest.json STATEMINE_DIGEST = ENV['STATEMINE_DIGEST'] || 'digests/statemine-srtool-digest.json' STATEMINT_DIGEST = ENV['STATEMINT_DIGEST'] || 'digests/statemint-srtool-digest.json' ROCOCO_PARA_DIGEST = ENV['ROCOCO_PARA_DIGEST'] || 'digests/rococo-parachain-srtool-digest.json' -CANVAS_KUSAMA_DIGEST = ENV['CANVAS_KUSAMA_DIGEST'] || 'digests/canvas-kusama-srtool-digest.json' +CANVAS_KUSAMA_DIGEST = ENV['CANVAS_KUSAMA_DIGEST'] || 'digests/contracts-rococo-srtool-digest.json' logger.debug("Release type: #{ENV['RELEASE_TYPE']}") @@ -111,7 +111,7 @@ else --slurpfile srtool_statemine %s \ --slurpfile srtool_statemint %s \ --slurpfile srtool_rococo_parachain %s \ - --slurpfile srtool_canvas_kusama %s \ + --slurpfile srtool_contracts_rococo %s \ -n \'{ cumulus: $cumulus[0], substrate: $substrate[0], @@ -122,7 +122,7 @@ else { name: "westmint", data: $srtool_westmint[0] }, { name: "statemint", data: $srtool_statemint[0] }, { name: "statemine", data: $srtool_statemine[0] }, - { name: "canvas", data: $srtool_canvas_kusama[0] } + { name: "contracts", data: $srtool_contracts_rococo[0] } ] }\' > context.json', cumulus_data, substrate_data, polkadot_data, SHELL_DIGEST, WESTMINT_DIGEST,