In addition to deploying and testing on the Fuel Testnet, you can also run a local Fuel Node.
There are two types of Fuel networks that can be run:
forc node to run a Local Node If you wish to still use the
fuel-corebinary directly, you can skip this section and continue with the steps below.
Make sure you have the latest version of fuelup installed or updated . forc node abstracts all the flags and configuration options of the fuel-core binary and is intended for ease of use. To run a local node using forc, you can use the following command:
forc node localThis command will start a local node with the default configuration (with state persistence). The default configuration is highlighted in green at the top of the command output.
If you want to specify a custom configuration, you can use the --help flag to see the available options. For example:
forc node local --help Users of this new plugin may want to review the parameters before running the node. To accommodate this, forc-node includes a dry-run mode, which can be enabled using:
forc-node --dry-run localInstead of starting the node, this command will print the exact command that would be run, allowing you to verify the parameters beforehand.
fuel-core binary to run a local node If you wish to still use the fuel-core binary directly, you can follow the steps below.
An in-memory node does not persist the blockchain state anywhere, it is only stored in memory as long as the node is active and running.
First ensure your environments open files limit ulimit is increased, example:
ulimit -S -n 32768After ensuring your file limit is increased, to spin-up a local in-memory Fuel node download or copy the local snapshot from here , then run the following command:
fuel-core run --db-type in-memory --debug --snapshot ./your/path/to/chain_config_folderTo deploy a contract to the local node, run the following command:
forc deploy <signing-key> --node-url 127.0.0.1:4000/v1/graphqlOr to deploy with the default signer that is pre-funded by fuel-core:
forc deploy --default-signer --node-url 127.0.0.1:4000/v1/graphql To modify the initial state of the chain, you must configure the state_config.json file in your chain configuration folder.
For simplicity, clone the repository into the directory of your choice.
When using the --snapshot flag later, you can replace ./your/path/to/chain_config_folder with the local folder of the repository you just cloned ./chain-configuration/local/.
To start the node with a custom configuration, you can use the command below:
fuel-core run --snapshot ./your/path/to/chain_config_folder --db-type in-memory --debug To find an example local chain configuration folder for a specific fuel-core version, refer to the chain-configuration/local repo.
You can edit the coins array inside state_config.json to modify the initial assets owned by a given address.
The owner address must be a B256 type address (begins with 0x) instead of a Bech32 type (begins with fuel).
The amount is a numerical value. In the example below, the value translates to 1 ETH.
"coins": [
{
"tx_id": "0x0000000000000000000000000000000000000000000000000000000000000001",
"output_index": 0,
"tx_pointer_block_height": 0,
"tx_pointer_tx_idx": 0,
"owner": "0x488284d46414347c78221d3bad71dfebcff61ab2ae26d71129701d50796f714d",
"amount": 1000000000,
"asset_id": "0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07"
}
]This node does persist the blockchain state locally. To run a local node with persistence a chain configuration file is required.
To start the node, run the following command:
fuel-core run --ip 127.0.0.1 --port 4000 --snapshot ./your/path/to/chain_config_folder --db-path ./.fueldb --debugTo connect to the local node using a browser wallet, import the network address as:
http://127.0.0.1:4000/v1/graphql