From 9dabdcfe8515435cfecc897c022847ae541b340e Mon Sep 17 00:00:00 2001 From: King <40714633+aditya-manit@users.noreply.github.com> Date: Fri, 9 Feb 2024 20:13:11 +0530 Subject: [PATCH] Add frax node instructions (#754) * add fraxtal node instructions * add to overview.mdx * add to navigation.ts * Update Requirements * add mainnet instructions to existing * optimized imports * Update src/layouts/navigation.ts Co-authored-by: Milap Sheth * Update src/pages/validator/external-chains/frax.mdx Co-authored-by: Milap Sheth * Update src/pages/validator/external-chains/frax.mdx Co-authored-by: Milap Sheth * Update src/pages/validator/external-chains/frax.mdx Co-authored-by: Milap Sheth * Update src/pages/validator/external-chains/overview.mdx Co-authored-by: Milap Sheth * add a link for common docker compose commands --------- Co-authored-by: Milap Sheth Co-authored-by: Milap Sheth --- src/layouts/navigation.ts | 1 + .../validator/external-chains/fraxtal.mdx | 217 ++++++++++++++++++ .../validator/external-chains/overview.mdx | 1 + 3 files changed, 219 insertions(+) create mode 100644 src/pages/validator/external-chains/fraxtal.mdx diff --git a/src/layouts/navigation.ts b/src/layouts/navigation.ts index 25312bb88..73926b803 100644 --- a/src/layouts/navigation.ts +++ b/src/layouts/navigation.ts @@ -267,6 +267,7 @@ export const getNavigation = (section) => { { title: "Ethereum", href: "/validator/external-chains/ethereum" }, { title: "Fantom", href: "/validator/external-chains/fantom" }, { title: "Filecoin", href: "/validator/external-chains/filecoin" }, + { title: "Fraxtal", href: "/validator/external-chains/fraxtal" }, { title: "Immutable zkEVM", href: "/validator/external-chains/immutable", diff --git a/src/pages/validator/external-chains/fraxtal.mdx b/src/pages/validator/external-chains/fraxtal.mdx new file mode 100644 index 000000000..25aef93ff --- /dev/null +++ b/src/pages/validator/external-chains/fraxtal.mdx @@ -0,0 +1,217 @@ +# Fraxtal + +Instructions to set up your frax node. + +## Requirements + +- [Setup your Axelar validator](/validator/setup) +- Minimum hardware requirements: 8 AWS vCPU+, 8GB RAM, 512GB of SSD free storage space. +- MacOS or Ubuntu 22.04 (tested on 22.04) +- [Official Documentation](https://github.com/FraxFinance/fraxtal-node) +- [Official Documentation](https://docs.frax.finance) + +## Prerequisites + +- [Common Docker Compose Commands](./optimism#common-node-operations) +```bash +sudo apt-get install jq -y +snap install docker +``` + +## Clone Repo + +```bash +git clone https://github.com/FraxFinance/fraxtal-node.git +cd fraxtal-node +``` + +## Set Environment Variables +Note: Update your shell profile in accordance with the shell you are using + + + + ```bash + echo export ENVIRONMENT=mainnet >> $HOME/.profile + echo export DOCKER_COMPOSE_FILE_LOCATION=$HOME/fraxtal-node/docker-compose.yml >> $HOME/.profile + ``` + + + ```bash + echo export ENVIRONMENT=testnet >> $HOME/.profile + echo export DOCKER_COMPOSE_FILE_LOCATION=$HOME/fraxtal-node/testnet.docker-compose.yml >> $HOME/.profile + ``` + + + +Apply your changes +```bash +source $HOME/.profile +``` + +## Set node config + + + + ```bash + cp .env.SAMPLE .env + ``` + + + + ```bash + cp .env.testnet.SAMPLE .env.testnet + ``` + + + +Set the following config options in `fraxtal-node/.env.testnet` or `fraxtal-node/.env`: +```bash +# Your Ethereum RPC node endpoint. As an L2, your Frax node will verify tx finality by +# querying your own Ethereum RPC node. +OP_NODE_L1_ETH_RPC= +``` + +## Start the node +```bash +docker compose -f $DOCKER_COMPOSE_FILE_LOCATION up -d +``` + +This should show an output like this: +```bash +[+] Running 3/3 + ✔ mainnet-node 2 layers [⣿⣿] 0B/0B Pulled 3.0s + ✔ 619be1103602 Pull complete 0.4s + ✔ b1167d0af7e0 Pull complete 1.7s +[+] Running 3/3 + ✔ Network fraxtal-node_default Created 0.1s + ✔ Container fraxtal-node-mainnet-geth-1 Healthy 10.9s + ✔ Container fraxtal-node-mainnet-node-1 Started 11.2s +``` + +After it is done, verify by listing the services and their status + ```bash +docker compose -f $DOCKER_COMPOSE_FILE_LOCATION ps +``` + +You should see these 2 services running +```bash +NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS +fraxtal-node-testnet-geth-1 us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101305.1 "geth-entrypoint" testnet-geth 24 minutes ago Up 24 minutes (healthy) 30303/tcp, 30303/udp, 0.0.0.0:8548->8545/tcp, :::8548->8545/tcp, 0.0.0.0:8549->8546/tcp, :::8549->8546/tcp +fraxtal-node-testnet-node-1 public.ecr.aws/d7v3u3t4/fraxchain-testnet-optimism/op-node:a371733ab8b8ca288829e94734fbcdf88907e7c3 "node-entrypoint" testnet-node 24 minutes ago Up 24 minutes (healthy) 0.0.0.0:9222->9222/tcp, 0.0.0.0:9222->9222/udp, :::9222->9222/tcp, :::9222->9222/udp, 0.0.0.0:7545->8545/tcp, :::7545->8545/tcp +``` + +## Check logs + +#### Verify OP geth logs + +```bash +docker compose -f $DOCKER_COMPOSE_FILE_LOCATION logs $ENVIRONMENT-geth --since 2m -f +``` + +```bash +fraxtal-node-testnet-geth-1 | INFO [02-04|07:42:29.722] Chain head was updated number=39537 hash=26c5c6..e67efa root=14a631..1e99bf elapsed=5.40331ms age=2mo2w6d +fraxtal-node-testnet-geth-1 | INFO [02-04|07:42:29.734] Starting work on payload id=0x95a98a726f1398ee +fraxtal-node-testnet-geth-1 | INFO [02-04|07:42:29.751] Imported new potential chain segment number=39538 hash=219454..97cd30 blocks=1 txs=1 mgas=0.051 elapsed=16.713ms mgasps=3.022 age=2mo2w6d triedirty=0.00B +``` + +#### Verify OP node logs + +```bash +docker compose -f $DOCKER_COMPOSE_FILE_LOCATION logs $ENVIRONMENT-node --since 2m -f +``` +You should see logs like + +```bash +fraxtal-node-testnet-node-1 | t=2024-02-04T07:41:42+0000 lvl=info msg="Sync progress" reason="processed safe block derived from L1" l2_finalized=0xd878b889605ac928844c12371b381d80a088fce5ae91cc4f25b913c7eb5bddaf:38833 l2_safe=0x9575d501f128d1fcd40229e6a3bc8d21d1f94667e2a81a5b01941d7ac2b11de1:38929 l2_safe_pending=0x9575d501f128d1fcd40229e6a3bc8d21d1f94667e2a81a5b01941d7ac2b11de1:38929 l2_unsafe=0x9575d501f128d1fcd40229e6a3bc8d21d1f94667e2a81a5b01941d7ac2b11de1:38929 l2_engineSyncTarget=0x9575d501f128d1fcd40229e6a3bc8d21d1f94667e2a81a5b01941d7ac2b11de1:38929 l2_time=1,700,075,234 l1_derived=0xfe9d9478267c3908ff1f59bfbebde3805b90c78015c672a72e1707b006a7bcc5:324630 +fraxtal-node-testnet-node-1 | t=2024-02-04T07:41:42+0000 lvl=info msg="Found next batch" batch_type=SingularBatch batch_timestamp=1,700,075,236 parent_hash=0x9575d501f128d1fcd40229e6a3bc8d21d1f94667e2a81a5b01941d7ac2b11de1 batch_epoch=0x18798cd2aec043a8fb1e8d1cf3fd76eb1ae146e9dc10c04de37051eb6bd01bd3:324624 txs=0 +fraxtal-node-testnet-node-1 | t=2024-02-04T07:41:42+0000 lvl=info msg="generated attributes in payload queue" txs=1 timestamp=1,700,075,236 +fraxtal-node-testnet-node-1 | t=2024-02-04T07:41:42+0000 lvl=info msg="Received signed execution payload from p2p" id=0x9ee568dd726943cb819f1baa231bb7e870d40e12e7f699189dab492ef5fdc4ea:3517563 peer=16Uiu2HAkyvyfKpDjZd8FasvbQ3SALrvYy5AJZKF4SeTd4xYEVWeg +fraxtal-node-testnet-node-1 | t=2024-02-04T07:41:42+0000 lvl=info msg="inserted block" hash=0xba734087a84f209a1c45585578bb10ac4dfa85af0eb147a2c7249eb9f4a7d63d number=38930 state_root=0x475ea2621418e01da0e350c51c20b388aad7f0307673adb35d66947693949050 timestamp=1,700,075,236 parent=0x9575d501f128d1fcd40229e6a3bc8d21d1f94667e2a81a5b01941d7ac2b11de1 prev_randao=0x01317c6e3c9c717e8819927f2c33eb83505d4d72ac627fb6883cc042573be0ed fee_recipient=0x4200000000000000000000000000000000000011 txs=1 update_safe=true +fraxtal-node-testnet-node-1 | t=2024-02-04T07:41:42+0000 lvl=info msg="Sync progress" reason="processed safe block derived from L1" l2_finalized=0xd878b889605ac928844c12371b381d80a088fce5ae91cc4f25b913c7eb5bddaf:38833 l2_safe=0xba734087a84f209a1c45585578bb10ac4dfa85af0eb147a2c7249eb9f4a7d63d:38930 l2_safe_pending=0xba734087a84f209a1c45585578bb10ac4dfa85af0eb147a2c7249eb9f4a7d63d:38930 l2_unsafe=0xba734087a84f209a1c45585578bb10ac4dfa85af0eb147a2c7249eb9f4a7d63d:38930 l2_engineSyncTarget=0xba734087a84f209a1c45585578bb10ac4dfa85af0eb147a2c7249eb9f4a7d63d:38930 l2_time=1,700,075,236 l1_derived=0xfe9d9478267c3908ff1f59bfbebde3805b90c78015c672a72e1707b006a7bcc5:324630 +fraxtal-node-testnet-node-1 | t=2024-02-04T07:41:42+0000 lvl=info msg="Advancing bq origin" origin=0x356f2620c66268c1e21dce36067271b894ce8cf3cfabbe205b42b7d5116f35f1:324631 originBehind=false +fraxtal-node-testnet-node-1 | t=2024-02-04T07:41:42+0000 lvl=warn msg="tx in inbox with unauthorized submitter" origin=0x356f2620c66268c1e21dce36067271b894ce8cf3cfabbe205b42b7d5116f35f1:324631 index=0 txHash=0xfc516bf5107835f384f2589f372498be041415aa75132378a222f06a6b5981fb err=nil +fraxtal-node-testnet-node-1 | t=2024-02-04T07:41:42+0000 lvl=warn msg="tx in inbox with unauthorized submitter" origin=0x356f2620c66268c1e21dce36067271b894ce8cf3cfabbe205b42b7d5116f35f1:324631 index=1 txHash=0x71a9a9d2c5ae121b1121d6a2d2c4f4b3dfe3b864c37e49690b89454f2a41ae3b err=nil +``` + +## Verify node sync status + +### RPC Endpoint + +```bash +echo "$(curl -4 ifconfig.co):7545" +``` + +#### Method: +```bash +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"optimism_syncStatus","params":[],"id":1}' [rpc] | jq +``` + +If you get something like this in response to the above rpc call, your node is setup correctly + +```bash +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "current_l1": { + "hash": "0x24f7d66e8c80d0c6a598e9206ba1abc81264c1cc68afc14d8eca3f04fa81f921", + "number": 323360, + "parentHash": "0x99ce84a2d455425f0c3a68b2b83a74301810fc8c726cba384b08d9a79d9381d1", + "timestamp": 1700059308 + }, +.......... +.......... + "engine_sync_target": { + "hash": "0x7b7ed381aac9cec2a43b37c30779832cb8a82e044e38b4ada0f1c90719bd3d50", + "number": 30955, + "parentHash": "0x882503037e902b2476e1d4c308a895cc3b936c5ee19b45361dc26c9631d29ae0", + "timestamp": 1700059286, + "l1origin": { + "hash": "0x49ee7a7398bc5010b48de111fc0ebc99d63d38ac8233202c913646d901e15213", + "number": 323353 + }, + "sequenceNumber": 2 + } + } +} +``` + +You can compare the block height on your node with explorer ([mainnet](https://explorer.mainnet.frax.com) or [testnet](https://explorer.testnet.frax.com)), +use your RPC node only when it has caught up with the latest block height. + +#### Sync Status of Frax optimism Execution Node + +You can check your status by connecting to geth console + +```bash +docker exec -it fraxtal-node-$ENVIRONMENT-geth-1 geth attach http://localhost:8545 +> eth.blockNumber +35065 # it will show you the latest block - number here is just an example + +> eth.syncing +false +``` + +## Configure vald + +In order for `vald` to connect to your Fraxtal node, your `rpc_addr` should be exposed in +vald's `config.toml` + + + + ```bash + [[axelar_bridge_evm]] + name = "fraxtal" + rpc_addr = "http://IP:PORT" + start-with-bridge = true + ``` + + + ```bash + [[axelar_bridge_evm]] + name = "fraxtal" + rpc_addr = "http://IP:PORT" + start-with-bridge = true + ``` + + diff --git a/src/pages/validator/external-chains/overview.mdx b/src/pages/validator/external-chains/overview.mdx index 89aafcdb5..21e15b65b 100644 --- a/src/pages/validator/external-chains/overview.mdx +++ b/src/pages/validator/external-chains/overview.mdx @@ -31,6 +31,7 @@ See below for details. Read this entire article before you begin supporting exte - [Ethereum](ethereum) - [Fantom](fantom) - [Filecoin](filecoin) + - [Fraxtal](fraxtal) - [Immutable zkEVM](immutable) - [Kava](kava) - [Mantle](mantle)