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

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 159 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ Before pushing any changes or creating pull request please run `source ci_checks

## Building

If you plan to use already pre-compiled binairies you can directly go to [Running a Ignition node](#running-a-ignition-node).

### System Requirements

There are several system requirements including clang.
Expand Down Expand Up @@ -47,6 +49,163 @@ You'll need `wasm32-unknown-unknown` target installed.
rustup target add wasm32-unknown-unknown
```


## Running a Ignition node

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
fuelup toolchain install latest
```

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

Generate a keypair for your node:
```bash
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
fuel-core run \
--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 \
--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 the `fuel-core` repository :
```
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 keypair for your node :
```
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 --no-default-features --features production -- run \
--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 \
--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.

## Running a Local network from source

Clone the `fuel-core` repository :
```
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 --no-default-features --features production -- 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.

## Setup to make conntributions

### Compiling

We recommend using `xtask` to build fuel-core:
Expand Down Expand Up @@ -111,47 +270,6 @@ $ ./target/debug/fuel-core run --poa-instant=false
2023-06-13T12:44:12.857763Z INFO fuel_core::cli::run: 232: Block production disabled
```

## Running a Ignition node

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

Install the latest fuelup :
```bash
curl -fsSL https://install.fuel.network/ | sh
fuelup toolchain install latest
```

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

Generate a keypair for your node:
```bash
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
fuel-core run \
--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 \
--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
```
Instead of directly placing your personal values on the command we advise you to use, for example, environment variables.

### Troubleshooting

#### Publishing
Expand Down
Loading