Add deployment details for fixturenet-eth #30

Merged
nabarun merged 11 commits from deep-stack/testnet-laconicd-stack:sk-setup-fixturenet-eth into main 2024-10-21 11:07:02 +00:00
3 changed files with 359 additions and 52 deletions
Showing only changes of commit 5ddffd8bc3 - Show all commits

View File

@ -268,8 +268,9 @@
* To transfer a token to an account:
```bash
# Note: Replace `<token-name>` 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.<token-name>.address' /app/deployment/nitro-addresses.json")
export GETH_CHAIN_ID=1212
export TOKEN_NAME="<name-of-token-to-be-transferred>"
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="<target-account-address>"
export AMOUNT="<transfer-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`

16
ops/stage2/assets.json Normal file
View File

@ -0,0 +1,16 @@
{
"1212": [
{
"name": "geth",
"chainId": "1212",
"contracts": {
"TestToken": {
"address": "0x2b79F4a92c177B4E61F5c4AC37b1B8A623c665A4"
},
"TestToken2": {
"address": "0xa6B4B8b84576047A53255649b4994743d9C83A71"
}
}
}
]
}

View File

@ -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: '<l1-asset-address>',
# Me: '<your-nitro-address>',
# Them: '<bridge-nitro-address>',
# MyBalance: <ledger-amount>n,
# TheirBalance: <ledger-amount>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": "<l2-asset-address>",
# "Me": "<your-nitro-address>",
# "Them": "<bridge-nitro-address>",
# "MyBalance": <ledger-amount>n,
# "TheirBalance": <ledger-amount>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": "<l2-asset-address>",
# "Me": "<your-nitro-address>",
# "Them": "<bridge-nitro-address>",
# "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=<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": "<l2-asset-address>",
# "Me": "<your-nitro-address>",
# "Them": "<bridge-nitro-address>",
# "MyBalance": <your-updated-balance>n,
# "TheirBalance": <bridge-updated-balance>n
# },
# "Balances": [
# {
# "AssetAddress": "0xa4351114dae1abeb2d552d441c9733c72682a45d",
# "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05",
# "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185",
# "MyBalance": <updated balance>,
# "TheirBalance": <updated balance>
# },
# {
# "AssetAddress": "0x314e43f9825b10961859c2a62c2de6a765c1c1f1",
# "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05",
# "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185",
# "MyBalance": <updated balance>,
# "TheirBalance": <updated balance>
# }
# ],
# "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=<path-to-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=<counterparty-nitro-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": <update balance>,
# "TheirBalance": <update balance>
# },
# {
# "AssetAddress": "0x314e43f9825b10961859c2a62c2de6a765c1c1f1",
# "Me": "0x075400039e303b3fb46c0cff0404c5fa61947c05",
# "Them": "0xf0e6a85c6d23aca9ff1b83477d426ed26f218185",
# "MyBalance": <update balance>,
# "TheirBalance": <update balance>
# }
# ],
# "ChannelMode": "Open"
# }
# ]
```
## Clean up
* Switch to deployments dir: