Files
pezkuwi-subxt/examples/parachain-example/README.md
T
Tadeo Hepperle 8b23b2b83c Example: How to connect to parachain (#1043)
* parachain rpc lists

* guide almost done

* add the 3rd config

* subscribe to block with configs

* delete table file

* spaces instead of tabs

* remove original ajuna example

* zombienet setup

* nft minting example

* include port, use different names

* link the example from the book

* format book

* add config creation to book, simplify example structure

* fix the nft creation script

* fix doc ref

* fixing links to foreign crates

* fix table formatting

* include nits

* move more docs to book, and simplify parachain-example

* another pass over docs and link to exampels from guide

* nit: adjust comment to numbers

* teeny README fix for parachain-example

* fix command in readme

* add CI for examples and fix parachain-example bug I left in

* add target arch

* cargo fmt

* make CI not fail

* remove index from docs

---------

Co-authored-by: James Wilson <james@jsdw.me>
2023-07-21 13:55:48 +02:00

2.9 KiB

parachain-example

This example showcases working with Subxt and Zombienet to try out connecting to a locally deployed parachain, here "Statemint", also known as "Asset Hub".

Running the example

1. Install zombienet

Zombienet is a tool for quickly spinning up a (local) blockchain network. We will use it to start up a local Asset Hub for us.

Please follow the install guide in the zombienet github repo to install it.

2. polkadot

We need a relay chain. Build the polkadot binary from the polkadot github repo and install it in your path:

git clone https://github.com/paritytech/polkadot.git
cd polkadot
cargo install --path .

3. polkadot-parachain

The Asset Hub is part of the cumulus github repo, an SDK for developing parachains. Building the cumulus workspace produces a binary called polkadot-parachain which can be used to run Asset Hub nodes.

git clone https://github.com/paritytech/cumulus.git
cd cumulus
cargo install --path polkadot-parachain

4. Run the parachain locally

With these binaries installed, Zombienet can now get the parachain running locally from a configuration file, asset-hub-zombienet.toml in this case. We need to have at least 2 validator nodes running via the polkadot binary, and an Asset Hub node running via the polkadot-parachain binary. Zombienet starts these up, and gets the parachain registered with the validator nodes for us. To do that, run:

zombienet -p native spawn asset-hub-zombienet.toml

Zombienet uses Kubernetes by default, but we can use it without Kubernetes by providing the -p native flag.

You might have noticed that we use chain = "rococo-local" in the asset-hub-zombienet.toml file for the relay chain. This is just to make the epoch time shorter and should have no effect on your interactions with the parachain. Polkadot / Kusama / Rococo have different epoch times of 24h / 2h / 2min respectively.

5. Run the example

The parachain is only registered after the first epoch. So after the previous step, we need to wait 2 minutes until the parachain becomes interactive and produces blocks. At this point, we can run:

cargo run --bin parachain-example

To run our example code.

Dev notes

We can obtain the metadata for Statemint via the subxt cli tool, like so:

subxt metadata  --url wss://polkadot-asset-hub-rpc.polkadot.io:443 > statemint_metadata.scale

It is important to explicitly specify the port as 443.

One way to find a suitable URL to obtain this from is by looking through the sidebar on Polkadot.js to find the Asset Hub entry, and seeing which RPC node URLs it uses.