|
| 1 | +# Plume |
| 2 | + |
| 3 | +import { Callout } from "/src/components/callout"; |
| 4 | + |
| 5 | +Set up your Plume Mainnet or Testnet node |
| 6 | + |
| 7 | +## Prerequisites |
| 8 | + |
| 9 | +- [Setup your Axelar validator](/validator/setup/overview/) |
| 10 | +- [Minimum hardware requirements](https://docs.plume.org/plume/developers/how-to-guides/how-to-run-a-node#hardware-requirements): |
| 11 | + - Memory: 16 GB RAM |
| 12 | + - CPU: 4 CPU cores |
| 13 | + - Disk: NVMe SSD storage |
| 14 | + - [Docker Engine](https://docs.docker.com/engine/install/) |
| 15 | + - [Docker Compose](https://docs.docker.com/compose/install/) |
| 16 | +- [Official Documentation](https://docs.plume.org/plume/developers/how-to-guides/how-to-run-a-node) |
| 17 | + |
| 18 | +## Running a Plume Node |
| 19 | + |
| 20 | +To run a plume node, you'll have to: |
| 21 | + |
| 22 | +1. [Run a Celestia DA Server](/validator/external-chains/plume/#1-run-a-celestia-da-server) |
| 23 | + |
| 24 | +2. [Run a Plume Nitro Node](/validator/external-chains/plume/#2-run-a-plume-nitro-node) |
| 25 | + |
| 26 | +## 1. Run a Celestia DA Server |
| 27 | + |
| 28 | +Create `celestia-server.yaml` file with the below config to run the Celestia DAS server. |
| 29 | + |
| 30 | +<tabs> |
| 31 | + <tab-item title="Mainnet"> |
| 32 | + ```yaml |
| 33 | + TBA |
| 34 | +``` |
| 35 | + </tab-item> |
| 36 | + <tab-item title="Testnet"> |
| 37 | + ```yaml |
| 38 | + services: |
| 39 | + celestia-server-mocha: |
| 40 | + image: ghcr.io/celestiaorg/nitro-das-celestia:v0.4.3 |
| 41 | + container_name: celestia-server-mocha |
| 42 | + entrypoint: |
| 43 | + - /bin/celestia-server |
| 44 | + - --celestia.namespace-id |
| 45 | + - "0cd3a18eab940678" # Make sure to use 0cd3a18eab940678 as the Namespace ID for Plume Testnet. |
| 46 | + - --rpc-addr |
| 47 | + - "0.0.0.0" |
| 48 | + - --rpc-port |
| 49 | + - "26657" |
| 50 | + - --celestia.rpc |
| 51 | + - "CELESTIA_MOCHA_ENDPOINT" # Replace with your Celestia Mocha RPC URL |
| 52 | + - --log-level |
| 53 | + - "DEBUG" |
| 54 | + ports: |
| 55 | + - "1317:1317" |
| 56 | + - "9090:9090" |
| 57 | + - "26657:26657" # Celestia RPC Port |
| 58 | + - "1095:1095" |
| 59 | + - "8080:8080" |
| 60 | +``` |
| 61 | + </tab-item> |
| 62 | +</tabs> |
| 63 | +
|
| 64 | +### Start Celestia DA Server |
| 65 | +
|
| 66 | +```bash |
| 67 | +docker compose -f celestia-server.yaml up -d |
| 68 | +``` |
| 69 | + |
| 70 | +### Check Celestia DA Logs |
| 71 | + |
| 72 | +<tabs> |
| 73 | + <tab-item title="Mainnet"> |
| 74 | + ```bash |
| 75 | + TBA |
| 76 | +``` |
| 77 | + </tab-item> |
| 78 | + <tab-item title="Testnet"> |
| 79 | + ```bash |
| 80 | + docker logs -f celestia-server-mocha |
| 81 | +``` |
| 82 | + </tab-item> |
| 83 | +</tabs> |
| 84 | + |
| 85 | +## 2. Run a Plume Nitro Node |
| 86 | + |
| 87 | +Create `plume.yaml` file with the below config to run the Plume node. |
| 88 | + |
| 89 | +<tabs> |
| 90 | + <tab-item title="Mainnet"> |
| 91 | + ```yaml |
| 92 | + TBA |
| 93 | +``` |
| 94 | + </tab-item> |
| 95 | + <tab-item title="Testnet"> |
| 96 | + ```yaml |
| 97 | + services: |
| 98 | + plume-testnet: |
| 99 | + image: ghcr.io/conduitxyz/plume-nitro:v3.3.2-celestia |
| 100 | + container_name: plume-testnet |
| 101 | + restart: unless-stopped |
| 102 | + ports: |
| 103 | + - "8547:8547" |
| 104 | + - "6070:6070" |
| 105 | + command: |
| 106 | + - --chain.id=98867 |
| 107 | + - --chain.name=conduit-orbit-deployer |
| 108 | + - --http.addr=0.0.0.0 |
| 109 | + - --http.corsdomain=* |
| 110 | + - --http.vhosts=* |
| 111 | + - --ws.expose-all |
| 112 | + - --ws.rpcprefix=/ |
| 113 | + - --ws.port=8547 |
| 114 | + - --ws.addr=0.0.0.0 |
| 115 | + - --ws.origins=* |
| 116 | + - --http.api=net,web3,eth,txpool,debug,admin,arb,arbdebug,arbtrace |
| 117 | + - --ws.api=net,web3,eth,txpool,debug |
| 118 | + - --chain.info-json=[{"chain-id":98867,"parent-chain-id":11155111,"chain-name":"conduit-orbit-deployer","chain-config":{"chainId":98867,"homesteadBlock":0,"daoForkBlock":null,"daoForkSupport":true,"eip150Block":0,"eip150Hash":"0x0000000000000000000000000000000000000000000000000000000000000000","eip155Block":0,"eip158Block":0,"byzantiumBlock":0,"constantinopleBlock":0,"petersburgBlock":0,"istanbulBlock":0,"muirGlacierBlock":0,"berlinBlock":0,"londonBlock":0,"clique":{"period":0,"epoch":0},"arbitrum":{"EnableArbOS":true,"AllowDebugPrecompiles":false,"DataAvailabilityCommittee":true,"InitialArbOSVersion":32,"InitialChainOwner":"0x09a24DD120676EA4034cD47BfA4432a6a87A8a42","GenesisBlockNum":0}},"rollup":{"bridge":"0xC55b89c17d7a35877FA4ea818fea2a70d5765f1c","inbox":"0xb48cdff890199f5De31514024B95F8664F8Af222","sequencer-inbox":"0xbCa991f1831bE1F1E7e5576d5F84A645e70F3E4d","rollup":"0x76268c4a75D1bE588356569acbfE03366d9eDCbD","validator-utils":"0x9d502DD38E6E7FBdd3b7e964345d544ec37f1D72","validator-wallet-creator":"0x684A827456373a0C0379B1C82BA31Ee5E4F88F62","deployed-at":7889627}}] |
| 119 | + - --node.celestia-cfg.enable=true |
| 120 | + - --node.celestia-cfg.url=http://celestia-server-mocha:26657 |
| 121 | + - --node.data-availability.enable=true |
| 122 | + - --node.data-availability.rest-aggregator.enable=true |
| 123 | + - --node.data-availability.rest-aggregator.urls=https://das-plume-testnet-1.t.conduit.xyz |
| 124 | + - --execution.forwarding-target=https://testnet-rpc.plume.org |
| 125 | + - --execution.caching.archive |
| 126 | + - --parent-chain.connection.url=<ETH_SEPOLIA_RPC_URL> # Replace with execution layer client like Geth, Erigon, Nethermind, or Reth rpc url |
| 127 | + - --parent-chain.blob-client.beacon-url=<ETH_SEPOLIA_BEACON_RPC_URL> # Replace with consensus layer client like Lighthouse, Prysm, Nimbus, or Teku rpc url |
| 128 | + - --node.staker.enable=false |
| 129 | + - --node.feed.input.url=wss://relay-plume-testnet-1.t.conduit.xyz |
| 130 | + - --node.sequencer=false |
| 131 | + - --execution.rpc.tx-fee-cap=100 |
| 132 | + - --execution.rpc.gas-cap=500000000 |
| 133 | + - --metrics |
| 134 | + - --metrics-server.addr=0.0.0.0 |
| 135 | + - --metrics-server.port=6070 |
| 136 | + - --metrics-server.update-interval=5s |
| 137 | +``` |
| 138 | + </tab-item> |
| 139 | +</tabs> |
| 140 | +
|
| 141 | +### Start Plume Nitro Node |
| 142 | +
|
| 143 | +```bash |
| 144 | +docker-compose -f plume.yaml up -d |
| 145 | +``` |
| 146 | + |
| 147 | +### Check Plume Nitro Node Logs |
| 148 | + |
| 149 | +<tabs> |
| 150 | + <tab-item title="Mainnet"> |
| 151 | + ```bash |
| 152 | + TBA |
| 153 | +``` |
| 154 | + </tab-item> |
| 155 | + <tab-item title="Testnet"> |
| 156 | + ```bash |
| 157 | + docker logs -f plume-testnet |
| 158 | +``` |
| 159 | + </tab-item> |
| 160 | +</tabs> |
| 161 | + |
| 162 | +After a few minutes, you should see lines that look like this. This means your node has started syncing with the network and is receiving blocks. |
| 163 | + |
| 164 | +```bash |
| 165 | +INFO [06-02|08:03:03.483] InboxTracker sequencerBatchCount=3 messageCount=15 l1Block=7,900,124 l1Timestamp=2025-03-14T09:59:00+0000 |
| 166 | +INFO [06-02|08:03:03.496] created block l2Block=14 l2BlockHash=8405d0..0bfae6 |
| 167 | +INFO [06-02|08:03:04.485] InboxTracker sequencerBatchCount=4 messageCount=16 l1Block=7,902,343 l1Timestamp=2025-03-14T17:50:01+0000 |
| 168 | +INFO [06-02|08:03:04.498] created block l2Block=15 l2BlockHash=f48fcc..2f4412 |
| 169 | +INFO [06-02|08:03:05.551] InboxTracker sequencerBatchCount=5 messageCount=18 l1Block=7,915,027 l1Timestamp=2025-03-16T14:56:01+0000 |
| 170 | +INFO [06-02|08:03:05.568] created block l2Block=16 l2BlockHash=368751..af5f8b |
| 171 | +INFO [06-02|08:03:06.124] InboxTracker sequencerBatchCount=6 messageCount=30 l1Block=7,916,951 l1Timestamp=2025-03-16T22:00:09+0000 |
| 172 | +INFO [06-02|08:03:06.569] created block l2Block=29 l2BlockHash=c9f179..bb553e |
| 173 | +INFO [06-02|08:03:06.655] InboxTracker sequencerBatchCount=7 messageCount=32 l1Block=7,920,611 l1Timestamp=2025-03-17T10:32:32+0000 |
| 174 | +INFO [06-02|08:03:07.570] created block l2Block=31 l2BlockHash=37f20a..e11dcc |
| 175 | +INFO [06-02|08:03:07.620] InboxTracker sequencerBatchCount=9 messageCount=39 l1Block=7,924,098 l1Timestamp=2025-03-17T22:27:20+0000 |
| 176 | +INFO [06-02|08:03:08.381] InboxTracker sequencerBatchCount=11 messageCount=52 l1Block=7,925,945 l1Timestamp=2025-03-18T04:15:34+0000 |
| 177 | +INFO [06-02|08:03:08.570] created block l2Block=51 l2BlockHash=1bd97f..28eb52 |
| 178 | +``` |
| 179 | + |
| 180 | +## Ampd Configuration |
| 181 | + |
| 182 | +Once your node is up and running, you need to add the `Plume` chain to your [ampd daemon's](https://github.com/axelarnetwork/axelar-amplifier/tree/main/ampd) `config.toml`file. This can be done by adding in the following configuration: |
| 183 | + |
| 184 | +<tabs> |
| 185 | + <tab-item title="testnet"> |
| 186 | + ```toml |
| 187 | + TBA |
| 188 | + ``` |
| 189 | + </tab-item> |
| 190 | +</tabs> |
| 191 | + |
| 192 | +## Chain Registration |
| 193 | + |
| 194 | +For your node to be recognized by the Axelar Network, you need to register your verifier's support for the chain with the `ampd` daemon. This can be done by running: |
| 195 | + |
| 196 | +```bash |
| 197 | +ampd register-chain-support amplifier plume |
| 198 | +``` |
0 commit comments