mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 10:31:03 +00:00
cumulus: add asset-hub-rococo runtime based on asset-hub-kusama and add asset-bridging support to it (#1215)
This commit adds Rococo Asset Hub dedicated runtime so we can test new features here, before merging them in Kusama Asset Hub. Also adds one such feature: asset transfer over bridge (Rococo AssetHub <> Wococo AssetHub) - clone `asset-hub-kusama-runtime` -> `asset-hub-rococo-runtime` - make it use Rococo primitives, names, assets, constants, etc - add asset-transfer-over-bridge support to Rococo AssetHub <> Wococo AssetHub Fixes #1128 --------- Co-authored-by: Branislav Kontur <bkontur@gmail.com> Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
- [Bridge-hub Parachains](#bridge-hub-parachains)
|
||||
- [Requirements for local run/testing](#requirements-for-local-runtesting)
|
||||
- [How to test local Rococo <-> Wococo bridge](#how-to-test-local-rococo---wococo-bridge)
|
||||
- [Run chains (Rococo + BridgeHub, Wococo + BridgeHub) with
|
||||
zombienet](#run-chains-rococo--bridgehub-wococo--bridgehub-with-zombienet)
|
||||
- [Run relayer (BridgeHubRococo, BridgeHubWococo)](#run-relayer-bridgehubrococo-bridgehubwococo)
|
||||
- [Run with script (alternative 1)](#run-with-script-alternative-1)
|
||||
- [Run with binary (alternative 2)](#run-with-binary-alternative-2)
|
||||
- [Send messages - transfer asset over bridge](#send-messages---transfer-asset-over-bridge)
|
||||
- [How to test live BridgeHubRococo/BridgeHubWococo](#how-to-test-live-bridgehubrococobridgehubwococo)
|
||||
- [Run Rococo/Wococo chains with zombienet](#run-rococowococo-chains-with-zombienet)
|
||||
- [Init bridge and run relayer between BridgeHubRococo and
|
||||
BridgeHubWococo](#init-bridge-and-run-relayer-between-bridgehubrococo-and-bridgehubwococo)
|
||||
- [Initialize configuration for transfer asset over bridge
|
||||
(ROCs/WOCs)](#initialize-configuration-for-transfer-asset-over-bridge-rocswocs)
|
||||
- [Send messages - transfer asset over bridge (ROCs/WOCs)](#send-messages---transfer-asset-over-bridge-rocswocs)
|
||||
- [Claim relayer's rewards on BridgeHubRococo and
|
||||
BridgeHubWococo](#claim-relayers-rewards-on-bridgehubrococo-and-bridgehubwococo)
|
||||
- [How to test local BridgeHubKusama/BridgeHubPolkadot](#how-to-test-local-bridgehubkusamabridgehubpolkadot)
|
||||
|
||||
# Bridge-hub Parachains
|
||||
@@ -42,17 +43,29 @@ Copy the apropriate binary (zombienet-linux) from the latest release to ~/local_
|
||||
|
||||
---
|
||||
# 2. Build polkadot binary
|
||||
git clone https://github.com/paritytech/polkadot.git
|
||||
cd polkadot
|
||||
|
||||
# if you want to test Kusama/Polkadot bridge, we need "sudo pallet + fast-runtime",
|
||||
# so please, find the latest polkadot's repository branch `it/release-vX.Y.Z-fast-sudo`
|
||||
# e.g:
|
||||
# git checkout -b it/release-v0.9.43-fast-sudo --track origin/it/release-v0.9.43-fast-sudo
|
||||
# If you want to test Kusama/Polkadot bridge, we need "sudo pallet + fast-runtime",
|
||||
# so we need to use sudofi in polkadot directory.
|
||||
#
|
||||
# Install sudofi: (skip if already installed)
|
||||
# cd <somewhere-outside-polkadot-sdk-git-repo-dir>
|
||||
# git clone https://github.com/paritytech/parachain-utils.git
|
||||
# cd parachain-utils # -> this is <parachain-utils-git-repo-dir>
|
||||
# cargo build --release --bin sudofi
|
||||
#
|
||||
# cd <polkadot-sdk-git-repo-dir>/polkadot
|
||||
# <parachain-utils-git-repo-dir>/target/release/sudofi
|
||||
|
||||
cargo build --release --features fast-runtime
|
||||
cd <polkadot-sdk-git-repo-dir>
|
||||
cargo build --release --features fast-runtime --bin polkadot
|
||||
cp target/release/polkadot ~/local_bridge_testing/bin/polkadot
|
||||
|
||||
cargo build --release --features fast-runtime --bin polkadot-prepare-worker
|
||||
cp target/release/polkadot-prepare-worker ~/local_bridge_testing/bin/polkadot-prepare-worker
|
||||
|
||||
cargo build --release --features fast-runtime --bin polkadot-execute-worker
|
||||
cp target/release/polkadot-execute-worker ~/local_bridge_testing/bin/polkadot-execute-worker
|
||||
|
||||
|
||||
---
|
||||
# 3. Build substrate-relay binary
|
||||
@@ -71,124 +84,48 @@ cp target/release/substrate-relay ~/local_bridge_testing/bin/substrate-relay
|
||||
|
||||
---
|
||||
# 4. Build cumulus polkadot-parachain binary
|
||||
cd <cumulus-git-repo-dir>
|
||||
cd <polkadot-sdk-git-repo-dir>
|
||||
|
||||
# checkout desired branch or use master:
|
||||
# git checkout -b master --track origin/master
|
||||
|
||||
cargo build --release --locked --bin polkadot-parachain
|
||||
cargo build --release -p polkadot-parachain-bin
|
||||
cp target/release/polkadot-parachain ~/local_bridge_testing/bin/polkadot-parachain
|
||||
cp target/release/polkadot-parachain ~/local_bridge_testing/bin/polkadot-parachain-asset-hub
|
||||
|
||||
|
||||
|
||||
# !!! READ HERE (TODO remove once all mentioned branches bellow are merged)
|
||||
# The use case "moving assets over bridge" is not merged yet and is implemented in separate branches.
|
||||
# So, if you want to try it, you need to checkout different branch and continue with these instructions there.
|
||||
|
||||
# For Kusama/Polkadot local bridge testing:
|
||||
#
|
||||
# build BridgeHubs (polkadot-parachain) from branch:
|
||||
# git checkout -b bridge-hub-kusama-polkadot --track origin/bridge-hub-kusama-polkadot
|
||||
# cargo build --release --locked --bin polkadot-parachain
|
||||
# cp target/release/polkadot-parachain ~/local_bridge_testing/bin/polkadot-parachain
|
||||
#
|
||||
# build AssetHubs (polkadot-parachain-asset-hub) from branch:
|
||||
# git checkout -b bko-transfer-asset-via-bridge-pallet-xcm --track origin/bko-transfer-asset-via-bridge-pallet-xcm
|
||||
# cargo build --release --locked --bin polkadot-parachain
|
||||
# cp target/release/polkadot-parachain ~/local_bridge_testing/bin/polkadot-parachain-asset-hub
|
||||
|
||||
# For Rococo/Wococo local bridge testing:
|
||||
#
|
||||
# build AssetHubs (polkadot-parachain-asset-hub) from branch:
|
||||
# git checkout -b bko-transfer-asset-via-bridge-pallet-xcm-ro-wo --track origin/bko-transfer-asset-via-bridge-pallet-xcm-ro-wo
|
||||
# cargo build --release --locked --bin polkadot-parachain
|
||||
# cp target/release/polkadot-parachain ~/local_bridge_testing/bin/polkadot-parachain-asset-hub
|
||||
```
|
||||
|
||||
|
||||
## How to test local Rococo <-> Wococo bridge
|
||||
|
||||
### Run chains (Rococo + BridgeHub + AssetHub, Wococo + BridgeHub + AssetHub) with zombienet
|
||||
### Run Rococo/Wococo chains with zombienet
|
||||
|
||||
```
|
||||
cd <polkadot-sdk-git-repo-dir>
|
||||
|
||||
# Rococo + BridgeHubRococo + AssetHub for Rococo (mirroring Kusama)
|
||||
POLKADOT_BINARY_PATH=~/local_bridge_testing/bin/polkadot \
|
||||
POLKADOT_PARACHAIN_BINARY_PATH=~/local_bridge_testing/bin/polkadot-parachain \
|
||||
POLKADOT_PARACHAIN_BINARY_PATH_FOR_ASSET_HUB_ROCOCO=~/local_bridge_testing/bin/polkadot-parachain-asset-hub \
|
||||
~/local_bridge_testing/bin/zombienet-linux --provider native spawn ./zombienet/bridge-hubs/bridge_hub_rococo_local_network.toml
|
||||
~/local_bridge_testing/bin/zombienet-linux --provider native spawn ./cumulus/zombienet/bridge-hubs/bridge_hub_rococo_local_network.toml
|
||||
```
|
||||
|
||||
```
|
||||
cd <polkadot-sdk-git-repo-dir>
|
||||
|
||||
# Wococo + BridgeHubWococo + AssetHub for Wococo (mirroring Polkadot)
|
||||
POLKADOT_BINARY_PATH=~/local_bridge_testing/bin/polkadot \
|
||||
POLKADOT_PARACHAIN_BINARY_PATH=~/local_bridge_testing/bin/polkadot-parachain \
|
||||
POLKADOT_PARACHAIN_BINARY_PATH_FOR_ASSET_HUB_WOCOCO=~/local_bridge_testing/bin/polkadot-parachain-asset-hub \
|
||||
~/local_bridge_testing/bin/zombienet-linux --provider native spawn ./zombienet/bridge-hubs/bridge_hub_wococo_local_network.toml
|
||||
~/local_bridge_testing/bin/zombienet-linux --provider native spawn ./cumulus/zombienet/bridge-hubs/bridge_hub_wococo_local_network.toml
|
||||
```
|
||||
|
||||
### Run relayer (BridgeHubRococo, BridgeHubWococo)
|
||||
### Init bridge and run relayer between BridgeHubRococo and BridgeHubWococo
|
||||
|
||||
**Accounts of BridgeHub parachains:**
|
||||
- `Bob` is pallet owner of all bridge pallets
|
||||
|
||||
#### Run with script (alternative 1)
|
||||
```
|
||||
cd <cumulus-git-repo-dir>
|
||||
./scripts/bridges_rococo_wococo.sh run-relay
|
||||
#### Run with script
|
||||
```
|
||||
cd <polkadot-sdk-git-repo-dir>
|
||||
|
||||
#### Run with binary (alternative 2)
|
||||
Need to wait for parachain activation (start producing blocks), then run:
|
||||
|
||||
```
|
||||
# 1. Init bridges:
|
||||
|
||||
# Rococo -> Wococo
|
||||
RUST_LOG=runtime=trace,rpc=trace,bridge=trace \
|
||||
~/local_bridge_testing/bin/substrate-relay init-bridge rococo-to-bridge-hub-wococo \
|
||||
--source-host localhost \
|
||||
--source-port 9942 \
|
||||
--source-version-mode Auto \
|
||||
--target-host localhost \
|
||||
--target-port 8945 \
|
||||
--target-version-mode Auto \
|
||||
--target-signer //Bob
|
||||
|
||||
# Wococo -> Rococo
|
||||
RUST_LOG=runtime=trace,rpc=trace,bridge=trace \
|
||||
~/local_bridge_testing/bin/substrate-relay init-bridge wococo-to-bridge-hub-rococo \
|
||||
--source-host localhost \
|
||||
--source-port 9945 \
|
||||
--source-version-mode Auto \
|
||||
--target-host localhost \
|
||||
--target-port 8943 \
|
||||
--target-version-mode Auto \
|
||||
--target-signer //Bob
|
||||
|
||||
# 2. Relay relay-chain headers, parachain headers and messages**
|
||||
RUST_LOG=runtime=trace,rpc=trace,bridge=trace \
|
||||
~/local_bridge_testing/bin/substrate-relay relay-headers-and-messages bridge-hub-rococo-bridge-hub-wococo \
|
||||
--rococo-host localhost \
|
||||
--rococo-port 9942 \
|
||||
--rococo-version-mode Auto \
|
||||
--bridge-hub-rococo-host localhost \
|
||||
--bridge-hub-rococo-port 8943 \
|
||||
--bridge-hub-rococo-version-mode Auto \
|
||||
--bridge-hub-rococo-signer //Charlie \
|
||||
--wococo-headers-to-bridge-hub-rococo-signer //Bob \
|
||||
--wococo-parachains-to-bridge-hub-rococo-signer //Bob \
|
||||
--bridge-hub-rococo-transactions-mortality 4 \
|
||||
--wococo-host localhost \
|
||||
--wococo-port 9945 \
|
||||
--wococo-version-mode Auto \
|
||||
--bridge-hub-wococo-host localhost \
|
||||
--bridge-hub-wococo-port 8945 \
|
||||
--bridge-hub-wococo-version-mode Auto \
|
||||
--bridge-hub-wococo-signer //Charlie \
|
||||
--rococo-headers-to-bridge-hub-wococo-signer //Bob \
|
||||
--rococo-parachains-to-bridge-hub-wococo-signer //Bob \
|
||||
--bridge-hub-wococo-transactions-mortality 4 \
|
||||
--lane 00000001
|
||||
./cumulus/scripts/bridges_rococo_wococo.sh run-relay
|
||||
```
|
||||
|
||||
**Check relay-chain headers relaying:**
|
||||
@@ -199,34 +136,66 @@ RUST_LOG=runtime=trace,rpc=trace,bridge=trace \
|
||||
|
||||
**Check parachain headers relaying:**
|
||||
- Rococo parachain: - https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A8943#/chainstate - Pallet:
|
||||
**bridgeWococoParachain** - Keys: **bestParaHeads()**
|
||||
**bridgeWococoParachain** - Keys: **parasInfo(None)**
|
||||
- Wococo parachain: - https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A8945#/chainstate - Pallet:
|
||||
**bridgeRococoParachain** - Keys: **bestParaHeads()**
|
||||
**bridgeRococoParachain** - Keys: **parasInfo(None)**
|
||||
|
||||
### Send messages - transfer asset over bridge
|
||||
### Initialize configuration for transfer asset over bridge (ROCs/WOCs)
|
||||
|
||||
TODO: see `# !!! READ HERE` above
|
||||
This initialization does several things:
|
||||
- creates `ForeignAssets` for wrappedROCs/wrappedWOCs
|
||||
- drips SA for AssetHubRococo on AssetHubWococo (and vice versa) which holds reserved assets on source chains
|
||||
```
|
||||
cd <polkadot-sdk-git-repo-dir>
|
||||
|
||||
## How to test live BridgeHubRococo/BridgeHubWococo
|
||||
(here is still deployed older PoC from branch `origin/bko-transfer-asset-via-bridge`, which uses custom extrinsic, which
|
||||
is going to be replaced by `pallet_xcm` usage)
|
||||
- uses account seed on Live Rococo:Rockmine2
|
||||
```
|
||||
cd <cumulus-git-repo-dir>
|
||||
./scripts/bridges_rococo_wococo.sh transfer-asset-from-asset-hub-rococo
|
||||
```
|
||||
./cumulus/scripts/bridges_rococo_wococo.sh init-asset-hub-rococo-local
|
||||
./cumulus/scripts/bridges_rococo_wococo.sh init-bridge-hub-rococo-local
|
||||
./cumulus/scripts/bridges_rococo_wococo.sh init-asset-hub-wococo-local
|
||||
./cumulus/scripts/bridges_rococo_wococo.sh init-bridge-hub-wococo-local
|
||||
```
|
||||
|
||||
- open explorers: - Rockmine2 (see events `xcmpQueue.XcmpMessageSent`, `bridgeTransfer.ReserveAssetsDeposited`,
|
||||
`bridgeTransfer.TransferInitiated`)
|
||||
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fws-rococo-rockmine2-collator-node-0.parity-testnet.parity.io#/explorer
|
||||
- BridgeHubRococo (see `bridgeWococoMessages.MessageAccepted`)
|
||||
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-bridge-hub-rpc.polkadot.io#/explorer - BridgeHubWococo (see
|
||||
`bridgeRococoMessages.MessagesReceived`)
|
||||
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fwococo-bridge-hub-rpc.polkadot.io#/explorer - Wockmint (see
|
||||
`xcmpQueue.Success` for `transfer-asset` and `xcmpQueue.Fail` for `ping-via-bridge`)
|
||||
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fwococo-wockmint-rpc.polkadot.io#/explorer - BridgeHubRococo (see
|
||||
`bridgeWococoMessages.MessagesDelivered`)
|
||||
### Send messages - transfer asset over bridge (ROCs/WOCs)
|
||||
|
||||
Do (asset) transfers:
|
||||
```
|
||||
cd <polkadot-sdk-git-repo-dir>
|
||||
|
||||
# ROCs from Rococo's Asset Hub to Wococo's.
|
||||
./cumulus/scripts/bridges_rococo_wococo.sh reserve-transfer-assets-from-asset-hub-rococo-local
|
||||
```
|
||||
```
|
||||
cd <polkadot-sdk-git-repo-dir>
|
||||
|
||||
# WOCs from Wococo's Asset Hub to Rococo's.
|
||||
./cumulus/scripts/bridges_rococo_wococo.sh reserve-transfer-assets-from-asset-hub-wococo-local
|
||||
```
|
||||
|
||||
- open explorers: (see zombienets)
|
||||
- AssetHubRococo (see events `xcmpQueue.XcmpMessageSent`, `polkadotXcm.Attempted`) https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:9910#/explorer
|
||||
- BridgeHubRococo (see `bridgeWococoMessages.MessageAccepted`) https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:8943#/explorer
|
||||
- BridgeHubWococo (see `bridgeRococoMessages.MessagesReceived`, `xcmpQueue.XcmpMessageSent`) https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:8945#/explorer
|
||||
- AssetHubWococo (see `foreignAssets.Issued`, `xcmpQueue.Success`) https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:9010#/explorer
|
||||
- BridgeHubRocococ (see `bridgeWococoMessages.MessagesDelivered`) https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:8943#/explorer
|
||||
|
||||
### Claim relayer's rewards on BridgeHubRococo and BridgeHubWococo
|
||||
|
||||
**Accounts of BridgeHub parachains:**
|
||||
- `//Charlie` is relayer account on BridgeHubRococo
|
||||
- `//Charlie` is relayer account on BridgeHubWococo
|
||||
|
||||
```
|
||||
cd <polkadot-sdk-git-repo-dir>
|
||||
|
||||
# Claim rewards on BridgeHubWococo:
|
||||
./cumulus/scripts/bridges_rococo_wococo.sh claim-rewards-bridge-hub-rococo-local
|
||||
|
||||
# Claim rewards on BridgeHubWococo:
|
||||
./cumulus/scripts/bridges_rococo_wococo.sh claim-rewards-bridge-hub-wococo-local
|
||||
```
|
||||
|
||||
- open explorers: (see zombienets)
|
||||
- BridgeHubRococo (see 2x `bridgeRelayers.RewardPaid`) https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:8943#/explorer
|
||||
- BridgeHubWococo (see 2x `bridgeRelayers.RewardPaid`) https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:8945#/explorer
|
||||
|
||||
## How to test local BridgeHubKusama/BridgeHubPolkadot
|
||||
|
||||
|
||||
Reference in New Issue
Block a user