Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add document for launching Ignition node from source and Local network from source #2502

Merged
merged 8 commits into from
Jan 6, 2025
126 changes: 120 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ $ ./target/debug/fuel-core run --poa-instant=false

If you want to participate in the Ignition network with your own node you can launch it following these simple commands.

### From pre-compiled binaries

Install the latest fuelup :
```bash
curl -fsSL https://install.fuel.network/ | sh
Expand All @@ -139,19 +141,131 @@ fuel-core run \
--service-name fuel-ignition-node \
--keypair {KEYGEN_SECRET_KEY} \
--relayer {ETHEREUM_RPC_ENDPOINT} \
--ip=0.0.0.0 --port 4000 --peering-port 30333 \
--ip=0.0.0.0 \
--port 4000 \
--peering-port 30333 \
--db-path ~/.fuel-ignition \
--snapshot {PATH_TO_CHAIN_CONFIGURATION_FOLDER}/ignition \
--utxo-validation \
--poa-instant false \
--enable-p2p \
--bootstrap-nodes /dnsaddr/mainnet.fuel.network \
--sync-header-batch-size 100 \
--relayer-v2-listening-contracts 0xAEB0c00D0125A8a788956ade4f4F12Ead9f65DDf \
--relayer-da-deploy-height 20620434 \
--relayer-log-page-size 2000 \
--sync-block-stream-buffer-size 30 \
--min-gas-price 1000 \
--starting-gas-price 1000 \
--gas-price-change-percent 10 \
--gas-price-threshold-percent 50
```
All the values used for the L1 relayer are based on Ethereum Mainnet make sure `{ETHEREUM_RPC_ENDPOINT}` is a RPC communicating to Ethereum Mainnet network.

Instead of directly placing your personal values on the command we advise you to use, for example, environment variables.

### From source
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the difference with "Running a Local network from source"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The difference is the parameters, here we sue the chain config of ignition we use the realyer address on mainnet, we don't produce blocks, we use the bootstrap peers...


Clone the chain configuration folder :
```
git clone https://github.com/FuelLabs/chain-configuration
```

Clone this repository :
AurelienFT marked this conversation as resolved.
Show resolved Hide resolved
```
git clone https://github.com/FuelLabs/fuel-core.git
```

Go to the latest release tag for ignition on the `fuel-core` repository :
```
git checkout v0.40.2
```

Generate a keyparr for your node :
AurelienFT marked this conversation as resolved.
Show resolved Hide resolved
```
cargo run --bin fuel-core-keygen -- new --key-type peering
```
and copy the secret key displayed.

Run your node (change all variable with {} to your own personal variables):
```bash
cargo run --release --bin fuel-core -- run \
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are missing "production" feature. The command should looks like cargo build --release -p fuel-core-bin --no-default-features --features production.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

--enable-relayer \
--service-name fuel-ignition-node \
--keypair {KEYGEN_SECRET_KEY} \
--relayer {ETHEREUM_RPC_ENDPOINT} \
--ip=0.0.0.0 \
--port 4000 \
--peering-port 30333 \
--db-path ~/.fuel-ignition \
--snapshot {PATH_TO_CHAIN_CONFIGURATION_FOLDER}/ignition \
--utxo-validation --poa-instant false --enable-p2p \
--utxo-validation \
--poa-instant false \
--enable-p2p \
--bootstrap-nodes /dnsaddr/mainnet.fuel.network \
--sync-header-batch-size 100 \
--relayer-v2-listening-contracts=0xAEB0c00D0125A8a788956ade4f4F12Ead9f65DDf \
--relayer-da-deploy-height=20620434 \
--relayer-log-page-size=100 \
--sync-block-stream-buffer-size 30
--relayer-v2-listening-contracts 0xAEB0c00D0125A8a788956ade4f4F12Ead9f65DDf \
--relayer-da-deploy-height 20620434 \
--relayer-log-page-size 2000 \
--sync-block-stream-buffer-size 30 \
--min-gas-price 1000 \
--starting-gas-price 1000 \
--gas-price-change-percent 10 \
--gas-price-threshold-percent 50
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need to provide information which fields to use, for that we have documentation and we can point to it. Maybe we need to rework "Running a Ignition node" and point to the documentation to avoid multiple places.

We just need to describe how to build the production ready binary.

Copy link
Contributor Author

@AurelienFT AurelienFT Dec 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see where is the documentation. It's only the --help ? I think it's valuable to be able to copy-paste a command that is working as expected to connect to Ignition/Launch a local network and then if you need something specific you can just tweak some parameters. We saw in the past weeks that if some parameters are not present the node isn't working as expected so to avoid confusion I find it useful to first set everything correctly (such as a --ignition that we could have) and then play with flags if you want.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to remove duplicate

```
All the values used for the L1 relayer are based on Ethereum Mainnet make sure `{ETHEREUM_RPC_ENDPOINT}` is a RPC communicating to Ethereum Mainnet network.

Instead of directly placing your personal values on the command we advise you to use, for example, environment variables.

## Running a Local network from source

Clone this repository :
AurelienFT marked this conversation as resolved.
Show resolved Hide resolved
```
git clone https://github.com/FuelLabs/fuel-core.git
```

Generate a keypair for the p2p of your node :
```
cargo run --bin fuel-core-keygen -- new --key-type peering
```
and copy the secret key displayed.

Generate a keypair for the block production of your node :
```
cargo run --bin fuel-core-keygen -- new --key-type block-production
```
and copy the secret key displayed.

Run your node (change all variable with {} to your own personal variables):
```bash
cargo run --release --bin fuel-core -- run \
--enable-relayer \
--consensus-key {KEYGEN_BLOCK_PRODUCTION_SECRET_KEY}
--service-name fuel-local-node \
--relayer {ETHEREUM_RPC_ENDPOINT} \
--enable-p2p \
--ip=0.0.0.0 \
--port 4000 \
--peering-port 30333 \
--keypair {KEYGEN_P2P_SECRET_KEY} \
--db-path ~/.fuel-local \
--utxo-validation \
--poa-interval-period 1s \
--sync-header-batch-size 100 \
--relayer-v2-listening-contracts 0xAEB0c00D0125A8a788956ade4f4F12Ead9f65DDf \
--relayer-da-deploy-height 20620434 \
--relayer-log-page-size 2000 \
--sync-block-stream-buffer-size 30 \
--min-gas-price 1000 \
--starting-gas-price 1000 \
--gas-price-change-percent 10 \
--gas-price-threshold-percent 50
```
All the values used for the L1 relayer are based on Ethereum Sepolia make sure `{ETHEREUM_RPC_ENDPOINT}` is a RPC communicating to Ethereum Sepolia network.

Instead of directly placing your personal values on the command we advise you to use, for example, environment variables.


### Troubleshooting

#### Publishing
Expand Down
Loading