Add deployment details for fixturenet-eth (#30)
Part of [Create bridge channel in go-nitro](https://www.notion.so/Create-bridge-channel-in-go-nitro-22ce80a0d8ae4edb80020a8f250ea270) Co-authored-by: Shreerang Kale <shreerangkale@gmail.com> Reviewed-on: cerc-io/testnet-laconicd-stack#30
This commit is contained in:
+152
-27
@@ -26,6 +26,114 @@
|
||||
|
||||
* laconic-so: see [installation](https://git.vdb.to/cerc-io/testnet-ops/src/branch/main/stack-orchestrator-setup/README.md#setup-stack-orchestrator)
|
||||
|
||||
<details open>
|
||||
<summary>Fixturenet Eth</summary>
|
||||
|
||||
## Fixturenet Eth
|
||||
|
||||
* Stack: <https://git.vdb.to/cerc-io/fixturenet-eth-stacks>
|
||||
|
||||
* 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:
|
||||
- '7545:8545'
|
||||
- '7546: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
|
||||
```
|
||||
|
||||
### Run
|
||||
|
||||
* Start `fixturenet-eth-deployment` deployment:
|
||||
|
||||
```bash
|
||||
laconic-so deployment --dir fixturenet-eth-deployment start
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details open>
|
||||
<summary>Nitro Contracts Deployment</summary>
|
||||
|
||||
@@ -47,6 +155,7 @@
|
||||
|
||||
# Remove the deployment dir
|
||||
sudo rm -rf nitro-contracts-deployment
|
||||
```
|
||||
|
||||
### Setup
|
||||
|
||||
@@ -65,21 +174,21 @@
|
||||
* 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
|
||||
geth_deployer_pk: ""
|
||||
|
||||
# Custom L1 token to be deployed
|
||||
token_name: ""
|
||||
token_symbol: ""
|
||||
intial_token_supply: ""
|
||||
geth_deployer_pk: "888814df89c4358d7ddb3fa4b0213e7331239a80e1f013eaa7b2deca2a41a218"
|
||||
|
||||
# Custom token to be deployed
|
||||
token_name: "TestToken"
|
||||
token_symbol: "TST"
|
||||
initial_token_supply: "129600"
|
||||
```
|
||||
|
||||
* Update the target dir in `setup-vars.yml`:
|
||||
@@ -142,6 +251,8 @@
|
||||
laconic-so deployment --dir nitro-contracts-deployment logs nitro-contracts -f
|
||||
```
|
||||
|
||||
* To deploy a new token and transfer it to another account, refer to this [doc](./nitro-token-ops.md)
|
||||
|
||||
</details>
|
||||
|
||||
<details open>
|
||||
@@ -178,10 +289,10 @@
|
||||
|
||||
# Expected output:
|
||||
# {
|
||||
# "11155111": [
|
||||
# "1212": [
|
||||
# {
|
||||
# "name": "geth",
|
||||
# "chainId": "11155111",
|
||||
# "chainId": "1212",
|
||||
# "contracts": {
|
||||
# "ConsensusApp": {
|
||||
# "address": "0xC98aD0B41B9224dad0605be32A9241dB9c67E2e8"
|
||||
@@ -192,7 +303,7 @@
|
||||
# "VirtualPaymentApp": {
|
||||
# "address": "0x778e4e6297E8BF04C67a20Ec989618d72eB4a19E"
|
||||
# },
|
||||
# "Token": {
|
||||
# "TestToken": {
|
||||
# "address": "0x02ebfB2706527C7310F2a7d9098b2BC61014C5F2"
|
||||
# }
|
||||
# }
|
||||
@@ -217,16 +328,16 @@
|
||||
|
||||
```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: ""
|
||||
|
||||
# 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 L1 Nitro contract addresses
|
||||
# Deployed Nitro contract addresses
|
||||
na_address: ""
|
||||
vpa_address: ""
|
||||
ca_address: ""
|
||||
@@ -298,14 +409,12 @@
|
||||
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")
|
||||
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 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')
|
||||
@@ -313,27 +422,41 @@
|
||||
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 <<EOF > 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"
|
||||
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:
|
||||
|
||||
```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"
|
||||
```
|
||||
|
||||
</details>
|
||||
@@ -1006,8 +1129,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://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:
|
||||
|
||||
@@ -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="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"
|
||||
```
|
||||
|
||||
* 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="<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>"
|
||||
|
||||
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"
|
||||
```
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"1212": [
|
||||
{
|
||||
"name": "geth",
|
||||
"chainId": "1212",
|
||||
"contracts": {
|
||||
"TestToken": {
|
||||
"address": "0x2b79F4a92c177B4E61F5c4AC37b1B8A623c665A4"
|
||||
},
|
||||
"TestToken2": {
|
||||
"address": "0xa6B4B8b84576047A53255649b4994743d9C83A71"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
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"
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user