Merge commit '392447f5c8f986ded2559a78457f4cd87942f393' into update-bridges-subtree-r/w

This commit is contained in:
antonio-dropulic
2021-12-01 09:46:14 +01:00
321 changed files with 28385 additions and 10466 deletions
+4 -2
View File
@@ -93,7 +93,7 @@ seeds for the `sr25519` keys. This seed may also be used in the signer argument
and PoA relays. Example:
```bash
./substrate-relay relay-headers RialtoToMillau \
./substrate-relay relay-headers rialto-to-millau \
--source-host rialto-node-alice \
--source-port 9944 \
--target-host millau-node-alice \
@@ -121,7 +121,9 @@ Following accounts are used when `rialto-millau` bridge is running:
- Millau's `Eve` signs relay transactions with message delivery confirmations (lane 00000001) from Rialto to Millau;
- Rialto's `Eve` signs relay transactions with messages (lane 00000001) from Millau to Rialto;
- Millau's `Ferdie` signs relay transactions with messages (lane 00000001) from Rialto to Millau;
- Rialto's `Ferdie` signs relay transactions with message delivery confirmations (lane 00000001) from Millau to Rialto.
- Rialto's `Ferdie` signs relay transactions with message delivery confirmations (lane 00000001) from Millau to Rialto;
- Millau's `RialtoMessagesOwner` signs relay transactions with updated Rialto -> Millau conversion rate;
- Rialto's `MillauMessagesOwner` signs relay transactions with updated Millau -> Rialto conversion rate.
Following accounts are used when `westend-millau` bridge is running:
@@ -1,7 +1,7 @@
#!/bin/bash
set -xeu
sleep 20
sleep 60
curl -v http://poa-node-arthur:8545/api/health
curl -v http://poa-node-bertha:8545/api/health
curl -v http://poa-node-carlos:8545/api/health
@@ -1,7 +1,7 @@
#!/bin/bash
set -xeu
sleep 20
sleep 60
curl -v http://rialto-node-bob:9933/health
curl -v http://poa-node-bertha:8545/api/health
@@ -1,7 +1,7 @@
#!/bin/bash
set -xeu
sleep 20
sleep 60
curl -v http://poa-node-arthur:8545/api/health
curl -v http://poa-node-bertha:8545/api/health
curl -v http://poa-node-carlos:8545/api/health
@@ -471,7 +471,7 @@
}
],
"executionErrorState": "alerting",
"for": "5m",
"for": "7m",
"frequency": "1m",
"handler": 1,
"name": "Messages from Millau to Rialto are not being delivered",
@@ -896,7 +896,7 @@
}
],
"executionErrorState": "alerting",
"for": "5m",
"for": "7m",
"frequency": "1m",
"handler": 1,
"name": "Messages (00000001) from Millau to Rialto are not being delivered",
@@ -967,8 +967,7 @@
"fill": true,
"line": true,
"op": "lt",
"value": 1,
"yaxis": "left"
"value": 1
}
],
"timeFrom": null,
@@ -1155,6 +1154,249 @@
"alignLevel": null
}
},
{
"alert": {
"alertRuleTags": {},
"conditions": [
{
"evaluator": {
"params": [
1
],
"type": "lt"
},
"operator": {
"type": "and"
},
"query": {
"params": [
"B",
"1m",
"now"
]
},
"reducer": {
"params": [],
"type": "max"
},
"type": "query"
}
],
"executionErrorState": "alerting",
"for": "5m",
"frequency": "1m",
"handler": 1,
"name": "Token swap messages from Millau to Rialto are not being delivered",
"noDataState": "no_data",
"notifications": []
},
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"custom": {},
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 11,
"w": 12,
"x": 0,
"y": 38
},
"hiddenSeries": false,
"id": 23,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"percentage": false,
"pluginVersion": "7.1.3",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"expr": "label_replace(label_replace(Millau_to_Rialto_MessageLane_73776170_lane_state_nonces{type=~\"source_latest_generated|target_latest_received\"}, \"type\", \"Latest message sent from Rialto\", \"type\", \"source_latest_generated\"), \"type\", \"Latest message received by Millau\", \"type\", \"target_latest_received\")",
"interval": "",
"legendFormat": "{{type}}",
"refId": "A"
},
{
"expr": "increase(Millau_to_Rialto_MessageLane_73776170_lane_state_nonces{type=\"target_latest_received\"}[20m])",
"hide": true,
"interval": "",
"legendFormat": "Messages generated in last 5 minutes",
"refId": "B"
}
],
"thresholds": [
{
"colorMode": "critical",
"fill": true,
"line": true,
"op": "lt",
"value": 1
}
],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Delivery race (73776170)",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"custom": {},
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 11,
"w": 12,
"x": 12,
"y": 38
},
"hiddenSeries": false,
"id": 24,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"percentage": false,
"pluginVersion": "7.1.3",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"expr": "label_replace(label_replace(Millau_to_Rialto_MessageLane_73776170_lane_state_nonces{type=~\"source_latest_confirmed|target_latest_received\"}, \"type\", \"Latest message confirmed by Rialto to Millau\", \"type\", \"source_latest_confirmed\"), \"type\", \"Latest message received by Millau\", \"type\", \"target_latest_received\")",
"interval": "",
"legendFormat": "{{type}}",
"refId": "A"
},
{
"expr": "increase(Millau_to_Rialto_MessageLane_73776170_lane_state_nonces{type=\"source_latest_confirmed\"}[10m])",
"hide": true,
"interval": "",
"legendFormat": "",
"refId": "B"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Confirmations race (73776170)",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"datasource": "Prometheus",
"fieldConfig": {
@@ -1181,7 +1423,7 @@
"h": 8,
"w": 8,
"x": 0,
"y": 38
"y": 49
},
"id": 16,
"options": {
@@ -1230,7 +1472,7 @@
"h": 8,
"w": 8,
"x": 8,
"y": 38
"y": 49
},
"hiddenSeries": false,
"id": 18,
@@ -1323,7 +1565,7 @@
"h": 8,
"w": 8,
"x": 16,
"y": 38
"y": 49
},
"hiddenSeries": false,
"id": 20,
@@ -462,7 +462,7 @@
}
],
"executionErrorState": "alerting",
"for": "5m",
"for": "7m",
"frequency": "1m",
"handler": 1,
"name": "Messages from Rialto to Millau are not being delivered",
@@ -887,7 +887,7 @@
}
],
"executionErrorState": "alerting",
"for": "5m",
"for": "7m",
"frequency": "1m",
"handler": 1,
"name": "Messages (00000001) from Rialto to Millau are not being delivered",
@@ -1,4 +1,4 @@
# Exposed ports: 10016, 10116, 10216, 10316, 10416
# Exposed ports: 10016, 10116, 10216, 10316, 10416, 10516, 10716
version: '3.5'
services:
@@ -52,6 +52,7 @@ services:
relay-messages-millau-to-rialto-generator:
<<: *sub-bridge-relay
environment:
RUST_LOG: bridge=trace
MSG_EXCHANGE_GEN_SECONDARY_LANE: "00000001"
entrypoint: /entrypoints/relay-messages-to-rialto-generator-entrypoint.sh
ports:
@@ -59,13 +60,24 @@ services:
depends_on:
- relay-millau-rialto
relay-messages-millau-to-rialto-resubmitter:
<<: *sub-bridge-relay
environment:
RUST_LOG: bridge=trace
entrypoint: /entrypoints/relay-messages-to-rialto-resubmitter-entrypoint.sh
ports:
- "10316:9616"
depends_on:
- relay-messages-millau-to-rialto-generator
relay-messages-rialto-to-millau-lane-00000001:
<<: *sub-bridge-relay
environment:
RUST_LOG: bridge=trace
MSG_EXCHANGE_GEN_LANE: "00000001"
entrypoint: /entrypoints/relay-messages-rialto-to-millau-entrypoint.sh
ports:
- "10316:9616"
- "10416:9616"
depends_on:
- relay-millau-rialto
@@ -75,7 +87,15 @@ services:
MSG_EXCHANGE_GEN_SECONDARY_LANE: "00000001"
entrypoint: /entrypoints/relay-messages-to-millau-generator-entrypoint.sh
ports:
- "10416:9616"
- "10516:9616"
depends_on:
- relay-millau-rialto
relay-token-swap-generator:
<<: *sub-bridge-relay
entrypoint: /entrypoints/relay-token-swap-generator-entrypoint.sh
ports:
- "10716:9616"
depends_on:
- relay-millau-rialto
@@ -1,13 +1,13 @@
#!/bin/bash
set -xeu
sleep 20
sleep 60
curl -v http://millau-node-bob:9933/health
curl -v http://rialto-node-bob:9933/health
MESSAGE_LANE=${MSG_EXCHANGE_GEN_LANE:-00000000}
/home/user/substrate-relay relay-messages MillauToRialto \
/home/user/substrate-relay relay-messages millau-to-rialto \
--lane $MESSAGE_LANE \
--source-host millau-node-bob \
--source-port 9944 \
@@ -1,13 +1,13 @@
#!/bin/bash
set -xeu
sleep 20
sleep 60
curl -v http://millau-node-bob:9933/health
curl -v http://rialto-node-bob:9933/health
MESSAGE_LANE=${MSG_EXCHANGE_GEN_LANE:-00000000}
/home/user/substrate-relay relay-messages RialtoToMillau \
/home/user/substrate-relay relay-messages rialto-to-millau \
--lane $MESSAGE_LANE \
--source-host rialto-node-bob \
--source-port 9944 \
@@ -14,7 +14,7 @@ SECONDARY_MESSAGE_LANE=${MSG_EXCHANGE_GEN_SECONDARY_LANE}
MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE=1024
FERDIE_ADDR=5oSLwptwgySxh5vz1HdvznQJjbQVgwYSvHEpYYeTXu1Ei8j7
SHARED_CMD="/home/user/substrate-relay send-message RialtoToMillau"
SHARED_CMD="/home/user/substrate-relay send-message rialto-to-millau"
SHARED_HOST="--source-host rialto-node-bob --source-port 9944"
DAVE_SIGNER="--source-signer //Dave --target-signer //Dave"
@@ -25,6 +25,8 @@ rand_sleep() {
SUBMIT_DELAY_S=`shuf -i 0-$MAX_SUBMIT_DELAY_S -n 1`
echo "Sleeping $SUBMIT_DELAY_S seconds..."
sleep $SUBMIT_DELAY_S
NOW=`date "+%Y-%m-%d %H:%M:%S"`
echo "Woke up at $NOW"
}
# start sending large messages immediately
@@ -32,6 +34,10 @@ LARGE_MESSAGES_TIME=0
# start sending message packs in a hour
BUNCH_OF_MESSAGES_TIME=3600
# give conversion rate updater some time to update Millau->Rialto conversion rate in Rialto
# (initially rate=1 and rational relayer won't deliver any messages if it'll be changed to larger value)
sleep 180
while true
do
rand_sleep
@@ -46,6 +52,7 @@ do
$SEND_MESSAGE \
--lane $SECONDARY_MESSAGE_LANE \
--origin Target \
--dispatch-fee-payment at-target-chain \
remark
fi
@@ -14,7 +14,7 @@ SECONDARY_MESSAGE_LANE=${MSG_EXCHANGE_GEN_SECONDARY_LANE}
MAX_UNCONFIRMED_MESSAGES_AT_INBOUND_LANE=128
FERDIE_ADDR=6ztG3jPnJTwgZnnYsgCDXbbQVR82M96hBZtPvkN56A9668ZC
SHARED_CMD=" /home/user/substrate-relay send-message MillauToRialto"
SHARED_CMD=" /home/user/substrate-relay send-message millau-to-rialto"
SHARED_HOST="--source-host millau-node-bob --source-port 9944"
DAVE_SIGNER="--target-signer //Dave --source-signer //Dave"
@@ -25,6 +25,8 @@ rand_sleep() {
SUBMIT_DELAY_S=`shuf -i 0-$MAX_SUBMIT_DELAY_S -n 1`
echo "Sleeping $SUBMIT_DELAY_S seconds..."
sleep $SUBMIT_DELAY_S
NOW=`date "+%Y-%m-%d %H:%M:%S"`
echo "Woke up at $NOW"
}
# start sending large messages immediately
@@ -32,6 +34,10 @@ LARGE_MESSAGES_TIME=0
# start sending message packs in a hour
BUNCH_OF_MESSAGES_TIME=3600
# give conversion rate updater some time to update Rialto->Millau conversion rate in Millau
# (initially rate=1 and rational relayer won't deliver any messages if it'll be changed to larger value)
sleep 180
while true
do
rand_sleep
@@ -46,6 +52,7 @@ do
$SEND_MESSAGE \
--lane $SECONDARY_MESSAGE_LANE \
--origin Target \
--dispatch-fee-payment at-target-chain \
remark
fi
@@ -0,0 +1,26 @@
#!/bin/bash
set -xeu
sleep 20
curl -v http://millau-node-alice:9933/health
# //Dave is signing Millau -> Rialto message-send transactions, which are causing problems.
#
# When large message is being sent from Millau to Rialto AND other transactions are
# blocking it from being mined, we'll see something like this in logs:
#
# Millau transaction priority with tip=0: 17800827994. Target priority:
# 526186677695
#
# So since fee multiplier in Millau is `1` and `WeightToFee` is `IdentityFee`, then
# we need tip around `526186677695 - 17800827994 = 508_385_849_701`. Let's round it
# up to `1_000_000_000_000`.
/home/user/substrate-relay resubmit-transactions millau \
--target-host millau-node-alice \
--target-port 9944 \
--target-signer //Dave \
--stalled-blocks 5 \
--tip-limit 1000000000000 \
--tip-step 1000000000 \
make-it-best-transaction
@@ -1,18 +1,18 @@
#!/bin/bash
set -xeu
sleep 20
sleep 60
curl -v http://millau-node-alice:9933/health
curl -v http://rialto-node-alice:9933/health
/home/user/substrate-relay init-bridge MillauToRialto \
/home/user/substrate-relay init-bridge millau-to-rialto \
--source-host millau-node-alice \
--source-port 9944 \
--target-host rialto-node-alice \
--target-port 9944 \
--target-signer //Alice
/home/user/substrate-relay init-bridge RialtoToMillau \
/home/user/substrate-relay init-bridge rialto-to-millau \
--source-host rialto-node-alice \
--source-port 9944 \
--target-host millau-node-alice \
@@ -26,8 +26,11 @@ sleep 6
--millau-host millau-node-alice \
--millau-port 9944 \
--millau-signer //Charlie \
--millau-messages-pallet-owner=//RialtoMessagesOwner \
--rialto-host rialto-node-alice \
--rialto-port 9944 \
--rialto-signer //Charlie \
--rialto-messages-pallet-owner=//MillauMessagesOwner \
--lane=00000000 \
--lane=73776170 \
--prometheus-host=0.0.0.0
@@ -0,0 +1,47 @@
#!/bin/bash
# THIS SCRIPT IS NOT INTENDED FOR USE IN PRODUCTION ENVIRONMENT
#
# This scripts periodically calls the Substrate relay binary to generate messages. These messages
# are sent from the Millau network to the Rialto network.
set -eu
# Max delay before submitting transactions (s)
MAX_SUBMIT_DELAY_S=60
SOURCE_HOST=millau-node-charlie
SOURCE_PORT=9944
TARGET_HOST=rialto-node-charlie
TARGET_PORT=9944
# Sleep a bit between messages
rand_sleep() {
SUBMIT_DELAY_S=`shuf -i 0-$MAX_SUBMIT_DELAY_S -n 1`
echo "Sleeping $SUBMIT_DELAY_S seconds..."
sleep $SUBMIT_DELAY_S
NOW=`date "+%Y-%m-%d %H:%M:%S"`
echo "Woke up at $NOW"
}
# give conversion rate updater some time to update Rialto->Millau conversion rate in Millau
# (initially rate=1 and rational relayer won't deliver any messages if it'll be changed to larger value)
sleep 180
while true
do
rand_sleep
echo "Initiating token-swap between Rialto and Millau"
/home/user/substrate-relay \
swap-tokens \
millau-to-rialto \
--source-host $SOURCE_HOST \
--source-port $SOURCE_PORT \
--source-signer //WithRialtoTokenSwap \
--source-balance 100000 \
--target-host $TARGET_HOST \
--target-port $TARGET_PORT \
--target-signer //WithMillauTokenSwap \
--target-balance 200000 \
lock-until-block \
--blocks-before-expire 32
done
@@ -24,7 +24,7 @@
{
"evaluator": {
"params": [
5
32
],
"type": "gt"
},
@@ -46,11 +46,11 @@
}
],
"executionErrorState": "alerting",
"for": "5m",
"for": "60m",
"frequency": "5m",
"handler": 1,
"message": "",
"name": "Synced Header Difference is Over 5 (Westend to Millau)",
"name": "Synced Header Difference is Over 32 (Westend to Millau)",
"noDataState": "no_data",
"notifications": []
},
@@ -163,7 +163,7 @@
{
"evaluator": {
"params": [
5
32
],
"type": "lt"
},
@@ -185,7 +185,7 @@
}
],
"executionErrorState": "alerting",
"for": "3m",
"for": "60m",
"frequency": "5m",
"handler": 1,
"name": "No New Headers (Westend to Millau)",
@@ -237,9 +237,9 @@
"steppedLine": false,
"targets": [
{
"expr": "max_over_time(Westend_to_Millau_Sync_best_block_numbers{node=\"source\"}[2m])-min_over_time(Westend_to_Millau_Sync_best_block_numbers{node=\"source\"}[2m])",
"expr": "max_over_time(Westend_to_Millau_Sync_best_block_numbers{node=\"source\"}[10m])-min_over_time(Westend_to_Millau_Sync_best_block_numbers{node=\"source\"}[10m])",
"interval": "",
"legendFormat": "Number of new Headers on Westend (Last 2 Mins)",
"legendFormat": "Number of new Headers on Westend (Last 10 Mins)",
"refId": "A"
}
],
@@ -1,11 +1,11 @@
#!/bin/bash
set -xeu
sleep 20
sleep 60
curl -v http://millau-node-alice:9933/health
curl -v https://westend-rpc.polkadot.io:443/health
/home/user/substrate-relay init-bridge WestendToMillau \
/home/user/substrate-relay init-bridge westend-to-millau \
--source-host westend-rpc.polkadot.io \
--source-port 443 \
--source-secure \
@@ -15,11 +15,12 @@ curl -v https://westend-rpc.polkadot.io:443/health
# Give chain a little bit of time to process initialization transaction
sleep 6
/home/user/substrate-relay relay-headers WestendToMillau \
/home/user/substrate-relay relay-headers westend-to-millau \
--source-host westend-rpc.polkadot.io \
--source-port 443 \
--source-secure \
--target-host millau-node-alice \
--target-port 9944 \
--target-signer //George \
--target-transactions-mortality=4\
--prometheus-host=0.0.0.0
@@ -8,14 +8,14 @@
set -xeu
RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay init-bridge RococoToWococo \
RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay init-bridge rococo-to-wococo \
--source-host 127.0.0.1 \
--source-port 9955 \
--target-host 127.0.0.1 \
--target-port 9944 \
--target-signer //Alice
RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay relay-headers RococoToWococo \
RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay relay-headers rococo-to-wococo \
--source-host 127.0.0.1 \
--source-port 9955 \
--target-host 127.0.0.1 \
@@ -8,14 +8,14 @@
set -xeu
RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay init-bridge WococoToRococo \
RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay init-bridge wococo-to-rococo \
--source-host 127.0.0.1 \
--source-port 9944 \
--target-host 127.0.0.1 \
--target-port 9955 \
--target-signer //Alice
RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay relay-headers WococoToRococo \
RUST_LOG=rpc=trace,bridge=trace ./target/debug/substrate-relay relay-headers wococo-to-rococo \
--source-host 127.0.0.1 \
--source-port 9944 \
--target-host 127.0.0.1 \
@@ -9,7 +9,7 @@ MILLAU_PORT="${MILLAU_PORT:-9945}"
RIALTO_PORT="${RIALTO_PORT:-9944}"
RUST_LOG=bridge=debug \
./target/debug/substrate-relay relay-messages MillauToRialto \
./target/debug/substrate-relay relay-messages millau-to-rialto \
--lane 00000000 \
--source-host localhost \
--source-port $MILLAU_PORT \
@@ -9,7 +9,7 @@ MILLAU_PORT="${MILLAU_PORT:-9945}"
RIALTO_PORT="${RIALTO_PORT:-9944}"
RUST_LOG=bridge=debug \
./target/debug/substrate-relay relay-messages RialtoToMillau \
./target/debug/substrate-relay relay-messages rialto-to-millau \
--lane 00000000 \
--source-host localhost \
--source-port $RIALTO_PORT \
@@ -9,7 +9,7 @@ MILLAU_PORT="${MILLAU_PORT:-9945}"
RIALTO_PORT="${RIALTO_PORT:-9944}"
RUST_LOG=bridge=debug \
./target/debug/substrate-relay init-bridge MillauToRialto \
./target/debug/substrate-relay init-bridge millau-to-rialto \
--source-host localhost \
--source-port $MILLAU_PORT \
--target-host localhost \
@@ -18,7 +18,7 @@ RUST_LOG=bridge=debug \
sleep 5
RUST_LOG=bridge=debug \
./target/debug/substrate-relay relay-headers MillauToRialto \
./target/debug/substrate-relay relay-headers millau-to-rialto \
--source-host localhost \
--source-port $MILLAU_PORT \
--target-host localhost \
@@ -9,7 +9,7 @@ MILLAU_PORT="${MILLAU_PORT:-9945}"
RIALTO_PORT="${RIALTO_PORT:-9944}"
RUST_LOG=bridge=debug \
./target/debug/substrate-relay init-bridge RialtoToMillau \
./target/debug/substrate-relay init-bridge rialto-to-millau \
--target-host localhost \
--target-port $MILLAU_PORT \
--source-host localhost \
@@ -18,7 +18,7 @@ RUST_LOG=bridge=debug \
sleep 5
RUST_LOG=bridge=debug \
./target/debug/substrate-relay relay-headers RialtoToMillau \
./target/debug/substrate-relay relay-headers rialto-to-millau \
--target-host localhost \
--target-port $MILLAU_PORT \
--source-host localhost \
@@ -0,0 +1,14 @@
#!/bin/bash
set -xeu
/home/user/rialto-bridge-node build-spec \
--chain local \
--raw \
--disable-default-bootnode \
> /rialto-share/rialto-relaychain-spec-raw.json
# we're using local driver + tmpfs for shared `/rialto-share` volume, which is populated
# by the container running this script. If this script ends, the volume will be detached
# and our chain spec will be lost when it'll go online again. Hence the never-ending
# script which keeps volume online until container is stopped.
tail -f /dev/null
@@ -0,0 +1,13 @@
#!/bin/bash
set -xeu
sleep 60
curl -v http://rialto-node-alice:9933/health
curl -v http://rialto-parachain-collator-alice:9933/health
/home/user/substrate-relay register-parachain rialto-parachain \
--parachain-host rialto-parachain-collator-alice \
--parachain-port 9944 \
--relaychain-host rialto-node-alice \
--relaychain-port 9944 \
--relaychain-signer //Alice
@@ -20,7 +20,7 @@ services:
- --unsafe-rpc-external
- --unsafe-ws-external
environment:
RUST_LOG: runtime=trace,rpc=debug,txpool=trace,runtime::bridge=trace
RUST_LOG: runtime=trace,rpc=debug,txpool=trace,runtime::bridge=trace,sc_basic_authorship=trace
ports:
- "19933:9933"
- "19944:9944"
@@ -0,0 +1,90 @@
# Compose file for quickly spinning up a local instance of the Rialto Parachain network.
#
# Since Rialto Parachain is unusable without Rialto, this file depends on some Rialto
# network nodes.
version: '3.5'
services:
rialto-parachain-collator-alice: &rialto-parachain-collator
image: paritytech/rialto-parachain-collator
entrypoint: >
/home/user/rialto-parachain-collator
--alice
--collator
--force-authoring
--parachain-id 2000
--rpc-port 9933
--ws-port 9944
--rpc-cors=all
--unsafe-rpc-external
--unsafe-ws-external
--
--execution wasm
--chain /rialto-share/rialto-relaychain-spec-raw.json
--rpc-port 9934
--ws-port 9945
volumes:
- rialto-share:/rialto-share:z
environment:
RUST_LOG: runtime=trace,rpc=trace,txpool=trace,parachain=trace,parity_ws=trace
depends_on:
- rialto-chainspec-exporter
ports:
- "20433:9933"
- "20444:9944"
rialto-parachain-collator-bob:
<<: *rialto-parachain-collator
entrypoint: >
/home/user/rialto-parachain-collator
--bob
--collator
--force-authoring
--parachain-id 2000
--rpc-port 9933
--ws-port 9944
--rpc-cors=all
--unsafe-rpc-external
--unsafe-ws-external
--
--execution wasm
--chain /rialto-share/rialto-relaychain-spec-raw.json
--rpc-port 9934
--ws-port 9945
ports:
- "20533:9933"
- "20544:9944"
rialto-parachain-collator-charlie:
<<: *rialto-parachain-collator
entrypoint: >
/home/user/rialto-parachain-collator
--charlie
--collator
--force-authoring
--parachain-id 2000
--rpc-port 9933
--ws-port 9944
--rpc-cors=all
--unsafe-rpc-external
--unsafe-ws-external
--
--execution wasm
--chain /rialto-share/rialto-relaychain-spec-raw.json
--rpc-port 9934
--ws-port 9945
ports:
- "20633:9933"
- "20644:9944"
rialto-parachain-registrar:
image: paritytech/substrate-relay
entrypoint: /entrypoints/rialto-parachain-registrar-entrypoint.sh
volumes:
- ./networks/entrypoints:/entrypoints
- rialto-share:/rialto-share:z
environment:
RUST_LOG: bridge=trace
depends_on:
- rialto-node-alice
- rialto-parachain-collator-alice
@@ -85,3 +85,20 @@ services:
ports:
- "10333:9933"
- "10344:9944"
rialto-chainspec-exporter:
image: paritytech/rialto-bridge-node
entrypoint: /entrypoints/rialto-chainspec-exporter-entrypoint.sh
volumes:
- ./networks/entrypoints:/entrypoints
- rialto-share:/rialto-share:z
# we're using `/rialto-share` to expose Rialto chain spec to those who are interested. Right
# now it is Rialto Parachain collator nodes. Local + tmpfs combination allows sharing writable
# in-memory volumes, which are dropped when containers are stopped.
volumes:
rialto-share:
driver: local
driver_opts:
type: "tmpfs"
device: "tmpfs"
+9 -2
View File
@@ -36,16 +36,18 @@ function show_help () {
echo " "
echo "Options:"
echo " --no-monitoring Disable monitoring"
echo " --no-ui Disable UI"
echo " "
echo "You can start multiple bridges at once by passing several bridge names:"
echo " ./run.sh poa-rialto rialto-millau westend-millau [stop|update]"
exit 1
}
RIALTO=' -f ./networks/rialto.yml'
RIALTO=' -f ./networks/rialto.yml -f ./networks/rialto-parachain.yml'
MILLAU=' -f ./networks/millau.yml'
ETH_POA=' -f ./networks/eth-poa.yml'
MONITORING=' -f ./monitoring/docker-compose.yml'
UI=' -f ./ui/docker-compose.yml'
BRIDGES=()
NETWORKS=''
@@ -58,6 +60,11 @@ do
shift
continue
;;
--no-ui)
UI=""
shift
continue
;;
poa-rialto)
BRIDGES+=($i)
NETWORKS+=${RIALTO}
@@ -94,7 +101,7 @@ if [ ${#BRIDGES[@]} -eq 0 ]; then
show_help "Missing bridge name."
fi
COMPOSE_FILES=$NETWORKS$MONITORING
COMPOSE_FILES=$NETWORKS$MONITORING$UI
# Compose looks for .env files in the the current directory by default, we don't want that
COMPOSE_ARGS="--project-directory ."
@@ -1,5 +1,7 @@
{
"--1": "Millau Types",
"MillauAddress": "AccountId",
"MillauLookupSource": "AccountId",
"MillauBalance": "u64",
"MillauBlockHash": "H512",
"MillauBlockNumber": "u64",
@@ -25,6 +27,8 @@
}
},
"--2": "Rialto Types",
"RialtoAddress": "MultiAddress",
"RialtoLookupSource": "MultiAddress",
"RialtoBalance": "u128",
"RialtoBlockHash": "H256",
"RialtoBlockNumber": "u32",
@@ -50,8 +54,6 @@
}
},
"--3": "Common types",
"Address": "AccountId",
"LookupSource": "AccountId",
"AccountSigner": "MultiSigner",
"SpecVersion": "u32",
"RelayerId": "AccountId",
@@ -70,7 +72,7 @@
"ChainId": "Id",
"LaneId": "Id",
"MessageNonce": "u64",
"MessageId": "(Id, u64)",
"BridgeMessageId": "(Id, u64)",
"MessageKey": {
"lane_id": "LaneId",
"nonce:": "MessageNonce"
@@ -90,9 +92,9 @@
"dispatch_results": "BitVec"
},
"OutboundLaneData": {
"latest_generated_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce",
"latest_received_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce"
"latest_generated_nonce": "MessageNonce"
},
"MessageData": {
"payload": "MessagePayload",
@@ -172,6 +174,8 @@
"commit": "Commit",
"votes_ancestries": "Vec<BridgedHeader>"
},
"Address": "MillauAddress",
"LookupSource": "MillauLookupSource",
"Fee": "MillauBalance",
"Balance": "MillauBalance",
"Hash": "MillauBlockHash",
+11 -6
View File
@@ -1,5 +1,7 @@
{
"--1": "Millau Types",
"MillauAddress": "AccountId",
"MillauLookupSource": "AccountId",
"MillauBalance": "u64",
"MillauBlockHash": "H512",
"MillauBlockNumber": "u64",
@@ -25,6 +27,8 @@
}
},
"--2": "Rialto Types",
"RialtoAddress": "MultiAddress",
"RialtoLookupSource": "MultiAddress",
"RialtoBalance": "u128",
"RialtoBlockHash": "H256",
"RialtoBlockNumber": "u32",
@@ -50,8 +54,6 @@
}
},
"--3": "Common types",
"Address": "AccountId",
"LookupSource": "AccountId",
"AccountSigner": "MultiSigner",
"SpecVersion": "u32",
"RelayerId": "AccountId",
@@ -70,7 +72,7 @@
"ChainId": "Id",
"LaneId": "Id",
"MessageNonce": "u64",
"MessageId": "(Id, u64)",
"BridgeMessageId": "(Id, u64)",
"MessageKey": {
"lane_id": "LaneId",
"nonce:": "MessageNonce"
@@ -90,9 +92,9 @@
"dispatch_results": "BitVec"
},
"OutboundLaneData": {
"latest_generated_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce",
"latest_received_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce"
"latest_generated_nonce": "MessageNonce"
},
"MessageData": {
"payload": "MessagePayload",
@@ -172,6 +174,8 @@
"commit": "Commit",
"votes_ancestries": "Vec<BridgedHeader>"
},
"Address": "RialtoAddress",
"LookupSource": "RialtoLookupSource",
"Fee": "RialtoBalance",
"Balance": "RialtoBalance",
"BlockHash": "RialtoBlockHash",
@@ -183,5 +187,6 @@
"_enum": {
"RialtoToMillauConversionRate": "u128"
}
}
},
"ValidationCodeHash": "H256"
}
@@ -1,17 +1,19 @@
{
"--1": "Rococo Types",
"RococoAddress": "AccountId",
"RococoLookupSource": "AccountId",
"RococoBalance": "u128",
"RococoBlockHash": "H256",
"RococoBlockNumber": "u32",
"RococoHeader": "Header",
"--2": "Wococo Types",
"WococoAddress": "AccountId",
"WococoLookupSource": "AccountId",
"WococoBalance": "RococoBalance",
"WococoBlockHash": "RococoBlockHash",
"WococoBlockNumber": "RococoBlockNumber",
"WococoHeader": "RococoHeader",
"--3": "Common types",
"Address": "AccountId",
"LookupSource": "AccountId",
"AccountSigner": "MultiSigner",
"SpecVersion": "u32",
"RelayerId": "AccountId",
@@ -30,7 +32,7 @@
"ChainId": "Id",
"LaneId": "Id",
"MessageNonce": "u64",
"MessageId": "(Id, u64)",
"BridgeMessageId": "(Id, u64)",
"MessageKey": {
"lane_id": "LaneId",
"nonce:": "MessageNonce"
@@ -50,9 +52,9 @@
"dispatch_results": "BitVec"
},
"OutboundLaneData": {
"latest_generated_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce",
"latest_received_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce"
"latest_generated_nonce": "MessageNonce"
},
"MessageData": {
"payload": "MessagePayload",
@@ -132,6 +134,8 @@
"commit": "Commit",
"votes_ancestries": "Vec<BridgedHeader>"
},
"Address": "RococoAddress",
"LookupSource": "RococoLookupSource",
"Fee": "RococoBalance",
"Balance": "RococoBalance",
"BlockHash": "RococoBlockHash",
@@ -1,17 +1,19 @@
{
"--1": "Rococo Types",
"RococoAddress": "AccountId",
"RococoLookupSource": "AccountId",
"RococoBalance": "u128",
"RococoBlockHash": "H256",
"RococoBlockNumber": "u32",
"RococoHeader": "Header",
"--2": "Wococo Types",
"WococoAddress": "AccountId",
"WococoLookupSource": "AccountId",
"WococoBalance": "RococoBalance",
"WococoBlockHash": "RococoBlockHash",
"WococoBlockNumber": "RococoBlockNumber",
"WococoHeader": "RococoHeader",
"--3": "Common types",
"Address": "AccountId",
"LookupSource": "AccountId",
"AccountSigner": "MultiSigner",
"SpecVersion": "u32",
"RelayerId": "AccountId",
@@ -30,7 +32,7 @@
"ChainId": "Id",
"LaneId": "Id",
"MessageNonce": "u64",
"MessageId": "(Id, u64)",
"BridgeMessageId": "(Id, u64)",
"MessageKey": {
"lane_id": "LaneId",
"nonce:": "MessageNonce"
@@ -50,9 +52,9 @@
"dispatch_results": "BitVec"
},
"OutboundLaneData": {
"latest_generated_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce",
"latest_received_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce"
"latest_generated_nonce": "MessageNonce"
},
"MessageData": {
"payload": "MessagePayload",
@@ -132,6 +134,8 @@
"commit": "Commit",
"votes_ancestries": "Vec<BridgedHeader>"
},
"Address": "WococoAddress",
"LookupSource": "WococoLookupSource",
"Fee": "WococoBalance",
"Balance": "WococoBalance",
"Hash": "WococoBlockHash",
@@ -1,7 +1,5 @@
{
"--3": "Common types",
"Address": "AccountId",
"LookupSource": "AccountId",
"AccountSigner": "MultiSigner",
"SpecVersion": "u32",
"RelayerId": "AccountId",
@@ -20,7 +18,7 @@
"ChainId": "Id",
"LaneId": "Id",
"MessageNonce": "u64",
"MessageId": "(Id, u64)",
"BridgeMessageId": "(Id, u64)",
"MessageKey": {
"lane_id": "LaneId",
"nonce:": "MessageNonce"
@@ -40,9 +38,10 @@
"dispatch_results": "BitVec"
},
"OutboundLaneData": {
"latest_generated_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce",
"latest_received_nonce": "MessageNonce",
"oldest_unpruned_nonce": "MessageNonce"
"latest_generated_nonce": "MessageNonce"
},
"MessageData": {
"payload": "MessagePayload",
@@ -1,4 +1,6 @@
{
"Address": "MillauAddress",
"LookupSource": "MillauLookupSource",
"Fee": "MillauBalance",
"Balance": "MillauBalance",
"Hash": "MillauBlockHash",
@@ -1,5 +1,7 @@
{
"--1": "Millau Types",
"MillauAddress": "AccountId",
"MillauLookupSource": "AccountId",
"MillauBalance": "u64",
"MillauBlockHash": "H512",
"MillauBlockNumber": "u64",
@@ -25,6 +27,8 @@
}
},
"--2": "Rialto Types",
"RialtoAddress": "MultiAddress",
"RialtoLookupSource": "MultiAddress",
"RialtoBalance": "u128",
"RialtoBlockHash": "H256",
"RialtoBlockNumber": "u32",
@@ -1,4 +1,6 @@
{
"Address": "RialtoAddress",
"LookupSource": "RialtoLookupSource",
"Fee": "RialtoBalance",
"Balance": "RialtoBalance",
"BlockHash": "RialtoBlockHash",
@@ -10,5 +12,6 @@
"_enum": {
"RialtoToMillauConversionRate": "u128"
}
}
},
"ValidationCodeHash": "H256"
}
@@ -1,10 +1,14 @@
{
"--1": "Rococo Types",
"RococoAddress": "AccountId",
"RococoLookupSource": "AccountId",
"RococoBalance": "u128",
"RococoBlockHash": "H256",
"RococoBlockNumber": "u32",
"RococoHeader": "Header",
"--2": "Wococo Types",
"WococoAddress": "AccountId",
"WococoLookupSource": "AccountId",
"WococoBalance": "RococoBalance",
"WococoBlockHash": "RococoBlockHash",
"WococoBlockNumber": "RococoBlockNumber",
@@ -1,4 +1,6 @@
{
"Address": "RococoAddress",
"LookupSource": "RococoLookupSource",
"Fee": "RococoBalance",
"Balance": "RococoBalance",
"BlockHash": "RococoBlockHash",
@@ -1,4 +1,6 @@
{
"Address": "WococoAddress",
"LookupSource": "WococoLookupSource",
"Fee": "WococoBalance",
"Balance": "WococoBalance",
"Hash": "WococoBlockHash",
+23
View File
@@ -0,0 +1,23 @@
# bridges-ui
This is a Bridges UI docker configuration file. The source of the Bridges UI code
can be found in [the repository](https://github.com/paritytech/parity-bridges-ui).
The CI should create and publish a docker image that is used by this configuration
file, so that the code is always using the latest version.
The UI is configured to point to local Rialto and Millau nodes to retrieve the require
data.
This image can be used together with `nginx-proxy` to expose the UI externally. See
`VIRTUAL_*` and `LETSENCRYPT_*` environment variables.
After start the UI is available at `http://localhost:8080`
## How to?
In current directory:
```bash
docker-compose up -d
```
Then start `rialto` & `millau` networks with the same command (one folder up) or
run the full setup by using `../run.sh` script.
@@ -0,0 +1,13 @@
version: '3.5'
services:
bridges-ui:
image: paritytech/parity-bridges-ui
environment:
VIRTUAL_HOST: ui.brucke.link
VIRTUAL_PORT: 80
LETSENCRYPT_HOST: ui.brucke.link
LETSENCRYPT_EMAIL: admin@parity.io
CHAIN_1_SUBSTRATE_PROVIDER: ws://localhost:9944
CHAIN_2_SUBSTRATE_PROVIDER: ws://localhost:19944
ports:
- "8080:80"