* Update cargo.lock Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * parachain: Bump tokio dependency The tokio dependency is bumped to version 1.34. Ideally, we would use the workspace feature to pull in the tokio version. However, the parachain example is not part of the workspace, because it depends on non mutually exclusive feature flags. Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> * parachain: Bump tokio dependency to 1.35 Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> --------- Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
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.