⌘K

Icon SunFilledIcon MoonStars
Running a Testnet Node

Icon LinkRunning a local Fuel node connected to Testnet using P2P

Icon LinkInstallation

The Fuel toolchain is built on top of the Rust programming language. To install Rust, you can use the rustup tool.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

To install the Fuel toolchain, you can use the fuelup-init script. This will install forc, forc-client, forc-fmt, forc-lsp, forc-wallet as well as fuel-core in ~/.fuelup/bin.

curl https://install.fuel.network | sh
Icon InfoCircle

Having problems? Visit the installation guide or post your question in our forum Icon Link.

Icon LinkGetting a Sepolia (Ethereum Testnet) API Key

An API key from any RPC provider that supports the Sepolia network will work. Relayers will help listen to events from the Ethereum network. We recommend either Infura Icon Link or Alchemy Icon Link

The endpoints should look like the following:

Icon LinkInfura

https://sepolia.infura.io/v3/{YOUR_API_KEY}

Icon LinkAlchemy

https://eth-sepolia.g.alchemy.com/v2/{YOUR_API_KEY}

Note that using other network endpoints will result in the relayer failing to start.

Icon LinkGenerating a P2P Key

Generate a new P2P key pairing by running the following command:

fuel-core-keygen new --key-type peering
{
  "peer_id":"16Uiu2HAmEtVt2nZjzpXcAH7dkPcFDiL3z7haj6x78Tj659Ri8nrs",
  "secret":"b0ab3227974e06d236d265bd1077bb0522d38ead16c4326a5dff2f30edf88496",
  "type":"peering"
}
### Do not share or lose this private key! Press any key to complete. ###

Make sure you save this somewhere safe so you don't need to generate a new key pair in the future.

Icon LinkChain Configuration

To run a local node with persistence, you must configure a chainConfig.json file.

Here is the specific configuration Icon Link for beta-5:

{
  "chain_name": "Testnet Beta 5",
  "block_gas_limit": 30000000,
  "initial_state": {
    "coins": [
      {
        "owner": "0xa1184d77d0d08a064e03b2bd9f50863e88faddea4693a05ca1ee9b1732ea99b7",
        "amount": "0x1000000000000000",
        "asset_id": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "owner": "0xb5566df884bee4e458151c2fe4082c8af38095cc442c61e0dc83a371d70d88fd",
        "amount": "0x1000000000000000",
        "asset_id": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "owner": "0x9da7247e1d63d30d69f136f0f8654ee8340362c785b50f0a60513c7edbf5bb7c",
        "amount": "0x1000000000000000",
        "asset_id": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "owner": "0x4b2ca966aad1a9d66994731db5138933cf61679107c3cde2a10d9594e47c084e",
        "amount": "0x1000000000000000",
        "asset_id": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "owner": "0x26183fbe7375045250865947695dfc12500dcc43efb9102b4e8c4d3c20009dcb",
        "amount": "0x1000000000000000",
        "asset_id": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "owner": "0x81f3a10b61828580d06cc4c7b0ed8f59b9fb618be856c55d33decd95489a1e23",
        "amount": "0x1000000000000000",
        "asset_id": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "owner": "0x587aa0482482efea0234752d1ad9a9c438d1f34d2859b8bef2d56a432cb68e33",
        "amount": "0x1000000000000000",
        "asset_id": "0x0000000000000000000000000000000000000000000000000000000000000000"
      }
    ],
    "contracts": [
      {
        "contract_id": "0x7777777777777777777777777777777777777777777777777777777777777777",
        "code": "0x9000000994318e6e453f30e85bf6088f7161d44e57b86a6af0c955d22b353f91b2465f5e6140000a504d00205d4d30001a4860004945048076440001240400005050c0043d51345024040000",
        "salt": "0x1bfd51cb31b8d0bc7d93d38f97ab771267d8786ab87073e0c2b8f9ddc44b274e"
      }
    ]
  },
  "consensus_parameters": {
    "tx_params": {
      "max_inputs": 255,
      "max_outputs": 255,
      "max_witnesses": 255,
      "max_gas_per_tx": 30000000,
      "max_size": 17825792
    },
    "predicate_params": {
      "max_predicate_length": 1048576,
      "max_predicate_data_length": 1048576,
      "max_message_data_length": 1048576,
      "max_gas_per_predicate": 30000000
    },
    "script_params": {
      "max_script_length": 1048576,
      "max_script_data_length": 1048576
    },
    "contract_params": {
      "contract_max_size": 16777216,
      "max_storage_slots": 65536
    },
    "fee_params": {
      "gas_price_factor": 92,
      "gas_per_byte": 63
    },
    "chain_id": 0,
    "gas_costs": {
      "add": 2,
      "addi": 2,
      "aloc": 1,
      "and": 2,
      "andi": 2,
      "bal": 366,
      "bhei": 2,
      "bhsh": 2,
      "burn": 33949,
      "cb": 2,
      "cfei": 2,
      "cfsi": 2,
      "croo": 40,
      "div": 2,
      "divi": 2,
      "eck1": 3347,
      "ecr1": 46165,
      "ed19": 4210,
      "eq": 2,
      "exp": 2,
      "expi": 2,
      "flag": 1,
      "gm": 2,
      "gt": 2,
      "gtf": 16,
      "ji": 2,
      "jmp": 2,
      "jne": 2,
      "jnei": 2,
      "jnzi": 2,
      "jmpf": 2,
      "jmpb": 2,
      "jnzf": 2,
      "jnzb": 2,
      "jnef": 2,
      "jneb": 2,
      "lb": 2,
      "log": 754,
      "lt": 2,
      "lw": 2,
      "mint": 35718,
      "mlog": 2,
      "mod": 2,
      "modi": 2,
      "move": 2,
      "movi": 2,
      "mroo": 5,
      "mul": 2,
      "muli": 2,
      "mldv": 4,
      "noop": 1,
      "not": 2,
      "or": 2,
      "ori": 2,
      "poph": 3,
      "popl": 3,
      "pshh": 4,
      "pshl": 4,
      "ret_contract": 733,
      "rvrt_contract": 722,
      "sb": 2,
      "sll": 2,
      "slli": 2,
      "srl": 2,
      "srli": 2,
      "srw": 253,
      "sub": 2,
      "subi": 2,
      "sw": 2,
      "sww": 29053,
      "time": 79,
      "tr": 46242,
      "tro": 33251,
      "wdcm": 3,
      "wqcm": 3,
      "wdop": 3,
      "wqop": 3,
      "wdml": 3,
      "wqml": 4,
      "wddv": 5,
      "wqdv": 7,
      "wdmd": 11,
      "wqmd": 18,
      "wdam": 9,
      "wqam": 12,
      "wdmm": 11,
      "wqmm": 11,
      "xor": 2,
      "xori": 2,
      "call": {
        "LightOperation": {
          "base": 21687,
          "units_per_gas": 4
        }
      },
      "ccp": {
        "LightOperation": {
          "base": 59,
          "units_per_gas": 20
        }
      },
      "csiz": {
        "LightOperation": {
          "base": 59,
          "units_per_gas": 195
        }
      },
      "k256": {
        "LightOperation": {
          "base": 282,
          "units_per_gas": 3
        }
      },
      "ldc": {
        "LightOperation": {
          "base": 45,
          "units_per_gas": 65
        }
      },
      "logd": {
        "LightOperation": {
          "base": 1134,
          "units_per_gas": 2
        }
      },
      "mcl": {
        "LightOperation": {
          "base": 3,
          "units_per_gas": 523
        }
      },
      "mcli": {
        "LightOperation": {
          "base": 3,
          "units_per_gas": 526
        }
      },
      "mcp": {
        "LightOperation": {
          "base": 3,
          "units_per_gas": 448
        }
      },
      "mcpi": {
        "LightOperation": {
          "base": 7,
          "units_per_gas": 585
        }
      },
      "meq": {
        "LightOperation": {
          "base": 11,
          "units_per_gas": 1097
        }
      },
      "retd_contract": {
        "LightOperation": {
          "base": 1086,
          "units_per_gas": 2
        }
      },
      "s256": {
        "LightOperation": {
          "base": 45,
          "units_per_gas": 3
        }
      },
      "scwq": {
        "HeavyOperation": {
          "base": 30375,
          "gas_per_unit": 28628
        }
      },
      "smo": {
        "LightOperation": {
          "base": 64196,
          "units_per_gas": 1
        }
      },
      "srwq": {
        "HeavyOperation": {
          "base": 262,
          "gas_per_unit": 249
        }
      },
      "swwq": {
        "HeavyOperation": {
          "base": 28484,
          "gas_per_unit": 26613
        }
      },
      "contract_root": {
        "LightOperation": {
          "base": 45,
          "units_per_gas": 1
        }
      },
      "state_root": {
        "HeavyOperation": {
          "base": 350,
          "gas_per_unit": 176
        }
      },
      "new_storage_per_byte": 63,
      "vm_initialization": {
        "LightOperation": {
          "base": 1645,
          "units_per_gas": 14
        }
      }
    },
    "base_asset_id": "0000000000000000000000000000000000000000000000000000000000000000"
  },
  "consensus": {
    "PoA": {
      "signing_key": "f65d6448a273b531ee942c133bb91a6f904c7d7f3104cdaf6b9f7f50d3518871"
    }
  }
}

Icon LinkRunning a Local Node

Finally to put everything together to start the node, run the following command:

fuel-core run \
--service-name {ANY_SERVICE_NAME} \
--keypair {P2P_SECRET} \
--relayer {ETH_RPC_ENDPOINT}\
--ip 0.0.0.0 --port 4000 --peering-port 30333 \
--db-path  ~/.fuel_beta5 \
--chain ./chainConfig.json \
--utxo-validation --poa-instant false --enable-p2p \
--min-gas-price 1 --max-block-size 18874368  --max-transmit-size 18874368 \
--reserved-nodes /dns4/p2p-beta-5.fuel.network/tcp/30333/p2p/16Uiu2HAmSMqLSibvGCvg8EFLrpnmrXw1GZ2ADX3U2c9ttQSvFtZX,/dns4/p2p-beta-5.fuel.network/tcp/30334/p2p/16Uiu2HAmVUHZ3Yimoh4fBbFqAb3AC4QR1cyo8bUF4qyi8eiUjpVP \
--sync-header-batch-size 100 \
--enable-relayer \
--relayer-v2-listening-contracts 0x557c5cE22F877d975C2cB13D0a961a182d740fD5 \
--relayer-da-deploy-height 4867877 \
--relayer-log-page-size 2000

For the full description details of each flag above, run:

fuel-core run --help

Icon LinkConnecting to the local node from a browser wallet

To connect to the local node using a browser wallet, import the network address as:

http://0.0.0.0:4000/graphql