Add demo steps for running nitro nodes with payment and defund (#5)
Part of [Create bridge channel in go-nitro](https://www.notion.so/Create-bridge-channel-in-go-nitro-22ce80a0d8ae4edb80020a8f250ea270) Co-authored-by: Neeraj <neeraj.rtly@gmail.com> Co-authored-by: IshaVenikar <ishavenikar7@gmail.com> Reviewed-on: #5
This commit is contained in:
parent
3c3fc333f4
commit
0a9ed58aed
@ -7,4 +7,5 @@ Stacks to run nitro-node and bridge
|
|||||||
|
|
||||||
Demo
|
Demo
|
||||||
|
|
||||||
- [nitro-bridge demo](./nitro-bridge-demo.md)
|
- [nitro-bridge demo](./nitro-bridge-demo.md)
|
||||||
|
- [nitro-node demo](./nitro-node-demo.md)
|
||||||
|
@ -296,11 +296,45 @@
|
|||||||
# 100000000000000000
|
# 100000000000000000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
- Deploy L1 nitro contracts
|
||||||
|
|
||||||
|
- Create a deployment spec-file for L1 nitro contract:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-contracts deploy init --output nitro-contracts-spec.yml --config "GETH_URL=http://host.docker.internal:8545,GETH_DEPLOYER_PK=888814df89c4358d7ddb3fa4b0213e7331239a80e1f013eaa7b2deca2a41a218,TOKEN_NAME=LaconicNetworkToken,TOKEN_SYMBOL=LNT,INITIAL_TOKEN_SUPPLY=129600"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create a deployment `nitro-contracts` from the spec file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-contracts deploy create --spec-file nitro-contracts-spec.yml --deployment-dir nitro-contracts-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
- Start `nitro-contracts` deployment:
|
||||||
|
|
||||||
|
```
|
||||||
|
laconic-so deployment --dir nitro-contracts-deployment start
|
||||||
|
|
||||||
|
# Check the l1 nitro contract deployments
|
||||||
|
laconic-so deployment --dir nitro-contracts-deployment logs nitro-contracts -f
|
||||||
|
```
|
||||||
|
|
||||||
- Run the bridge:
|
- Run the bridge:
|
||||||
|
|
||||||
|
- Get the deployed nitro contract addresses (run in the directory where the deployments were created):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Nitro contract addresses
|
||||||
|
export NA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.NitroAdjudicator.address' /app/deployment/nitro-addresses.json")
|
||||||
|
export CA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.ConsensusApp.address' /app/deployment/nitro-addresses.json")
|
||||||
|
export VPA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.VirtualPaymentApp.address' /app/deployment/nitro-addresses.json")
|
||||||
|
export L1_ASSET_ADDRESS="$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.Token.address' /app/deployment/nitro-addresses.json")"
|
||||||
|
```
|
||||||
|
|
||||||
- Create a spec-file for the deployment, map container ports to host ports and set env variables:
|
- Create a spec-file for the deployment, map container ports to host ports and set env variables:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/bridge deploy init --map-ports-to-host any-same --output bridge-nitro-spec.yml --config "NITRO_L1_CHAIN_URL=ws://host.docker.internal:8546,NITRO_L2_CHAIN_URL=ws://host.docker.internal:9546,NITRO_CHAIN_PK=888814df89c4358d7ddb3fa4b0213e7331239a80e1f013eaa7b2deca2a41a218,NITRO_SC_PK=0279651921cd800ac560c21ceea27aab0107b67daf436cdd25ce84cad30159b4,GETH_URL=http://host.docker.internal:8545,OPTIMISM_URL=http://host.docker.internal:9545,GETH_DEPLOYER_PK=$ACCOUNT_PK,OPTIMISM_DEPLOYER_PK=$ACCOUNT_PK,TOKEN_NAME=LaconicNetworkToken,TOKEN_SYMBOL=LNT,INITIAL_TOKEN_SUPPLY=129600"
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/bridge deploy init --map-ports-to-host any-same --output bridge-nitro-spec.yml --config "NITRO_L1_CHAIN_URL=ws://host.docker.internal:8546,NITRO_L2_CHAIN_URL=ws://host.docker.internal:9546,NITRO_CHAIN_PK=888814df89c4358d7ddb3fa4b0213e7331239a80e1f013eaa7b2deca2a41a218,NITRO_SC_PK=0279651921cd800ac560c21ceea27aab0107b67daf436cdd25ce84cad30159b4,GETH_URL=http://host.docker.internal:8545,OPTIMISM_URL=http://host.docker.internal:9545,GETH_DEPLOYER_PK=$ACCOUNT_PK,OPTIMISM_DEPLOYER_PK=$ACCOUNT_PK,TOKEN_NAME=LaconicNetworkToken,TOKEN_SYMBOL=LNT,INITIAL_TOKEN_SUPPLY=129600,NA_ADDRESS=$NA_ADDRESS,VPA_ADDRESS=$VPA_ADDRESS,CA_ADDRESS=$CA_ADDRESS,L1_ASSET_ADDRESS=$L1_ASSET_ADDRESS"
|
||||||
```
|
```
|
||||||
|
|
||||||
- Create a deployment from the spec file:
|
- Create a deployment from the spec file:
|
||||||
@ -314,6 +348,9 @@
|
|||||||
```bash
|
```bash
|
||||||
laconic-so deployment --dir bridge-deployment start
|
laconic-so deployment --dir bridge-deployment start
|
||||||
|
|
||||||
|
# Check the l2 nitro contract deployments
|
||||||
|
laconic-so deployment --dir bridge-deployment logs l2-nitro-contracts -f
|
||||||
|
|
||||||
# Check the logs, ensure that the node is running
|
# Check the logs, ensure that the node is running
|
||||||
laconic-so deployment --dir bridge-deployment logs nitro-bridge -f
|
laconic-so deployment --dir bridge-deployment logs nitro-bridge -f
|
||||||
```
|
```
|
||||||
@ -323,7 +360,7 @@
|
|||||||
- Export variables for L1 token address
|
- Export variables for L1 token address
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export L1_ASSET_ADDRESS="$(laconic-so deployment --dir bridge-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.Token.address' /app/deployment/nitro-addresses.json")"
|
export L1_ASSET_ADDRESS="$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.Token.address' /app/deployment/nitro-addresses.json")"
|
||||||
|
|
||||||
export A_CHAIN_ADDRESS="0xe22AD83A0dE117bA0d03d5E94Eb4E0d80a69C62a"
|
export A_CHAIN_ADDRESS="0xe22AD83A0dE117bA0d03d5E94Eb4E0d80a69C62a"
|
||||||
export C_CHAIN_ADDRESS="0xf1ac8Dd1f6D6F5c0dA99097c57ebF50CD99Ce293"
|
export C_CHAIN_ADDRESS="0xf1ac8Dd1f6D6F5c0dA99097c57ebF50CD99Ce293"
|
||||||
@ -333,20 +370,19 @@
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Send tokens to Alice
|
# Send tokens to Alice
|
||||||
laconic-so deployment --dir bridge-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $L1_ASSET_ADDRESS --to $A_CHAIN_ADDRESS --amount 1000 --network geth"
|
laconic-so deployment --dir bridge-deployment exec l2-nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $L1_ASSET_ADDRESS --to $A_CHAIN_ADDRESS --amount 1000 --network geth"
|
||||||
|
|
||||||
#Send tokens to Charlie
|
#Send tokens to Charlie
|
||||||
laconic-so deployment --dir bridge-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $L1_ASSET_ADDRESS --to $C_CHAIN_ADDRESS --amount 1000 --network geth"
|
laconic-so deployment --dir bridge-deployment exec l2-nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $L1_ASSET_ADDRESS --to $C_CHAIN_ADDRESS --amount 1000 --network geth"
|
||||||
```
|
```
|
||||||
## Demo
|
|
||||||
|
|
||||||
- Get the deployed nitro contract addresses (run in the directory where the deployments were created):
|
- Get the deployed nitro contract addresses (run in the directory where the deployments were created):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Nitro contract addresses
|
# Nitro contract addresses
|
||||||
export NA_ADDRESS=$(laconic-so deployment --dir bridge-deployment exec nitro-bridge "jq -r '.\"1212\"[0].contracts.NitroAdjudicator.address' /app/deployment/nitro-addresses.json")
|
export NA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.NitroAdjudicator.address' /app/deployment/nitro-addresses.json")
|
||||||
export CA_ADDRESS=$(laconic-so deployment --dir bridge-deployment exec nitro-bridge "jq -r '.\"1212\"[0].contracts.ConsensusApp.address' /app/deployment/nitro-addresses.json")
|
export CA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.ConsensusApp.address' /app/deployment/nitro-addresses.json")
|
||||||
export VPA_ADDRESS=$(laconic-so deployment --dir bridge-deployment exec nitro-bridge "jq -r '.\"1212\"[0].contracts.VirtualPaymentApp.address' /app/deployment/nitro-addresses.json")
|
export VPA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.VirtualPaymentApp.address' /app/deployment/nitro-addresses.json")
|
||||||
|
|
||||||
# Contract address of bridge
|
# Contract address of bridge
|
||||||
export BRIDGE_ADDRESS=$(laconic-so deployment --dir bridge-deployment exec nitro-bridge "jq -r '.\"42069\"[0].contracts.Bridge.address' /app/deployment/nitro-addresses.json")
|
export BRIDGE_ADDRESS=$(laconic-so deployment --dir bridge-deployment exec nitro-bridge "jq -r '.\"42069\"[0].contracts.Bridge.address' /app/deployment/nitro-addresses.json")
|
||||||
@ -487,6 +523,8 @@
|
|||||||
laconic-so deployment --dir l2charlie-nitro-deployment logs nitro-node -f
|
laconic-so deployment --dir l2charlie-nitro-deployment logs nitro-node -f
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Demo
|
||||||
|
|
||||||
- Create ledger channels on L1 and mirrored channels on L2
|
- Create ledger channels on L1 and mirrored channels on L2
|
||||||
- Open new terminal, check that no channels exist on L2
|
- Open new terminal, check that no channels exist on L2
|
||||||
|
|
||||||
@ -498,7 +536,7 @@
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
export BRIDGE_NITRO_ADDRESS=0xBBB676f9cFF8D242e9eaC39D063848807d3D1D94
|
export BRIDGE_NITRO_ADDRESS=0xBBB676f9cFF8D242e9eaC39D063848807d3D1D94
|
||||||
export L1_ASSET_ADDRESS="$(laconic-so deployment --dir bridge-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.Token.address' /app/deployment/nitro-addresses.json")"
|
export L1_ASSET_ADDRESS="$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.Token.address' /app/deployment/nitro-addresses.json")"
|
||||||
```
|
```
|
||||||
|
|
||||||
- Create ledger channel between A and Bridge with custom token
|
- Create ledger channel between A and Bridge with custom token
|
||||||
@ -674,27 +712,39 @@
|
|||||||
laconic-so deployment --dir l1charlie-nitro-deployment stop --delete-volumes
|
laconic-so deployment --dir l1charlie-nitro-deployment stop --delete-volumes
|
||||||
laconic-so deployment --dir l2alice-nitro-deployment stop --delete-volumes
|
laconic-so deployment --dir l2alice-nitro-deployment stop --delete-volumes
|
||||||
laconic-so deployment --dir l2charlie-nitro-deployment stop --delete-volumes
|
laconic-so deployment --dir l2charlie-nitro-deployment stop --delete-volumes
|
||||||
|
laconic-so deployment --dir bridge-deployment stop --delete-volumes
|
||||||
```
|
```
|
||||||
|
|
||||||
- Clear nitro-node deployments:
|
- Clear nitro-nodes durable store:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Run where deployments are created
|
# Run where deployments are created
|
||||||
sudo rm -rf l1alice-nitro-deployment
|
sudo rm -rf l1alice-nitro-deployment/data/nitro_node_data/nitro-store
|
||||||
sudo rm -rf l1charlie-nitro-deployment
|
sudo rm -rf l1charlie-nitro-deployment/data/nitro_node_data/nitro-store
|
||||||
sudo rm -rf l2alice-nitro-deployment
|
sudo rm -rf l2alice-nitro-deployment/data/nitro_node_data/nitro-store
|
||||||
sudo rm -rf l2charlie-nitro-deployment
|
sudo rm -rf l2charlie-nitro-deployment/data/nitro_node_data/nitro-store
|
||||||
|
sudo rm -rf bridge-deployment/data/nitro_bridge_data/bridge-store
|
||||||
```
|
```
|
||||||
|
|
||||||
## Re-run
|
## Re-run
|
||||||
|
|
||||||
- After running demo cleanup, follow the steps from [Demo](#demo) to re-run the demo
|
- After running demo cleanup, start the deployments
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir l1alice-nitro-deployment start
|
||||||
|
laconic-so deployment --dir l1charlie-nitro-deployment start
|
||||||
|
laconic-so deployment --dir l2alice-nitro-deployment start
|
||||||
|
laconic-so deployment --dir l2charlie-nitro-deployment start
|
||||||
|
laconic-so deployment --dir bridge-deployment start
|
||||||
|
```
|
||||||
|
|
||||||
|
- Follow the steps from [Demo](#demo) to re-run the demo
|
||||||
|
|
||||||
## Cleanup
|
## Cleanup
|
||||||
|
|
||||||
- Reset nitro-node deployments:
|
- Reset nitro-node deployments:
|
||||||
|
|
||||||
- Stop nitro-node deployments and remove volumes:
|
- Stop nitro-node, bridge, nitro-contracts deployments and remove volumes:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Run where deployments are created
|
# Run where deployments are created
|
||||||
@ -703,9 +753,10 @@
|
|||||||
laconic-so deployment --dir l2alice-nitro-deployment stop --delete-volumes
|
laconic-so deployment --dir l2alice-nitro-deployment stop --delete-volumes
|
||||||
laconic-so deployment --dir l2charlie-nitro-deployment stop --delete-volumes
|
laconic-so deployment --dir l2charlie-nitro-deployment stop --delete-volumes
|
||||||
laconic-so deployment --dir bridge-deployment stop --delete-volumes
|
laconic-so deployment --dir bridge-deployment stop --delete-volumes
|
||||||
|
laconic-so deployment --dir nitro-contracts-deployment stop --delete-volumes
|
||||||
```
|
```
|
||||||
|
|
||||||
- Clear nitro-node and bridge deployments:
|
- Clear nitro-node, nitro-contracts and bridge deployments:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Run where deployments are created
|
# Run where deployments are created
|
||||||
@ -714,6 +765,7 @@
|
|||||||
sudo rm -rf l2alice-nitro-deployment
|
sudo rm -rf l2alice-nitro-deployment
|
||||||
sudo rm -rf l2charlie-nitro-deployment
|
sudo rm -rf l2charlie-nitro-deployment
|
||||||
sudo rm -rf bridge-deployment
|
sudo rm -rf bridge-deployment
|
||||||
|
sudo rm -rf nitro-contracts-deployment
|
||||||
```
|
```
|
||||||
|
|
||||||
- Clean up L1 and L2 deployments:
|
- Clean up L1 and L2 deployments:
|
||||||
|
446
nitro-node-demo.md
Normal file
446
nitro-node-demo.md
Normal file
@ -0,0 +1,446 @@
|
|||||||
|
# nitro-node demo
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
### Fixturenet eth stack
|
||||||
|
|
||||||
|
- Clone the stack repo:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so fetch-stack git.vdb.to/cerc-io/fixturenet-eth-stacks --pull
|
||||||
|
```
|
||||||
|
|
||||||
|
- Clone required repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/fixturenet-eth-stacks/stack-orchestrator/stacks/fixturenet-eth setup-repositories --pull
|
||||||
|
|
||||||
|
# If this throws an error as a result of being already checked out to a branch/tag in a repo, remove all repositories from that stack and re-run the command
|
||||||
|
# The repositories are located in $HOME/cerc by default
|
||||||
|
```
|
||||||
|
|
||||||
|
- Build the container images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Remove any older foundry image with `latest` tag
|
||||||
|
docker rmi ghcr.io/foundry-rs/foundry:latest
|
||||||
|
|
||||||
|
laconic-so --stack ~/cerc/fixturenet-eth-stacks/stack-orchestrator/stacks/fixturenet-eth build-containers --force-rebuild
|
||||||
|
|
||||||
|
# If errors are thrown during build, old images used by this stack would have to be deleted
|
||||||
|
```
|
||||||
|
|
||||||
|
- NOTE: this will take >10 mins depending on the specs of your machine, and **requires** 16GB of memory or greater.
|
||||||
|
|
||||||
|
- Remove any dangling Docker images (to clear up space):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker image prune
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create spec files for deployment, which will map the stack's ports and volumes to the host:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/fixturenet-eth-stacks/stack-orchestrator/stacks/fixturenet-eth deploy init --output fixturenet-eth-spec.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
- Configure ports:
|
||||||
|
- `fixturenet-eth-spec.yml`
|
||||||
|
|
||||||
|
```yml
|
||||||
|
...
|
||||||
|
network:
|
||||||
|
ports:
|
||||||
|
fixturenet-eth-bootnode-geth:
|
||||||
|
- '9898:9898'
|
||||||
|
- '30303'
|
||||||
|
fixturenet-eth-geth-1:
|
||||||
|
- '8545:8545'
|
||||||
|
- '8546:8546'
|
||||||
|
- '40000'
|
||||||
|
- '6060'
|
||||||
|
fixturenet-eth-lighthouse-1:
|
||||||
|
- '8001'
|
||||||
|
...
|
||||||
|
```
|
||||||
|
- Create deployments:
|
||||||
|
Once you've made any needed changes to the spec files, create deployments from them:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/fixturenet-eth-stacks/stack-orchestrator/stacks/fixturenet-eth deploy create --spec-file fixturenet-eth-spec.yml --deployment-dir fixturenet-eth-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
- Env configuration:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat <<EOF > fixturenet-eth-deployment/config.env
|
||||||
|
CERC_ALLOW_UNPROTECTED_TXS=true
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
### Go-nitro
|
||||||
|
|
||||||
|
- Clone the stack repo:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so fetch-stack git.vdb.to/cerc-io/nitro-stack --git-ssh --pull
|
||||||
|
```
|
||||||
|
|
||||||
|
- Clone required repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-node setup-repositories --git-ssh --pull
|
||||||
|
```
|
||||||
|
|
||||||
|
- Build the container images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-node build-containers --force-rebuild
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
- Start fixturenet-eth stack:
|
||||||
|
(run steps in directory where the stack deployments had been created)
|
||||||
|
|
||||||
|
- Start `fixturenet-eth-deployment` deployment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir fixturenet-eth-deployment start
|
||||||
|
```
|
||||||
|
|
||||||
|
- Check status of L1
|
||||||
|
|
||||||
|
- Run status check:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir fixturenet-eth-deployment exec fixturenet-eth-bootnode-lighthouse "/scripts/status-internal.sh"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Check geth logs to ensure that new blocks are getting created
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir fixturenet-eth-deployment logs -f fixturenet-eth-geth-1
|
||||||
|
```
|
||||||
|
|
||||||
|
- Deploy nitro contracts
|
||||||
|
|
||||||
|
- Create a deployment spec-file for nitro contract:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-contracts deploy init --output nitro-contracts-spec.yml --config "GETH_URL=http://host.docker.internal:8545,GETH_DEPLOYER_PK=888814df89c4358d7ddb3fa4b0213e7331239a80e1f013eaa7b2deca2a41a218,TOKEN_NAME=LaconicNetworkToken,TOKEN_SYMBOL=LNT,INITIAL_TOKEN_SUPPLY=129600"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create a deployment `nitro-contracts` from the spec file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-contracts deploy create --spec-file nitro-contracts-spec.yml --deployment-dir nitro-contracts-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
- Start `nitro-contracts` deployment:
|
||||||
|
|
||||||
|
```
|
||||||
|
laconic-so deployment --dir nitro-contracts-deployment start
|
||||||
|
|
||||||
|
# Check the logs
|
||||||
|
laconic-so deployment --dir nitro-contracts-deployment logs nitro-contracts -f
|
||||||
|
```
|
||||||
|
|
||||||
|
- Get the deployed nitro contract addresses
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Nitro contract addresses
|
||||||
|
export NA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.NitroAdjudicator.address' /app/deployment/nitro-addresses.json")
|
||||||
|
export CA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.ConsensusApp.address' /app/deployment/nitro-addresses.json")
|
||||||
|
export VPA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.VirtualPaymentApp.address' /app/deployment/nitro-addresses.json")
|
||||||
|
```
|
||||||
|
|
||||||
|
- Send custom tokens to Alice and Charlie
|
||||||
|
|
||||||
|
- Export variables for token address
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export ASSET_ADDRESS="$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.Token.address' /app/deployment/nitro-addresses.json")"
|
||||||
|
|
||||||
|
export A_CHAIN_ADDRESS="0xe22AD83A0dE117bA0d03d5E94Eb4E0d80a69C62a"
|
||||||
|
export C_CHAIN_ADDRESS="0xf1ac8Dd1f6D6F5c0dA99097c57ebF50CD99Ce293"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Send tokens to Alice and Charlie
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Send tokens to Alice
|
||||||
|
laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $ASSET_ADDRESS --to $A_CHAIN_ADDRESS --amount 1000 --network geth"
|
||||||
|
|
||||||
|
#Send tokens to Charlie
|
||||||
|
laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $ASSET_ADDRESS --to $C_CHAIN_ADDRESS --amount 1000 --network geth"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create deployment for Alice:
|
||||||
|
- Create a deployment spec-file for Alice node:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-node deploy init --output alice-nitro-spec.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
- Edit `network` in the spec file to map container ports to host ports as required:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# alice-nitro-spec.yml
|
||||||
|
...
|
||||||
|
network:
|
||||||
|
ports:
|
||||||
|
nitro-node:
|
||||||
|
- 3007:3005
|
||||||
|
- 4007:4005
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create a deployment `alice-nitro-deployment` from the spec file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-node deploy create --spec-file alice-nitro-spec.yml --deployment-dir alice-nitro-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
- Set the env variables for Alice's nitro-node:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat <<EOF > alice-nitro-deployment/config.env
|
||||||
|
NITRO_CHAIN_URL=ws://host.docker.internal:8546
|
||||||
|
NITRO_SC_PK=0x9aebbd42f3044295411e3631fcb6aa834ed5373a6d3bf368bfa09e5b74f4f6d1
|
||||||
|
NITRO_CHAIN_PK=570b909da9669b2f35a0b1ac70b8358516d55ae1b5b3710e95e9a94395090597
|
||||||
|
NA_ADDRESS=$NA_ADDRESS
|
||||||
|
VPA_ADDRESS=$VPA_ADDRESS
|
||||||
|
CA_ADDRESS=$CA_ADDRESS
|
||||||
|
NITRO_EXT_MULTIADDR=/dns4/host.docker.internal/tcp/3007
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create deployment for Charlie:
|
||||||
|
|
||||||
|
- Create a deployment spec-file for Charlie node:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-node deploy init --output charlie-nitro-spec.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
- Edit `network` in the spec file to map container ports to host ports as required:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# charlie-nitro-spec.yml
|
||||||
|
...
|
||||||
|
network:
|
||||||
|
ports:
|
||||||
|
nitro-node:
|
||||||
|
- 3008:3005
|
||||||
|
- 4008:4005
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create a deployment `charlie-nitro-deployment` from the spec file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-node deploy create --spec-file charlie-nitro-spec.yml --deployment-dir charlie-nitro-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
- Set the env variables for Charlie's nitro-node:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat <<EOF > charlie-nitro-deployment/config.env
|
||||||
|
NITRO_CHAIN_URL=ws://host.docker.internal:8546
|
||||||
|
NITRO_SC_PK=0x19242258fc60ec7488db0163b20ed1c32f2d27dc49e4d427a461e20a6656de20
|
||||||
|
NITRO_CHAIN_PK=111b7500bdce494d6f4bcfe8c2a0dde2ef92f751d9070fac6475dbd6d8021b3f
|
||||||
|
NA_ADDRESS=$NA_ADDRESS
|
||||||
|
VPA_ADDRESS=$VPA_ADDRESS
|
||||||
|
CA_ADDRESS=$CA_ADDRESS
|
||||||
|
NITRO_BOOTPEERS=/dns4/host.docker.internal/tcp/3007/p2p/16Uiu2HAmVbAtvDW1xrq4gDwRtdTjT1bqVdFJX6eWZbfn174wEENL
|
||||||
|
NITRO_EXT_MULTIADDR=/dns4/host.docker.internal/tcp/3008
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
## Demo
|
||||||
|
|
||||||
|
- Start nitro nodes
|
||||||
|
|
||||||
|
- Start `alice-nitro-deployment` deployment:
|
||||||
|
```
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment start
|
||||||
|
|
||||||
|
# Check the logs
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment logs nitro-node -f
|
||||||
|
```
|
||||||
|
|
||||||
|
- Start `charlie-nitro-deployment` deployment:
|
||||||
|
|
||||||
|
```
|
||||||
|
laconic-so deployment --dir charlie-nitro-deployment start
|
||||||
|
|
||||||
|
# Check the logs
|
||||||
|
laconic-so deployment --dir charlie-nitro-deployment logs nitro-node -f
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create ledger channels
|
||||||
|
|
||||||
|
- Set address of custom token in the current terminal
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export ASSET_ADDRESS="$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"1212\"[0].contracts.Token.address' /app/deployment/nitro-addresses.json")"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create ledger channel between Alice and Charlie with custom token
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment exec nitro-rpc-client "nitro-rpc-client direct-fund 0x03Eb7a84E286c671836b9897AaE24b31D36f9cA8 --assetAddress $ASSET_ADDRESS --alphaAmount 1000000 --betaAmount 1000000 -p 4005 -h nitro-node"
|
||||||
|
|
||||||
|
LEDGER_CHANNEL_ID=<ledger channel id>
|
||||||
|
```
|
||||||
|
|
||||||
|
- Check status of ledger channel between Alice and Charlie
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-ledger-channel $LEDGER_CHANNEL_ID -p 4005 -h nitro-node"
|
||||||
|
|
||||||
|
# Expected output:
|
||||||
|
# {
|
||||||
|
# ID: '0x72e631943d8b89d9c70af7d3daa75a169fc84c84034ab77c850ceaf4a530a650',
|
||||||
|
# Status: 'Open',
|
||||||
|
# Balance: {
|
||||||
|
# AssetAddress: '0x2b79f4a92c177b4e61f5c4ac37b1b8a623c665a4',
|
||||||
|
# Me: '0x4b64e26da8279ab12bcd4ca9974ec2b4741e175e',
|
||||||
|
# Them: '0x03eb7a84e286c671836b9897aae24b31d36f9ca8',
|
||||||
|
# MyBalance: 1000000n,
|
||||||
|
# TheirBalance: 1000000n
|
||||||
|
# },
|
||||||
|
# ChannelMode: 'Open'
|
||||||
|
# }
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create virtual channel from Alice to Charlie
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment exec nitro-rpc-client "nitro-rpc-client virtual-fund 0x03Eb7a84E286c671836b9897AaE24b31D36f9cA8 --amount 1000 -p 4005 -h nitro-node"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Set the payment channel id in a variable
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PAYMENT_CHANNEL_ID=<payment channel id>
|
||||||
|
```
|
||||||
|
|
||||||
|
- Check payment channel between Alice and Charlie
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-payment-channel $PAYMENT_CHANNEL_ID -p 4005 -h nitro-node"
|
||||||
|
|
||||||
|
# Expected output:
|
||||||
|
# {
|
||||||
|
# ID: '0xf982de03e17fd8ff30b138f142bc17c3deb24a48ec38b41c13e621fa65172f3c',
|
||||||
|
# Status: 'Open',
|
||||||
|
# Balance: {
|
||||||
|
# AssetAddress: '0x0000000000000000000000000000000000000000',
|
||||||
|
# Payee: '0x03eb7a84e286c671836b9897aae24b31d36f9ca8',
|
||||||
|
# Payer: '0x4b64e26da8279ab12bcd4ca9974ec2b4741e175e',
|
||||||
|
# PaidSoFar: 0n,
|
||||||
|
# RemainingFunds: 1000n
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
```
|
||||||
|
|
||||||
|
- After virtual fund objective is complete, make payments
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment exec nitro-rpc-client "nitro-rpc-client pay $PAYMENT_CHANNEL_ID 200 -p 4005 -h nitro-node"
|
||||||
|
|
||||||
|
# Expected output:
|
||||||
|
# {
|
||||||
|
# Amount: 200,
|
||||||
|
# Channel: '0xf982de03e17fd8ff30b138f142bc17c3deb24a48ec38b41c13e621fa65172f3c'
|
||||||
|
# }
|
||||||
|
```
|
||||||
|
|
||||||
|
- Check payment channel between Alice and Charlie after payment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-payment-channel $PAYMENT_CHANNEL_ID -p 4005 -h nitro-node"
|
||||||
|
|
||||||
|
# Expected output:
|
||||||
|
# {
|
||||||
|
# ID: '0xf982de03e17fd8ff30b138f142bc17c3deb24a48ec38b41c13e621fa65172f3c',
|
||||||
|
# Status: 'Open',
|
||||||
|
# Balance: {
|
||||||
|
# AssetAddress: '0x0000000000000000000000000000000000000000',
|
||||||
|
# Payee: '0x03eb7a84e286c671836b9897aae24b31d36f9ca8',
|
||||||
|
# Payer: '0x4b64e26da8279ab12bcd4ca9974ec2b4741e175e',
|
||||||
|
# PaidSoFar: 200n,
|
||||||
|
# RemainingFunds: 800n
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
```
|
||||||
|
|
||||||
|
- Close payment channel
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment exec nitro-rpc-client "nitro-rpc-client virtual-defund $PAYMENT_CHANNEL_ID -p 4005 -h nitro-node"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Close ledger channel between Alice and Charlie
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment exec nitro-rpc-client "nitro-rpc-client direct-defund $LEDGER_CHANNEL_ID -p 4005 -h nitro-node"
|
||||||
|
```
|
||||||
|
|
||||||
|
- Check status of ledger channel between Alice and Charlie
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-ledger-channel $LEDGER_CHANNEL_ID -p 4005 -h nitro-node"
|
||||||
|
|
||||||
|
# Expected output:
|
||||||
|
# {
|
||||||
|
# ID: '0x72e631943d8b89d9c70af7d3daa75a169fc84c84034ab77c850ceaf4a530a650',
|
||||||
|
# Status: 'Complete',
|
||||||
|
# Balance: {
|
||||||
|
# AssetAddress: '0x2b79f4a92c177b4e61f5c4ac37b1b8a623c665a4',
|
||||||
|
# Me: '0x4b64e26da8279ab12bcd4ca9974ec2b4741e175e',
|
||||||
|
# Them: '0x03eb7a84e286c671836b9897aae24b31d36f9ca8',
|
||||||
|
# MyBalance: 999800n,
|
||||||
|
# TheirBalance: 1000200n
|
||||||
|
# },
|
||||||
|
# ChannelMode: 'Open'
|
||||||
|
# }
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Cleanup
|
||||||
|
|
||||||
|
- Reset nitro-node deployments:
|
||||||
|
|
||||||
|
- Stop nitro-node, nitro-contracts deployments and remove volumes:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run where deployments are created
|
||||||
|
laconic-so deployment --dir alice-nitro-deployment stop --delete-volumes
|
||||||
|
laconic-so deployment --dir charlie-nitro-deployment stop --delete-volumes
|
||||||
|
laconic-so deployment --dir nitro-contracts-deployment stop --delete-volumes
|
||||||
|
```
|
||||||
|
|
||||||
|
- Clear nitro-node and nitro-contracts deployments:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run where deployments are created
|
||||||
|
sudo rm -rf alice-nitro-deployment
|
||||||
|
sudo rm -rf charlie-nitro-deployment
|
||||||
|
sudo rm -rf nitro-contracts-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
- Clean up fixturenet-eth deployment:
|
||||||
|
- Stop deployment and remove volumes:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run where deployments are created
|
||||||
|
laconic-so deployment --dir fixturenet-eth-deployment stop --delete-volumes
|
||||||
|
```
|
||||||
|
|
||||||
|
- Clear deployments:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run where deployments are created
|
||||||
|
sudo rm -rf fixturenet-eth-deployment
|
||||||
|
```
|
@ -1,13 +1,36 @@
|
|||||||
name: nitro-bridge
|
name: nitro-bridge
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
l2-nitro-contracts:
|
||||||
|
image: cerc/nitro-client:local
|
||||||
|
restart: on-failure
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
GETH_URL: ${GETH_URL}
|
||||||
|
OPTIMISM_DEPLOYER_PK: ${OPTIMISM_DEPLOYER_PK}
|
||||||
|
OPTIMISM_CHAIN_ID: ${OPTIMISM_CHAIN_ID:-42069}
|
||||||
|
GETH_CHAIN_ID: ${GETH_CHAIN_ID:-1212}
|
||||||
|
GETH_DEPLOYER_PK: ${OPTIMISM_DEPLOYER_PK}
|
||||||
|
OPTIMISM_URL: ${OPTIMISM_URL}
|
||||||
|
TOKEN_NAME: ${TOKEN_NAME}
|
||||||
|
TOKEN_SYMBOL: ${TOKEN_SYMBOL}
|
||||||
|
INITIAL_TOKEN_SUPPLY: ${INITIAL_TOKEN_SUPPLY}
|
||||||
|
DISABLE_DETERMINISTIC_DEPLOYMENT: ${DISABLE_DETERMINISTIC_DEPLOYMENT:-true}
|
||||||
|
L1_ASSET_ADDRESS: ${L1_ASSET_ADDRESS}
|
||||||
|
volumes:
|
||||||
|
- nitro_deployment:/app/deployment
|
||||||
|
- ../config/nitro-contracts/deploy-l2-contracts.sh:/app/deploy-l2-contracts.sh
|
||||||
|
command: ["bash", "-c", "/app/deploy-l2-contracts.sh"]
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
nitro-bridge:
|
nitro-bridge:
|
||||||
image: cerc/go-nitro:local
|
image: cerc/go-nitro:local
|
||||||
hostname: nitro-bridge
|
hostname: nitro-bridge
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
nitro-contracts:
|
l2-nitro-contracts:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
environment:
|
environment:
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
GETH_CHAIN_ID: ${GETH_CHAIN_ID:-1212}
|
GETH_CHAIN_ID: ${GETH_CHAIN_ID:-1212}
|
||||||
@ -23,6 +46,9 @@ services:
|
|||||||
NITRO_L1_EXT_MULTIADDR: ${NITRO_L1_EXT_MULTIADDR}
|
NITRO_L1_EXT_MULTIADDR: ${NITRO_L1_EXT_MULTIADDR}
|
||||||
NITRO_L2_EXT_MULTIADDR: ${NITRO_L2_EXT_MULTIADDR}
|
NITRO_L2_EXT_MULTIADDR: ${NITRO_L2_EXT_MULTIADDR}
|
||||||
NITRO_PUBLIC_RPC_HOST: nitro-bridge
|
NITRO_PUBLIC_RPC_HOST: nitro-bridge
|
||||||
|
NA_ADDRESS: ${NA_ADDRESS}
|
||||||
|
CA_ADDRESS: ${CA_ADDRESS}
|
||||||
|
VPA_ADDRESS: ${VPA_ADDRESS}
|
||||||
entrypoint: ["bash", "-c", "/app/run-bridge.sh"]
|
entrypoint: ["bash", "-c", "/app/run-bridge.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
- nitro_bridge_data:/app/data
|
- nitro_bridge_data:/app/data
|
||||||
|
@ -8,9 +8,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
GETH_URL: ${GETH_URL}
|
GETH_URL: ${GETH_URL}
|
||||||
OPTIMISM_URL: ${OPTIMISM_URL}
|
|
||||||
GETH_CHAIN_ID: ${GETH_CHAIN_ID:-1212}
|
GETH_CHAIN_ID: ${GETH_CHAIN_ID:-1212}
|
||||||
OPTIMISM_CHAIN_ID: ${OPTIMISM_CHAIN_ID:-42069}
|
|
||||||
GETH_DEPLOYER_PK: ${GETH_DEPLOYER_PK}
|
GETH_DEPLOYER_PK: ${GETH_DEPLOYER_PK}
|
||||||
OPTIMISM_DEPLOYER_PK: ${GETH_DEPLOYER_PK}
|
OPTIMISM_DEPLOYER_PK: ${GETH_DEPLOYER_PK}
|
||||||
TOKEN_NAME: ${TOKEN_NAME}
|
TOKEN_NAME: ${TOKEN_NAME}
|
||||||
@ -19,8 +17,8 @@ services:
|
|||||||
DISABLE_DETERMINISTIC_DEPLOYMENT: ${DISABLE_DETERMINISTIC_DEPLOYMENT:-true}
|
DISABLE_DETERMINISTIC_DEPLOYMENT: ${DISABLE_DETERMINISTIC_DEPLOYMENT:-true}
|
||||||
volumes:
|
volumes:
|
||||||
- nitro_deployment:/app/deployment
|
- nitro_deployment:/app/deployment
|
||||||
- ../config/nitro-contracts/deploy.sh:/app/deploy.sh
|
- ../config/nitro-contracts/deploy-l1-contracts.sh:/app/deploy-l1-contracts.sh
|
||||||
command: ["bash", "-c", "/app/deploy.sh"]
|
command: ["bash", "-c", "/app/deploy-l1-contracts.sh"]
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
@ -20,6 +20,9 @@ echo "NITRO_RPC_PORT: ${NITRO_RPC_PORT}"
|
|||||||
echo "NITRO_PUBLIC_P2P_HOST: ${NITRO_PUBLIC_P2P_HOST}"
|
echo "NITRO_PUBLIC_P2P_HOST: ${NITRO_PUBLIC_P2P_HOST}"
|
||||||
echo "NITRO_L1_EXT_MULTIADDR: ${NITRO_L1_EXT_MULTIADDR}"
|
echo "NITRO_L1_EXT_MULTIADDR: ${NITRO_L1_EXT_MULTIADDR}"
|
||||||
echo "NITRO_L2_EXT_MULTIADDR: ${NITRO_L2_EXT_MULTIADDR}"
|
echo "NITRO_L2_EXT_MULTIADDR: ${NITRO_L2_EXT_MULTIADDR}"
|
||||||
|
echo "NA_ADDRESS: ${NA_ADDRESS}"
|
||||||
|
echo "CA_ADDRESS: ${CA_ADDRESS}"
|
||||||
|
echo "VPA_ADDRESS: ${VPA_ADDRESS}"
|
||||||
|
|
||||||
echo "Waiting for $bridge_assets_map_file to be ready"
|
echo "Waiting for $bridge_assets_map_file to be ready"
|
||||||
|
|
||||||
@ -45,12 +48,12 @@ bridgepublicip = "$NITRO_PUBLIC_P2P_HOST"
|
|||||||
nodel1ExtMultiAddr = "$NITRO_L1_EXT_MULTIADDR"
|
nodel1ExtMultiAddr = "$NITRO_L1_EXT_MULTIADDR"
|
||||||
nodel2ExtMultiAddr = "$NITRO_L2_EXT_MULTIADDR"
|
nodel2ExtMultiAddr = "$NITRO_L2_EXT_MULTIADDR"
|
||||||
assetmapfilepath = "$bridge_assets_map_file"
|
assetmapfilepath = "$bridge_assets_map_file"
|
||||||
|
naaddress = "${NA_ADDRESS}"
|
||||||
|
vpaaddress = "${VPA_ADDRESS}"
|
||||||
|
caaddress = "${CA_ADDRESS}"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Export contract addresses
|
# Export bridge address
|
||||||
export NA_ADDRESS=$(jq -r ".\"$GETH_CHAIN_ID\"[0].contracts.NitroAdjudicator.address" ${nitro_addresses_file})
|
|
||||||
export CA_ADDRESS=$(jq -r ".\"$GETH_CHAIN_ID\"[0].contracts.ConsensusApp.address" ${nitro_addresses_file})
|
|
||||||
export VPA_ADDRESS=$(jq -r ".\"$GETH_CHAIN_ID\"[0].contracts.VirtualPaymentApp.address" ${nitro_addresses_file})
|
|
||||||
export BRIDGE_ADDRESS=$(jq -r ".\"$OPTIMISM_CHAIN_ID\"[0].contracts.Bridge.address" ${nitro_addresses_file})
|
export BRIDGE_ADDRESS=$(jq -r ".\"$OPTIMISM_CHAIN_ID\"[0].contracts.Bridge.address" ${nitro_addresses_file})
|
||||||
|
|
||||||
# Start bridge
|
# Start bridge
|
||||||
|
35
stack-orchestrator/config/nitro-contracts/deploy-l1-contracts.sh
Executable file
35
stack-orchestrator/config/nitro-contracts/deploy-l1-contracts.sh
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
addresses_deployment_file="packages/nitro-protocol/addresses.json"
|
||||||
|
nitro_addresses_file="/app/deployment/nitro-addresses.json"
|
||||||
|
|
||||||
|
echo "Using the following environment variables:"
|
||||||
|
echo "GETH_URL: ${GETH_URL}"
|
||||||
|
echo "GETH_CHAIN_ID: ${GETH_CHAIN_ID}"
|
||||||
|
echo "TOKEN_NAME: ${TOKEN_NAME}"
|
||||||
|
echo "TOKEN_SYMBOL: ${TOKEN_SYMBOL}"
|
||||||
|
echo "INITIAL_TOKEN_SUPPLY: ${INITIAL_TOKEN_SUPPLY}"
|
||||||
|
echo "DISABLE_DETERMINISTIC_DEPLOYMENT: ${DISABLE_DETERMINISTIC_DEPLOYMENT}"
|
||||||
|
|
||||||
|
# Check if L1 chain id key is present for L1 deployment
|
||||||
|
if [ -f "$nitro_addresses_file" ] && jq -e "has(\"$GETH_CHAIN_ID\")" ${nitro_addresses_file} > /dev/null; then
|
||||||
|
echo "L1 addresses found in ${nitro_addresses_file}, skipping deployment"
|
||||||
|
else
|
||||||
|
# Deploy Nitro contracts
|
||||||
|
yarn contracts:deploy-geth
|
||||||
|
|
||||||
|
# Deploy custom token
|
||||||
|
yarn contracts:deploy-token-geth
|
||||||
|
|
||||||
|
cp ${addresses_deployment_file} ${nitro_addresses_file}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Done"
|
||||||
|
|
||||||
|
# Keep the container running for future asset transfers
|
||||||
|
tail -f /dev/null
|
@ -10,31 +10,19 @@ nitro_addresses_file="/app/deployment/nitro-addresses.json"
|
|||||||
bridge_assets_map_file="/app/deployment/bridge-assets-map.toml"
|
bridge_assets_map_file="/app/deployment/bridge-assets-map.toml"
|
||||||
|
|
||||||
echo "Using the following environment variables:"
|
echo "Using the following environment variables:"
|
||||||
echo "GETH_URL: ${GETH_URL}"
|
|
||||||
echo "OPTIMISM_URL: ${OPTIMISM_URL}"
|
echo "OPTIMISM_URL: ${OPTIMISM_URL}"
|
||||||
echo "GETH_CHAIN_ID: ${GETH_CHAIN_ID}"
|
|
||||||
echo "OPTIMISM_CHAIN_ID: ${OPTIMISM_CHAIN_ID}"
|
echo "OPTIMISM_CHAIN_ID: ${OPTIMISM_CHAIN_ID}"
|
||||||
echo "GETH_DEPLOYER_PK: ${GETH_DEPLOYER_PK}"
|
|
||||||
echo "OPTIMISM_DEPLOYER_PK: ${OPTIMISM_DEPLOYER_PK}"
|
echo "OPTIMISM_DEPLOYER_PK: ${OPTIMISM_DEPLOYER_PK}"
|
||||||
|
echo "GETH_URL: ${GETH_URL}"
|
||||||
|
echo "GETH_CHAIN_ID: ${GETH_CHAIN_ID}"
|
||||||
|
echo "GETH_DEPLOYER_PK: ${GETH_DEPLOYER_PK}"
|
||||||
echo "TOKEN_NAME: ${TOKEN_NAME}"
|
echo "TOKEN_NAME: ${TOKEN_NAME}"
|
||||||
echo "TOKEN_SYMBOL: ${TOKEN_SYMBOL}"
|
echo "TOKEN_SYMBOL: ${TOKEN_SYMBOL}"
|
||||||
echo "INITIAL_TOKEN_SUPPLY: ${INITIAL_TOKEN_SUPPLY}"
|
echo "INITIAL_TOKEN_SUPPLY: ${INITIAL_TOKEN_SUPPLY}"
|
||||||
echo "DISABLE_DETERMINISTIC_DEPLOYMENT: ${DISABLE_DETERMINISTIC_DEPLOYMENT}"
|
echo "DISABLE_DETERMINISTIC_DEPLOYMENT: ${DISABLE_DETERMINISTIC_DEPLOYMENT}"
|
||||||
|
echo "L1_ASSET_ADDRESS: ${L1_ASSET_ADDRESS}"
|
||||||
|
|
||||||
# Check if L1 chain id key is present for L1 deployment
|
# Check if L2 chain id key is present for L2 deployment
|
||||||
if [ -f "$nitro_addresses_file" ] && jq -e "has(\"$GETH_CHAIN_ID\")" ${nitro_addresses_file} > /dev/null; then
|
|
||||||
echo "L1 addresses found in ${nitro_addresses_file}, skipping deployment"
|
|
||||||
else
|
|
||||||
# Deploy Nitro contracts
|
|
||||||
yarn contracts:deploy-geth
|
|
||||||
|
|
||||||
# Deploy custom token
|
|
||||||
yarn contracts:deploy-token-geth
|
|
||||||
|
|
||||||
cp ${addresses_deployment_file} ${nitro_addresses_file}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if L1 chain id key is present for L1 deployment
|
|
||||||
if [ -f "$nitro_addresses_file" ] && jq -e "has(\"$OPTIMISM_CHAIN_ID\")" ${nitro_addresses_file} > /dev/null; then
|
if [ -f "$nitro_addresses_file" ] && jq -e "has(\"$OPTIMISM_CHAIN_ID\")" ${nitro_addresses_file} > /dev/null; then
|
||||||
echo "L2 addresses found in ${nitro_addresses_file}, skipping deployment"
|
echo "L2 addresses found in ${nitro_addresses_file}, skipping deployment"
|
||||||
else
|
else
|
||||||
@ -47,7 +35,6 @@ else
|
|||||||
cp ${addresses_deployment_file} ${nitro_addresses_file}
|
cp ${addresses_deployment_file} ${nitro_addresses_file}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
L1_ASSET_ADDRESS=$(jq -r ".\"$GETH_CHAIN_ID\"[0].contracts.Token.address" ${nitro_addresses_file})
|
|
||||||
L2_ASSET_ADDRESS=$(jq -r ".\"$OPTIMISM_CHAIN_ID\"[0].contracts.Token.address" ${nitro_addresses_file})
|
L2_ASSET_ADDRESS=$(jq -r ".\"$OPTIMISM_CHAIN_ID\"[0].contracts.Token.address" ${nitro_addresses_file})
|
||||||
|
|
||||||
# Deploy custom tokens and create bridge-assets-map.toml
|
# Deploy custom tokens and create bridge-assets-map.toml
|
@ -7,6 +7,5 @@ containers:
|
|||||||
- cerc/nitro-client
|
- cerc/nitro-client
|
||||||
- cerc/go-nitro
|
- cerc/go-nitro
|
||||||
pods:
|
pods:
|
||||||
- nitro-contracts
|
|
||||||
- nitro-bridge
|
- nitro-bridge
|
||||||
- nitro-rpc-client
|
- nitro-rpc-client
|
||||||
|
59
stack-orchestrator/stacks/nitro-contracts/README.md
Normal file
59
stack-orchestrator/stacks/nitro-contracts/README.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# nitro-contracts
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
- Clone the stack repo:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so fetch-stack git.vdb.to/cerc-io/nitro-stack
|
||||||
|
```
|
||||||
|
|
||||||
|
- Clone required repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-contracts setup-repositories
|
||||||
|
```
|
||||||
|
|
||||||
|
- Build container images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-contracts build-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create a deployment
|
||||||
|
|
||||||
|
- Create a spec file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-contracts deploy init --output nitro-contracts-spec.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create deployment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack ~/cerc/nitro-stack/stack-orchestrator/stacks/nitro-contracts deploy create --spec-file nitro-contracts-spec.yml --deployment-dir nitro-contracts-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
- Inside the `nitro-contracts-deployment` deployment directory, open `config.env` file and set following env variables:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# URL endpoint of the L1 chain (Example: http://host.docker.internal:8545)
|
||||||
|
GETH_URL=
|
||||||
|
|
||||||
|
# Private key of the account on chain that is used for deploying L1 contracts
|
||||||
|
GETH_DEPLOYER_PK=
|
||||||
|
|
||||||
|
TOKEN_NAME=LaconicNetworkToken
|
||||||
|
|
||||||
|
TOKEN_SYMBOL=LNT
|
||||||
|
|
||||||
|
INITIAL_TOKEN_SUPPLY=129600
|
||||||
|
```
|
||||||
|
|
||||||
|
## Start the deployment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir nitro-contracts-deployment start
|
||||||
|
```
|
9
stack-orchestrator/stacks/nitro-contracts/stack.yml
Normal file
9
stack-orchestrator/stacks/nitro-contracts/stack.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
version: "1.0"
|
||||||
|
name: nitro-contracts
|
||||||
|
description: "Deploy nitro contracts"
|
||||||
|
repos:
|
||||||
|
- github.com/cerc-io/go-nitro
|
||||||
|
containers:
|
||||||
|
- cerc/nitro-client
|
||||||
|
pods:
|
||||||
|
- nitro-contracts
|
Loading…
Reference in New Issue
Block a user