From 02fade5b273ceedbec9a26a71a1eb18508367773 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Wed, 16 Oct 2024 11:54:17 +0530 Subject: [PATCH 01/11] Add steps to setup fixturenet eth --- ops/deployments-from-scratch.md | 113 ++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index 3f26698..5f87bbf 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -29,6 +29,119 @@
Nitro Contracts Deployment +## Fixturenet Eth + +* Stack: + +* Source repo: + +* Target dir: `/srv/fixturenet-eth/fixturenet-eth-deployment` + +* Cleanup an existing deployment if required: + + ```bash + cd /srv/fixturenet-eth + + # Stop the deployment + laconic-so deployment --dir fixturenet-eth-deployment stop --delete-volumes + + # Remove the deployment dir + sudo rm -rf fixturenet-eth-deployment + ``` + +### Setup + +* Create a `fixturenet-eth` dir if not present already and cd into it + + ```bash + mkdir /srv/fixturenet-eth + + cd /srv/fixturenet-eth + ``` + +* 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 deployments, 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 < fixturenet-eth-deployment/config.env + CERC_ALLOW_UNPROTECTED_TXS=true + EOF + ``` + +### Run + +* Start `fixturenet-eth-deployment` deployment: + + ```bash + laconic-so deployment --dir fixturenet-eth-deployment start + ``` + ## Nitro Contracts Deployment * Stack: -- 2.45.2 From 18e00f447dc7672ef135872b704cca0c18f25756 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Thu, 17 Oct 2024 09:42:51 +0530 Subject: [PATCH 02/11] Update fixturenet eth port mappings --- ops/deployments-from-scratch.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index 5f87bbf..b08a2e5 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -27,7 +27,7 @@ * laconic-so: see [installation](https://git.vdb.to/cerc-io/testnet-ops/src/branch/main/stack-orchestrator-setup/README.md#setup-stack-orchestrator)
- Nitro Contracts Deployment + Fixturenet Eth ## Fixturenet Eth @@ -110,8 +110,8 @@ - '9898:9898' - '30303' fixturenet-eth-geth-1: - - '8545:8545' - - '8546:8546' + - '7545:8545' + - '7546:8546' - '40000' - '6060' fixturenet-eth-lighthouse-1: @@ -142,6 +142,11 @@ laconic-so deployment --dir fixturenet-eth-deployment start ``` +
+ +
+ Nitro Contracts Deployment + ## Nitro Contracts Deployment * Stack: @@ -1121,6 +1126,8 @@ https://loro-console.laconic.com -> 4001 # Machine 2 https://sepolia.laconic.com -> 8545 wss://sepolia.laconic.com -> 8546 +https://eth.laconic.com -> 7545 +wss://eth.laconic.com -> 7546 bridge.laconic.com Open ports: -- 2.45.2 From 8129b0eb900a24e27367d0c91da5cd75df508c22 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Thu, 17 Oct 2024 15:03:22 +0530 Subject: [PATCH 03/11] Update fixturenet eth domain --- ops/deployments-from-scratch.md | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index b08a2e5..8f8eb77 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -126,14 +126,6 @@ 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 < fixturenet-eth-deployment/config.env - CERC_ALLOW_UNPROTECTED_TXS=true - EOF - ``` - ### Run * Start `fixturenet-eth-deployment` deployment: @@ -1124,10 +1116,10 @@ https://wallet.laconic.com -> 5000 https://loro-console.laconic.com -> 4001 # Machine 2 -https://sepolia.laconic.com -> 8545 -wss://sepolia.laconic.com -> 8546 -https://eth.laconic.com -> 7545 -wss://eth.laconic.com -> 7546 +https://sepolia.laconic.com -> 8545 +wss://sepolia.laconic.com -> 8546 +https://fixturenet-eth.laconic.com -> 7545 +wss://fixturenet-eth.laconic.com -> 7546 bridge.laconic.com Open ports: -- 2.45.2 From 0e67ad7547578cdd0bd5bdd2b5af307799c50588 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Fri, 18 Oct 2024 11:31:28 +0530 Subject: [PATCH 04/11] Add steps to deploy new custom token --- ops/deployments-from-scratch.md | 57 ++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index 8f8eb77..3a9bf26 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -175,21 +175,23 @@ * Edit [`contract-vars.yml`](./contract-vars.yml) and fill in the following values: ```bash - # L1 RPC endpoint - geth_url: "https://sepolia.laconic.com" + # RPC endpoint + geth_url: "https://fixturenet-eth.laconic.com" - # L1 chain ID (Sepolia: 11155111) - geth_chain_id: "11155111" + # Chain ID (Fixturenet-eth: 1212) + geth_chain_id: "1212" # Private key for a funded L1 account, to be used for contract deployment on L1 - # Must also be funded on L2 for deploying contracts # Required since this private key will be utilized by both L1 and L2 nodes of the bridge + + # TODO: HARDCODE PK AND USE SAME IN BRIDGE + geth_deployer_pk: "" - # Custom L1 token to be deployed - token_name: "" - token_symbol: "" - intial_token_supply: "" + # Custom token to be deployed + token_name: "TestToken" + token_symbol: "TST" + intial_token_supply: "10000000" ``` * Update the target dir in `setup-vars.yml`: @@ -252,6 +254,29 @@ laconic-so deployment --dir nitro-contracts-deployment logs nitro-contracts -f ``` +* To deploy another token + + ```bash + export TOKEN_NAME="TestToken2" + export TOKEN_SYMBOL="TST2" + + # Note: Token supply denotes actual number of tokens and not the supply in Wei + export INITIAL_TOKEN_SUPPLY="10000000" + + laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn contracts:deploy-token-geth" + ``` + +* To transfer a token to an account + + ```bash + # Note: Replace `` with name of the token to be tranferred (e.g. TestToken2) + export $ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"{{ geth_chain_id }}\"[0].contracts..address' /app/deployment/nitro-addresses.json") + export $ACCOUNT="
" + export $AMOUNT="" + + laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $ASSET_ADDRESS --to $ACCOUNT --amount 1000 --network geth" + ``` +
@@ -288,10 +313,10 @@ # Expected output: # { - # "11155111": [ + # "1212": [ # { # "name": "geth", - # "chainId": "11155111", + # "chainId": "1212", # "contracts": { # "ConsensusApp": { # "address": "0xC98aD0B41B9224dad0605be32A9241dB9c67E2e8" @@ -302,7 +327,7 @@ # "VirtualPaymentApp": { # "address": "0x778e4e6297E8BF04C67a20Ec989618d72eB4a19E" # }, - # "Token": { + # "TestToken": { # "address": "0x02ebfB2706527C7310F2a7d9098b2BC61014C5F2" # } # } @@ -327,7 +352,7 @@ ```bash # WS endpoint - nitro_chain_url: "wss://sepolia.laconic.com" + nitro_chain_url: "wss://fixturenet-eth.laconic.com" # Private key for bridge Nitro address nitro_sc_pk: "" @@ -336,7 +361,7 @@ # It also needs to hold L1 tokens to fund Nitro channels nitro_chain_pk: "" - # Deployed L1 Nitro contract addresses + # Deployed Nitro contract addresses na_address: "" vpa_address: "" ca_address: "" @@ -414,7 +439,7 @@ export CA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.ConsensusApp.address' /app/deployment/nitro-addresses.json") export VPA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.VirtualPaymentApp.address' /app/deployment/nitro-addresses.json") - export ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.Token.address' /app/deployment/nitro-addresses.json") + export ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.TestToken.address' /app/deployment/nitro-addresses.json") export BRIDGE_NITRO_ADDRESS=$(laconic-so deployment --dir bridge-deployment exec nitro-rpc-client "nitro-rpc-client get-node-info -p 4005 -h nitro-bridge" | jq -r '.SCAddress') @@ -425,7 +450,7 @@ # Create the required config file cat < nitro-node-config.yml - nitro_chain_url: "wss://sepolia.laconic.com" + nitro_chain_url: "wss://fixturenet-eth.laconic.com" na_address: "$NA_ADDRESS" ca_address: "$CA_ADDRESS" vpa_address: "$VPA_ADDRESS" -- 2.45.2 From fe197e921ee899e4e4f31d7dc6f4bc2b0e42b8fa Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Fri, 18 Oct 2024 12:27:44 +0530 Subject: [PATCH 05/11] Remove unnecessary TODO --- ops/deployments-from-scratch.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index 3a9bf26..32ff993 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -184,8 +184,6 @@ # Private key for a funded L1 account, to be used for contract deployment on L1 # Required since this private key will be utilized by both L1 and L2 nodes of the bridge - # TODO: HARDCODE PK AND USE SAME IN BRIDGE - geth_deployer_pk: "" # Custom token to be deployed @@ -433,7 +431,7 @@ cd /srv/bridge # Create required variables - GETH_CHAIN_ID="11155111" + GETH_CHAIN_ID="1212" export NA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.NitroAdjudicator.address' /app/deployment/nitro-addresses.json") export CA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.ConsensusApp.address' /app/deployment/nitro-addresses.json") -- 2.45.2 From 086342be67dcab0d1686c512ce7d812ca29f8402 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Fri, 18 Oct 2024 14:29:11 +0530 Subject: [PATCH 06/11] Update nitro node config with fixturenet-eth contract addresses --- ops/deployments-from-scratch.md | 21 +++++++++++---------- ops/stage2/nitro-node-config.yml | 10 +++++----- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index 32ff993..6a1ca8d 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -157,6 +157,7 @@ # Remove the deployment dir sudo rm -rf nitro-contracts-deployment + ``` ### Setup @@ -184,7 +185,7 @@ # Private key for a funded L1 account, to be used for contract deployment on L1 # Required since this private key will be utilized by both L1 and L2 nodes of the bridge - geth_deployer_pk: "" + geth_deployer_pk: "888814df89c4358d7ddb3fa4b0213e7331239a80e1f013eaa7b2deca2a41a218" # Custom token to be deployed token_name: "TestToken" @@ -252,7 +253,7 @@ laconic-so deployment --dir nitro-contracts-deployment logs nitro-contracts -f ``` -* To deploy another token +* To deploy another token: ```bash export TOKEN_NAME="TestToken2" @@ -261,16 +262,16 @@ # Note: Token supply denotes actual number of tokens and not the supply in Wei export INITIAL_TOKEN_SUPPLY="10000000" - laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn contracts:deploy-token-geth" + laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && TOKEN_NAME=$TOKEN_NAME TOKEN_SYMBOL=$TOKEN_SYMBOL INITIAL_TOKEN_SUPPLY=$INITIAL_TOKEN_SUPPLY yarn contracts:deploy-token-geth" ``` -* To transfer a token to an account +* To transfer a token to an account: ```bash - # Note: Replace `` with name of the token to be tranferred (e.g. TestToken2) - export $ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"{{ geth_chain_id }}\"[0].contracts..address' /app/deployment/nitro-addresses.json") - export $ACCOUNT="
" - export $AMOUNT="" + # Note: Replace `` with name of the token to be tranferred (e.g. TestToken2) + export ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"{{ geth_chain_id }}\"[0].contracts..address' /app/deployment/nitro-addresses.json") + export ACCOUNT="" + export AMOUNT="" laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $ASSET_ADDRESS --to $ACCOUNT --amount 1000 --network geth" ``` @@ -357,7 +358,7 @@ # Private key should correspond to a funded account on L1 and this account must own the Nitro contracts # It also needs to hold L1 tokens to fund Nitro channels - nitro_chain_pk: "" + nitro_chain_pk: "888814df89c4358d7ddb3fa4b0213e7331239a80e1f013eaa7b2deca2a41a218" # Deployed Nitro contract addresses na_address: "" @@ -466,7 +467,7 @@ * List down L2 channels created by the bridge: ```bash - laconic-so deployment --dir bridge-deployment exec nitro-rpc-client "nitro-rpc-client get-all-l2-channels -p 4006 -h nitro-bridge" + laconic-so deployment --dir bridge-deployment exec nitro-rpc-client "nitro-rpc-client get-all-l2-channels -p 4005 -h nitro-bridge" ```
diff --git a/ops/stage2/nitro-node-config.yml b/ops/stage2/nitro-node-config.yml index 50aa188..7ed3de5 100644 --- a/ops/stage2/nitro-node-config.yml +++ b/ops/stage2/nitro-node-config.yml @@ -1,8 +1,8 @@ -nitro_chain_url: "wss://sepolia.laconic.com" -na_address: "0xfD5276DDfE0E7738Af5F3dA0dE58D36560BbE544" -ca_address: "0xC71F47d58d521aE24FDf5e324969aCD6f83b6Ff8" -vpa_address: "0xEA55dEab3718CF4d084a94Fe4C0D750a80Eb1F2C" -asset_address: "0xa4351114dAE1aBEb2d552d441C9733c72682a45D" +nitro_chain_url: "wss://fixturenet-eth.laconic.com" +na_address: "0x2B6AFbd4F479cE4101Df722cF4E05F941523EaD9" +ca_address: "0xBca48057Da826cB2eb1258E2C679678b269dC262" +vpa_address: "0xCf5207018766587b8cBad4B8B1a1a38c225ebA7A" +asset_address: "0x2b79F4a92c177B4E61F5c4AC37b1B8A623c665A4" bridge_nitro_address: "0xf0E6a85C6D23AcA9ff1b83477D426ed26F218185" nitro_l1_bridge_multiaddr: "/dns4/bridge.laconic.com/tcp/3005/p2p/16Uiu2HAky2PYTfBNHpytybz4ADY9n7boiLgK5btJpTrGVbWC3diZ" nitro_l2_bridge_multiaddr: "/dns4/bridge.laconic.com/tcp/3006/p2p/16Uiu2HAky2PYTfBNHpytybz4ADY9n7boiLgK5btJpTrGVbWC3diZ" -- 2.45.2 From 172a1f9f463f1c6c6efb73251d6e6135824f99a5 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Fri, 18 Oct 2024 16:53:37 +0530 Subject: [PATCH 07/11] Add steps to export asset addresses in a new file --- ops/deployments-from-scratch.md | 24 ++++++++++++++++++------ testnet-nitro-node.md | 25 ++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index 6a1ca8d..2408e5b 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -438,8 +438,6 @@ export CA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.ConsensusApp.address' /app/deployment/nitro-addresses.json") export VPA_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.VirtualPaymentApp.address' /app/deployment/nitro-addresses.json") - export ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.TestToken.address' /app/deployment/nitro-addresses.json") - export BRIDGE_NITRO_ADDRESS=$(laconic-so deployment --dir bridge-deployment exec nitro-rpc-client "nitro-rpc-client get-node-info -p 4005 -h nitro-bridge" | jq -r '.SCAddress') export BRIDGE_PEER_ID=$(laconic-so deployment --dir bridge-deployment exec nitro-rpc-client "nitro-rpc-client get-node-info -p 4005 -h nitro-bridge" | jq -r '.MessageServicePeerId') @@ -447,22 +445,36 @@ export L1_BRIDGE_MULTIADDR="/dns4/bridge.laconic.com/tcp/3005/p2p/$BRIDGE_PEER_ID" export L2_BRIDGE_MULTIADDR="/dns4/bridge.laconic.com/tcp/3006/p2p/$BRIDGE_PEER_ID" - # Create the required config file + # Create the required config files cat < nitro-node-config.yml nitro_chain_url: "wss://fixturenet-eth.laconic.com" na_address: "$NA_ADDRESS" ca_address: "$CA_ADDRESS" vpa_address: "$VPA_ADDRESS" - asset_address: "${ASSET_ADDRESS}" bridge_nitro_address: "$BRIDGE_NITRO_ADDRESS" nitro_l1_bridge_multiaddr: "$L1_BRIDGE_MULTIADDR" nitro_l2_bridge_multiaddr: "$L2_BRIDGE_MULTIADDR" EOF + + $(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq --arg chainId "$GETH_CHAIN_ID" '{ + ($chainId): [ + { + "name": .[$chainId][0].name, + "chainId": .[$chainId][0].chainId, + "contracts": ( + .[$chainId][0].contracts + | to_entries + | map(select(.key | in({"ConsensusApp":1, "NitroAdjudicator":1, "VirtualPaymentApp":1}) | not)) + | from_entries + ) + } + ] + }' /app/deployment/nitro-addresses.json") > assets.json ``` - * The required config file should be generated at `/srv/bridge/nitro-node-config.yml` + * The required config files should be generated at `/srv/bridge/nitro-node-config.yml` and `/srv/bridge/assets.json` - * Check in the generated file at location `ops/stage2/nitro-node-config.yml` within this repository + * Check in the generated files at locations `ops/stage2/nitro-node-config.yml` and `ops/stage2/assets.json` within this repository respectively * List down L2 channels created by the bridge: diff --git a/testnet-nitro-node.md b/testnet-nitro-node.md index 997c0f7..d9eff2a 100644 --- a/testnet-nitro-node.md +++ b/testnet-nitro-node.md @@ -35,12 +35,35 @@ # na_address: "" # ca_address: "" # vpa_address: "" - # asset_address: "" # bridge_nitro_address: "" # nitro_l1_bridge_multiaddr: "" # nitro_l2_bridge_multiaddr: "" ``` +* Fetch required asset addresses: + + ```bash + wget -O assets.json https://git.vdb.to/cerc-io/testnet-laconicd-stack/raw/branch/main/ops/stage2/assets.json + + # Example output: + # { + # "1212": [ + # { + # "name": "geth", + # "chainId": "1212", + # "contracts": { + # "TestToken": { + # "address": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9" + # }, + # "TestToken2": { + # "address": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9" + # } + # } + # } + # ] + # } + ``` + * TODO: Get L1 tokens on your address * Edit `nitro-vars.yml` and add the following variables: -- 2.45.2 From 5ddffd8bc37876d24af420db6243621ffd0921bc Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Fri, 18 Oct 2024 19:02:39 +0530 Subject: [PATCH 08/11] Add steps to perform swaps --- ops/deployments-from-scratch.md | 21 +- ops/stage2/assets.json | 16 ++ testnet-nitro-node.md | 374 ++++++++++++++++++++++++++++---- 3 files changed, 359 insertions(+), 52 deletions(-) create mode 100644 ops/stage2/assets.json diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index 2408e5b..bff8bb5 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -268,8 +268,9 @@ * To transfer a token to an account: ```bash - # Note: Replace `` with name of the token to be tranferred (e.g. TestToken2) - export ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"{{ geth_chain_id }}\"[0].contracts..address' /app/deployment/nitro-addresses.json") + export GETH_CHAIN_ID=1212 + export TOKEN_NAME="" + export ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.$TOKEN_NAME.address' /app/deployment/nitro-addresses.json") export ACCOUNT="" export AMOUNT="" @@ -456,20 +457,20 @@ nitro_l2_bridge_multiaddr: "$L2_BRIDGE_MULTIADDR" EOF - $(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq --arg chainId "$GETH_CHAIN_ID" '{ - ($chainId): [ + laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq --arg chainId \"$GETH_CHAIN_ID\" '{ + (\$chainId): [ { - "name": .[$chainId][0].name, - "chainId": .[$chainId][0].chainId, - "contracts": ( - .[$chainId][0].contracts + \"name\": .[\$chainId][0].name, + \"chainId\": .[\$chainId][0].chainId, + \"contracts\": ( + .[\$chainId][0].contracts | to_entries - | map(select(.key | in({"ConsensusApp":1, "NitroAdjudicator":1, "VirtualPaymentApp":1}) | not)) + | map(select(.key | in({\"ConsensusApp\":1, \"NitroAdjudicator\":1, \"VirtualPaymentApp\":1}) | not)) | from_entries ) } ] - }' /app/deployment/nitro-addresses.json") > assets.json + }' /app/deployment/nitro-addresses.json" > assets.json ``` * The required config files should be generated at `/srv/bridge/nitro-node-config.yml` and `/srv/bridge/assets.json` diff --git a/ops/stage2/assets.json b/ops/stage2/assets.json new file mode 100644 index 0000000..c8f43b9 --- /dev/null +++ b/ops/stage2/assets.json @@ -0,0 +1,16 @@ +{ + "1212": [ + { + "name": "geth", + "chainId": "1212", + "contracts": { + "TestToken": { + "address": "0x2b79F4a92c177B4E61F5c4AC37b1B8A623c665A4" + }, + "TestToken2": { + "address": "0xa6B4B8b84576047A53255649b4994743d9C83A71" + } + } + } + ] +} diff --git a/testnet-nitro-node.md b/testnet-nitro-node.md index d9eff2a..ca498e4 100644 --- a/testnet-nitro-node.md +++ b/testnet-nitro-node.md @@ -207,7 +207,10 @@ Create a ledger channel with the bridge on L1 which is mirrored on L2 cd $DEPLOYMENTS_DIR/nitro-node export BRIDGE_NITRO_ADDRESS=$(yq eval '.bridge_nitro_address' nitro-node-config.yml) - export ASSET_ADDRESS=$(yq eval '.asset_address' nitro-node-config.yml) + + # Get asset addresses from assets.json file + export ASSET_ADDRESS_1=$(jq -r --arg chainId "$CHAIN_ID" '.[$chainId][0].contracts.TestToken.address' assets.json) + export ASSET_ADDRESS_2=$(jq -r --arg chainId "$CHAIN_ID" '.[$chainId][0].contracts.TestToken2.address' assets.json) ``` * Check that check that you have no existing channels on L1 or L2: @@ -223,10 +226,7 @@ Create a ledger channel with the bridge on L1 which is mirrored on L2 * Create a ledger channel between your L1 Nitro node and Bridge with custom asset: ```bash - # Set amount to ledger - LEDGER_AMOUNT=1000000 - - laconic-so deployment --dir l1-nitro-deployment exec nitro-rpc-client "nitro-rpc-client direct-fund $BRIDGE_NITRO_ADDRESS --assetAddress $ASSET_ADDRESS --alphaAmount $LEDGER_AMOUNT --betaAmount $LEDGER_AMOUNT -p 4005 -h nitro-node" + laconic-so deployment --dir l1-nitro-deployment exec nitro-rpc-client "nitro-rpc-client direct-fund $BRIDGE_NITRO_ADDRESS --asset "$ASSET_ADDRESS_1:1000,1000" --asset "$ASSET_ADDRESS_2:1000,1000" -p 4005 -h nitro-node" # Follow your L1 Nitro node logs for progress @@ -257,17 +257,26 @@ Create a ledger channel with the bridge on L1 which is mirrored on L2 ```bash laconic-so deployment --dir l1-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-ledger-channel $LEDGER_CHANNEL_ID -p 4005 -h nitro-node" - # Expected output: + # Example output: # { - # ID: '0x161d289a50222caa781db215bb82a3ede4f557217742245525b8e8cbff04ec21', + # ID: '0xbb28acc2e1543f4b41eb1ab9eb2e354b18554aefe4e7f0fa5f20046869d8553f', # Status: 'Open', - # Balance: { - # AssetAddress: '', - # Me: '', - # Them: '', - # MyBalance: n, - # TheirBalance: n - # }, + # Balances: [ + # { + # AssetAddress: '0xa6b4b8b84576047a53255649b4994743d9c83a71', + # Me: '0xdaaa6ef3bc03f9c7dabc9a02847387d2c19107f5', + # Them: '0xf0e6a85c6d23aca9ff1b83477d426ed26f218185', + # MyBalance: 1000n, + # TheirBalance: 1000n + # }, + # { + # AssetAddress: '0x0000000000000000000000000000000000000000', + # Me: '0xdaaa6ef3bc03f9c7dabc9a02847387d2c19107f5', + # Them: '0xf0e6a85c6d23aca9ff1b83477d426ed26f218185', + # MyBalance: 1000n, + # TheirBalance: 1000n + # } + # ], # ChannelMode: 'Open' # } ``` @@ -277,18 +286,27 @@ Create a ledger channel with the bridge on L1 which is mirrored on L2 ```bash laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-all-ledger-channels -p 4005 -h nitro-node" - # Expected output: + # Example output: # [ # { - # "ID": "0x6a9f5ccf1fa802525d794f4a899897f947615f6acc7141e61e056a8bfca29179", + # "ID": "0xb34210b763d4fdd534190ba11886ad1daa1e411c87be6fd20cff74cd25077c46", # "Status": "Open", - # "Balance": { - # "AssetAddress": "", - # "Me": "", - # "Them": "", - # "MyBalance": n, - # "TheirBalance": n - # }, + # "Balances": [ + # { + # "AssetAddress": "0xa4351114dae1abeb2d552d441c9733c72682a45d", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": 1000, + # "TheirBalance": 1000 + # }, + # { + # "AssetAddress": "0x314e43f9825b10961859c2a62c2de6a765c1c1f1", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": 1000, + # "TheirBalance": 1000 + # } + # ], # "ChannelMode": "Open" # } # ] @@ -298,6 +316,10 @@ Create a ledger channel with the bridge on L1 which is mirrored on L2 Perform payments using a virtual payment channel created with another Nitro node over the mirrored L2 channel with bridge as an intermediary +* Prerequisite: Ledger channel is required to create a payment channel + +* Note: Currently payment channel is created from first asset present in ledger channel + * Run the following commands on deployment machine * Switch to the `nitro-node` directory: @@ -313,18 +335,27 @@ Perform payments using a virtual payment channel created with another Nitro node ```bash laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-all-ledger-channels -p 4005 -h nitro-node" - # Expected output: + # Example output: # [ # { - # "ID": "0x6a9f5ccf1fa802525d794f4a899897f947615f6acc7141e61e056a8bfca29179", + # "ID": "0xb34210b763d4fdd534190ba11886ad1daa1e411c87be6fd20cff74cd25077c46", # "Status": "Open", - # "Balance": { - # "AssetAddress": "", - # "Me": "", - # "Them": "", - # "MyBalance": Xn, - # "TheirBalance": Yn - # }, + # "Balances": [ + # { + # "AssetAddress": "0xa4351114dae1abeb2d552d441c9733c72682a45d", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": 1000, + # "TheirBalance": 1000 + # }, + # { + # "AssetAddress": "0x314e43f9825b10961859c2a62c2de6a765c1c1f1", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": 1000, + # "TheirBalance": 1000 + # } + # ], # "ChannelMode": "Open" # } # ] @@ -342,7 +373,7 @@ Perform payments using a virtual payment channel created with another Nitro node export L2_CHANNEL_ID= # Amount to create the payment channel with - export PAYMENT_CHANNEL_AMOUNT=10000 + export PAYMENT_CHANNEL_AMOUNT=500 ``` * Check for existing payment channels for the L2 channel: @@ -419,18 +450,27 @@ Perform payments using a virtual payment channel created with another Nitro node ```bash laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-all-ledger-channels -p 4005 -h nitro-node" - # Expected output: + # Example output: # [ # { - # "ID": "0x6a9f5ccf1fa802525d794f4a899897f947615f6acc7141e61e056a8bfca29179", + # "ID": "0xb34210b763d4fdd534190ba11886ad1daa1e411c87be6fd20cff74cd25077c46", # "Status": "Open", - # "Balance": { - # "AssetAddress": "", - # "Me": "", - # "Them": "", - # "MyBalance": n, - # "TheirBalance": n - # }, + # "Balances": [ + # { + # "AssetAddress": "0xa4351114dae1abeb2d552d441c9733c72682a45d", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": , + # "TheirBalance": + # }, + # { + # "AssetAddress": "0x314e43f9825b10961859c2a62c2de6a765c1c1f1", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": , + # "TheirBalance": + # } + # ], # "ChannelMode": "Open" # } # ] @@ -438,6 +478,256 @@ Perform payments using a virtual payment channel created with another Nitro node Your balance on the L2 channel should be reduced by total payments done on the virtual payment channel +## Swaps on L2 + +Perform swaps using a swap channel created with another Nitro node over the mirrored L2 channel with bridge as an intermediary + +* Prerequisite: Ledger channel is required to create a swap channel + +* Run the following commands on deployment machine + +* Switch to the `nitro-node` directory: + + ```bash + DEPLOYMENTS_DIR= + + cd $DEPLOYMENTS_DIR/nitro-node + ``` + +* Check status of the mirrored channel on L2: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-all-ledger-channels -p 4005 -h nitro-node" + + # Example output: + # [ + # { + # "ID": "0xb34210b763d4fdd534190ba11886ad1daa1e411c87be6fd20cff74cd25077c46", + # "Status": "Open", + # "Balances": [ + # { + # "AssetAddress": "0xa4351114dae1abeb2d552d441c9733c72682a45d", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": 1000, + # "TheirBalance": 1000 + # }, + # { + # "AssetAddress": "0x314e43f9825b10961859c2a62c2de6a765c1c1f1", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": 1000, + # "TheirBalance": 1000 + # } + # ], + # "ChannelMode": "Open" + # } + # ] + ``` + +* Set required variables: + + ```bash + export BRIDGE_NITRO_ADDRESS=$(yq eval '.bridge_nitro_address' nitro-node-config.yml) + + # Counterparty to create the swap channel with + export COUNTER_PARTY_ADDRESS= + + # Get asset addresses from assets.json file + export ASSET_ADDRESS_1=$(jq -r --arg chainId "$CHAIN_ID" '.[$chainId][0].contracts.TestToken.address' assets.json) + export ASSET_ADDRESS_2=$(jq -r --arg chainId "$CHAIN_ID" '.[$chainId][0].contracts.TestToken2.address' assets.json) + ``` + +* Create swap channel: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client swap-fund $COUNTER_PARTY_ADDRESS $BRIDGE_NITRO_ADDRESS --asset "$ASSET_ADDRESS_1:100,100" --asset "$ASSET_ADDRESS_2:100,100" -p 4005 -h nitro-node" + + # Expected output + # Objective started SwapFund-0x1dbd58d314f123f4b0f4147eee7fd92fa523ba7082d8a75b846f6d1189e2f0e9 + # Channel open 0x1dbd58d314f123f4b0f4147eee7fd92fa523ba7082d8a75b846f6d1189e2f0e9 + ``` + +* Export swap channel ID: + + ```bash + export SWAP_CHANNEL_ID= + ``` + +* Check swap channel: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-swap-channel $SWAP_CHANNEL_ID -p 4005 -h nitro-node" + + # Expected output: + # { + # ID: '0x1dbd58d314f123f4b0f4147eee7fd92fa523ba7082d8a75b846f6d1189e2f0e9', + # Status: 'Open', + # Balances: [ + # { + # AssetAddress: '0xa4351114dae1abeb2d552d441c9733c72682a45d', + # Me: '0x075400039e303b3fb46c0cff0404c5fa61947c05', + # Them: '0xd0ea8b27591b1d070cccd4d30b8d408fe794fdfc', + # MyBalance: 100n, + # TheirBalance: 100n + # }, + # { + # AssetAddress: '0x314e43f9825b10961859c2a62c2de6a765c1c1f1', + # Me: '0x075400039e303b3fb46c0cff0404c5fa61947c05', + # Them: '0xd0ea8b27591b1d070cccd4d30b8d408fe794fdfc', + # MyBalance: 100n, + # TheirBalance: 100n + # } + # ] + # } + ``` + +### Performing swaps + +* One of the participants can initiate the swap and other one will either accept it or reject it + +* For initiating the swap: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client swap-initiate $SWAP_CHANNEL_ID --AssetIn "$ASSET_ADDRESS_1:20" --AssetOut "$ASSET_ADDRESS_2:10" -p 4005 -h nitro-node" + + # Expected output: + # { + # SwapAssetsData: { + # TokenIn: '0xa4351114dae1abeb2d552d441c9733c72682a45d', + # TokenOut: '0x314e43f9825b10961859c2a62c2de6a765c1c1f1', + # AmountIn: 20, + # AmountOut: 10 + # }, + # Channel: '0x1dbd58d314f123f4b0f4147eee7fd92fa523ba7082d8a75b846f6d1189e2f0e9' + # } + ``` + + OR + +* For receiving the swap + + * Get the pending swap: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-pending-swap $SWAP_CHANNEL_ID -p 4005 -h nitro-node" + + # Expected output: + # { + # Id: '0x7d582020753335cfd2f2af14127c9b51c7ed7a5d547a674d9cb04fe62de6ddf3', + # ChannelId: '0x1dbd58d314f123f4b0f4147eee7fd92fa523ba7082d8a75b846f6d1189e2f0e9', + # Exchange: { + # TokenIn: '0xa4351114dae1abeb2d552d441c9733c72682a45d', + # TokenOut: '0x314e43f9825b10961859c2a62c2de6a765c1c1f1', + # AmountIn: 20, + # AmountOut: 10 + # }, + # Sigs: { + # '0': '0x0a018de18a091f7bfb400d9bc64fe958d298882e569c1668c5b1c853b5493221576b2d72074ef6e1899b79e60eaa9934afac5c1e07b7000746bac5b3b1da93311b' + # }, + # Nonce: 2840594896360394000 + # } + ``` + + * Export swap ID: + + ```bash + export SWAP_ID= + ``` + + * Either accept or reject the swap + + * To accept: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client swap-accept $SWAP_ID -p 4005 -h nitro-node" + + # Expected output: + # Confirming Swap with accepted + # Objective complete Swap-0x7d582020753335cfd2f2af14127c9b51c7ed7a5d547a674d9cb04fe62de6ddf3 + ``` + + OR + + * To reject: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client swap-reject $SWAP_ID -p 4005 -h nitro-node" + + # Expected output: + # Confirming Swap with accepted + # Objective complete Swap-0x7d582020753335cfd2f2af14127c9b51c7ed7a5d547a674d9cb04fe62de6ddf3 + ``` + +* Check swap channel: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-swap-channel $SWAP_CHANNEL_ID -p 4005 -h nitro-node" + + # Example output: + # { + # ID: '0x1dbd58d314f123f4b0f4147eee7fd92fa523ba7082d8a75b846f6d1189e2f0e9', + # Status: 'Open', + # Balances: [ + # { + # AssetAddress: '0xa4351114dae1abeb2d552d441c9733c72682a45d', + # Me: '0xd0ea8b27591b1d070cccd4d30b8d408fe794fdfc', + # Them: '0x075400039e303b3fb46c0cff0404c5fa61947c05', + # MyBalance: 120n, + # TheirBalance: 80n + # }, + # { + # AssetAddress: '0x314e43f9825b10961859c2a62c2de6a765c1c1f1', + # Me: '0xd0ea8b27591b1d070cccd4d30b8d408fe794fdfc', + # Them: '0x075400039e303b3fb46c0cff0404c5fa61947c05', + # MyBalance: 90n, + # TheirBalance: 110n + # } + # ] + # } + ``` + +* Close swap channel: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client swap-defund $SWAP_CHANNEL_ID -p 4005 -h nitro-node" + + # Expected output: + # Objective started SwapDefund-0x1dbd58d314f123f4b0f4147eee7fd92fa523ba7082d8a75b846f6d1189e2f0e9 + # Objective complete SwapDefund-0x1dbd58d314f123f4b0f4147eee7fd92fa523ba7082d8a75b846f6d1189e2f0e9 + ``` + +* Check L2 mirrored channel status: + + ```bash + laconic-so deployment --dir l2-nitro-deployment exec nitro-rpc-client "nitro-rpc-client get-all-ledger-channels -p 4005 -h nitro-node" + + # Example output: + # [ + # { + # "ID": "0xb34210b763d4fdd534190ba11886ad1daa1e411c87be6fd20cff74cd25077c46", + # "Status": "Open", + # "Balances": [ + # { + # "AssetAddress": "0xa4351114dae1abeb2d552d441c9733c72682a45d", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": , + # "TheirBalance": + # }, + # { + # "AssetAddress": "0x314e43f9825b10961859c2a62c2de6a765c1c1f1", + # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", + # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", + # "MyBalance": , + # "TheirBalance": + # } + # ], + # "ChannelMode": "Open" + # } + # ] + ``` + ## Clean up * Switch to deployments dir: -- 2.45.2 From 5584262fa8b5fd160672e58d68076686a59f1828 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Mon, 21 Oct 2024 10:26:40 +0530 Subject: [PATCH 09/11] Move instructions to deploy and transfer new tokens to a separate file --- README.md | 1 + ops/deployments-from-scratch.md | 24 +------------ ops/nitro-token-ops.md | 63 +++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 23 deletions(-) create mode 100644 ops/nitro-token-ops.md diff --git a/README.md b/README.md index ac60865..ea70127 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Stacks to run a node for laconic testnet - [Update deployments after code changes](./ops/update-deployments.md) - [Halt stage0 and start stage1](./ops/stage0-to-stage1.md) - [Create deployments from scratch (for reference only)](./ops/deployments-from-scratch.md) +- [Deploy and transfer new tokens for nitro operations](./ops/nitro-token-ops.md) ## Join LORO testnet diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index bff8bb5..fdff7e9 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -253,29 +253,7 @@ laconic-so deployment --dir nitro-contracts-deployment logs nitro-contracts -f ``` -* To deploy another token: - - ```bash - export TOKEN_NAME="TestToken2" - export TOKEN_SYMBOL="TST2" - - # Note: Token supply denotes actual number of tokens and not the supply in Wei - export INITIAL_TOKEN_SUPPLY="10000000" - - laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && TOKEN_NAME=$TOKEN_NAME TOKEN_SYMBOL=$TOKEN_SYMBOL INITIAL_TOKEN_SUPPLY=$INITIAL_TOKEN_SUPPLY yarn contracts:deploy-token-geth" - ``` - -* To transfer a token to an account: - - ```bash - export GETH_CHAIN_ID=1212 - export TOKEN_NAME="" - export ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.$TOKEN_NAME.address' /app/deployment/nitro-addresses.json") - export ACCOUNT="" - export AMOUNT="" - - laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $ASSET_ADDRESS --to $ACCOUNT --amount 1000 --network geth" - ``` +* To deploy a new token and transfer it to another account, refer to this [doc](./nitro-token-ops.md)
diff --git a/ops/nitro-token-ops.md b/ops/nitro-token-ops.md new file mode 100644 index 0000000..7b8fe66 --- /dev/null +++ b/ops/nitro-token-ops.md @@ -0,0 +1,63 @@ +# Nitro Token Ops + +## Setup + +* Go to the directory where `nitro-contracts-deployment` is present: + + ```bash + cd /srv/bridge + ``` + +## Deploy new token + +* To deploy another token: + + ```bash + # These values can be changed to deploy another token with different name and symbol + export TOKEN_NAME="TestToken2" + export TOKEN_SYMBOL="TST2" + + # Note: Token supply denotes actual number of tokens and not the supply in Wei + export INITIAL_TOKEN_SUPPLY="10000000" + + laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "TOKEN_NAME=$TOKEN_NAME TOKEN_SYMBOL=$TOKEN_SYMBOL INITIAL_TOKEN_SUPPLY=$INITIAL_TOKEN_SUPPLY /app/deploy-l1-tokens.sh" + ``` + +* Recreate `assets.json` to include newly deployed token address: + + ```bash + export GETH_CHAIN_ID="1212" + + laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq --arg chainId \"$GETH_CHAIN_ID\" '{ + (\$chainId): [ + { + \"name\": .[\$chainId][0].name, + \"chainId\": .[\$chainId][0].chainId, + \"contracts\": ( + .[\$chainId][0].contracts + | to_entries + | map(select(.key | in({\"ConsensusApp\":1, \"NitroAdjudicator\":1, \"VirtualPaymentApp\":1}) | not)) + | from_entries + ) + } + ] + }' /app/deployment/nitro-addresses.json" > assets.json + ``` + + * The required config file should be generated at `/srv/bridge/assets.json` + + * Check in the generated file at location `ops/stage2/assets.json` within this repository + +## Transfer deployed tokens to given address + +* To transfer a token to an account: + + ```bash + export GETH_CHAIN_ID=1212 + export TOKEN_NAME="" + export ASSET_ADDRESS=$(laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "jq -r '.\"$GETH_CHAIN_ID\"[0].contracts.$TOKEN_NAME.address' /app/deployment/nitro-addresses.json") + export ACCOUNT="" + export AMOUNT="" + + laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cd packages/nitro-protocol && yarn hardhat transfer --contract $ASSET_ADDRESS --to $ACCOUNT --amount 1000 --network geth" + ``` -- 2.45.2 From 66951d5cb850fc9f764a5e0365e49fcd5cbb4df7 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Mon, 21 Oct 2024 10:32:06 +0530 Subject: [PATCH 10/11] Update troubleshooting instructions --- testnet-nitro-node.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/testnet-nitro-node.md b/testnet-nitro-node.md index ca498e4..d67a49e 100644 --- a/testnet-nitro-node.md +++ b/testnet-nitro-node.md @@ -756,6 +756,18 @@ Perform swaps using a swap channel created with another Nitro node over the mirr ## Troubleshooting +* Check the logs of nitro node to see if the objective is completed + + ```bash + # To check logs of L1 nitro-node + laconic-so deployment --dir l1-nitro-deployment logs nitro-node -f --tail 30 + + # To check logs of L2 nitro-node + laconic-so deployment --dir l2-nitro-deployment logs nitro-node -f --tail 30 + ``` + + * If the objective is completed, you can safely stop (`Ctrl+C`) the running CLI command and continue with the further instructions + * Stop (`Ctrl+C`) the direct-fund command if it is stuck * Restart the L1 Nitro node: -- 2.45.2 From 798c5c5461aa4d6654b2b120c8663480ab6b43dd Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Mon, 21 Oct 2024 16:27:47 +0530 Subject: [PATCH 11/11] Remove asset address from nitro node config --- ops/deployments-from-scratch.md | 4 +--- ops/nitro-token-ops.md | 2 +- ops/stage2/nitro-node-config.yml | 1 - testnet-nitro-node.md | 8 ++++---- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index fdff7e9..2833ba9 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -33,8 +33,6 @@ * Stack: -* Source repo: - * Target dir: `/srv/fixturenet-eth/fixturenet-eth-deployment` * Cleanup an existing deployment if required: @@ -190,7 +188,7 @@ # Custom token to be deployed token_name: "TestToken" token_symbol: "TST" - intial_token_supply: "10000000" + initial_token_supply: "129600" ``` * Update the target dir in `setup-vars.yml`: diff --git a/ops/nitro-token-ops.md b/ops/nitro-token-ops.md index 7b8fe66..092446a 100644 --- a/ops/nitro-token-ops.md +++ b/ops/nitro-token-ops.md @@ -18,7 +18,7 @@ export TOKEN_SYMBOL="TST2" # Note: Token supply denotes actual number of tokens and not the supply in Wei - export INITIAL_TOKEN_SUPPLY="10000000" + export INITIAL_TOKEN_SUPPLY="129600" laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "TOKEN_NAME=$TOKEN_NAME TOKEN_SYMBOL=$TOKEN_SYMBOL INITIAL_TOKEN_SUPPLY=$INITIAL_TOKEN_SUPPLY /app/deploy-l1-tokens.sh" ``` diff --git a/ops/stage2/nitro-node-config.yml b/ops/stage2/nitro-node-config.yml index 7ed3de5..ca975ea 100644 --- a/ops/stage2/nitro-node-config.yml +++ b/ops/stage2/nitro-node-config.yml @@ -2,7 +2,6 @@ nitro_chain_url: "wss://fixturenet-eth.laconic.com" na_address: "0x2B6AFbd4F479cE4101Df722cF4E05F941523EaD9" ca_address: "0xBca48057Da826cB2eb1258E2C679678b269dC262" vpa_address: "0xCf5207018766587b8cBad4B8B1a1a38c225ebA7A" -asset_address: "0x2b79F4a92c177B4E61F5c4AC37b1B8A623c665A4" bridge_nitro_address: "0xf0E6a85C6D23AcA9ff1b83477D426ed26F218185" nitro_l1_bridge_multiaddr: "/dns4/bridge.laconic.com/tcp/3005/p2p/16Uiu2HAky2PYTfBNHpytybz4ADY9n7boiLgK5btJpTrGVbWC3diZ" nitro_l2_bridge_multiaddr: "/dns4/bridge.laconic.com/tcp/3006/p2p/16Uiu2HAky2PYTfBNHpytybz4ADY9n7boiLgK5btJpTrGVbWC3diZ" diff --git a/testnet-nitro-node.md b/testnet-nitro-node.md index d67a49e..05af47d 100644 --- a/testnet-nitro-node.md +++ b/testnet-nitro-node.md @@ -712,15 +712,15 @@ Perform swaps using a swap channel created with another Nitro node over the mirr # "AssetAddress": "0xa4351114dae1abeb2d552d441c9733c72682a45d", # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", - # "MyBalance": , - # "TheirBalance": + # "MyBalance": , + # "TheirBalance": # }, # { # "AssetAddress": "0x314e43f9825b10961859c2a62c2de6a765c1c1f1", # "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05", # "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185", - # "MyBalance": , - # "TheirBalance": + # "MyBalance": , + # "TheirBalance": # } # ], # "ChannelMode": "Open" -- 2.45.2