mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: Add dumpgenesis subcommand (#6797)
This commit is contained in:
@ -7,7 +7,8 @@ use crate::{
|
|||||||
},
|
},
|
||||||
cli::ext::RethCliExt,
|
cli::ext::RethCliExt,
|
||||||
commands::{
|
commands::{
|
||||||
config_cmd, db, debug_cmd, import, init_cmd, node, p2p, recover, stage, test_vectors,
|
config_cmd, db, debug_cmd, dump_genesis, import, init_cmd, node, p2p, recover, stage,
|
||||||
|
test_vectors,
|
||||||
},
|
},
|
||||||
core::cli::runner::CliRunner,
|
core::cli::runner::CliRunner,
|
||||||
version::{LONG_VERSION, SHORT_VERSION},
|
version::{LONG_VERSION, SHORT_VERSION},
|
||||||
@ -81,6 +82,7 @@ impl<Ext: RethCliExt> Cli<Ext> {
|
|||||||
Commands::Node(command) => runner.run_command_until_exit(|ctx| command.execute(ctx)),
|
Commands::Node(command) => runner.run_command_until_exit(|ctx| command.execute(ctx)),
|
||||||
Commands::Init(command) => runner.run_blocking_until_ctrl_c(command.execute()),
|
Commands::Init(command) => runner.run_blocking_until_ctrl_c(command.execute()),
|
||||||
Commands::Import(command) => runner.run_blocking_until_ctrl_c(command.execute()),
|
Commands::Import(command) => runner.run_blocking_until_ctrl_c(command.execute()),
|
||||||
|
Commands::DumpGenesis(command) => runner.run_blocking_until_ctrl_c(command.execute()),
|
||||||
Commands::Db(command) => runner.run_blocking_until_ctrl_c(command.execute()),
|
Commands::Db(command) => runner.run_blocking_until_ctrl_c(command.execute()),
|
||||||
Commands::Stage(command) => runner.run_blocking_until_ctrl_c(command.execute()),
|
Commands::Stage(command) => runner.run_blocking_until_ctrl_c(command.execute()),
|
||||||
Commands::P2P(command) => runner.run_until_ctrl_c(command.execute()),
|
Commands::P2P(command) => runner.run_until_ctrl_c(command.execute()),
|
||||||
@ -128,6 +130,8 @@ pub enum Commands<Ext: RethCliExt = ()> {
|
|||||||
/// This syncs RLP encoded blocks from a file.
|
/// This syncs RLP encoded blocks from a file.
|
||||||
#[command(name = "import")]
|
#[command(name = "import")]
|
||||||
Import(import::ImportCommand),
|
Import(import::ImportCommand),
|
||||||
|
/// Dumps genesis block JSON configuration to stdout.
|
||||||
|
DumpGenesis(dump_genesis::DumpGenesisCommand),
|
||||||
/// Database debugging utilities
|
/// Database debugging utilities
|
||||||
#[command(name = "db")]
|
#[command(name = "db")]
|
||||||
Db(db::Command),
|
Db(db::Command),
|
||||||
|
|||||||
47
bin/reth/src/commands/dump_genesis.rs
Normal file
47
bin/reth/src/commands/dump_genesis.rs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
//! Command that dumps genesis block JSON configuration to stdout
|
||||||
|
use crate::args::utils::{chain_help, genesis_value_parser, SUPPORTED_CHAINS};
|
||||||
|
use clap::Parser;
|
||||||
|
use reth_primitives::ChainSpec;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
/// Dumps genesis block JSON configuration to stdout
|
||||||
|
#[derive(Debug, Parser)]
|
||||||
|
pub struct DumpGenesisCommand {
|
||||||
|
/// The chain this node is running.
|
||||||
|
///
|
||||||
|
/// Possible values are either a built-in chain or the path to a chain specification file.
|
||||||
|
#[arg(
|
||||||
|
long,
|
||||||
|
value_name = "CHAIN_OR_PATH",
|
||||||
|
long_help = chain_help(),
|
||||||
|
default_value = SUPPORTED_CHAINS[0],
|
||||||
|
value_parser = genesis_value_parser
|
||||||
|
)]
|
||||||
|
chain: Arc<ChainSpec>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl DumpGenesisCommand {
|
||||||
|
/// Execute the `dump-genesis` command
|
||||||
|
pub async fn execute(self) -> eyre::Result<()> {
|
||||||
|
println!("{}", serde_json::to_string_pretty(self.chain.genesis())?);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_dump_genesis_command_chain_args() {
|
||||||
|
for chain in SUPPORTED_CHAINS {
|
||||||
|
let args: DumpGenesisCommand =
|
||||||
|
DumpGenesisCommand::parse_from(["reth", "--chain", chain]);
|
||||||
|
assert_eq!(
|
||||||
|
Ok(args.chain.chain),
|
||||||
|
chain.parse::<reth_primitives::Chain>(),
|
||||||
|
"failed to parse chain {chain}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -3,8 +3,10 @@
|
|||||||
pub mod config_cmd;
|
pub mod config_cmd;
|
||||||
pub mod db;
|
pub mod db;
|
||||||
pub mod debug_cmd;
|
pub mod debug_cmd;
|
||||||
|
pub mod dump_genesis;
|
||||||
pub mod import;
|
pub mod import;
|
||||||
pub mod init_cmd;
|
pub mod init_cmd;
|
||||||
|
|
||||||
pub mod node;
|
pub mod node;
|
||||||
pub mod p2p;
|
pub mod p2p;
|
||||||
pub mod recover;
|
pub mod recover;
|
||||||
|
|||||||
@ -31,6 +31,7 @@
|
|||||||
- [`reth node`](./cli/reth/node.md)
|
- [`reth node`](./cli/reth/node.md)
|
||||||
- [`reth init`](./cli/reth/init.md)
|
- [`reth init`](./cli/reth/init.md)
|
||||||
- [`reth import`](./cli/reth/import.md)
|
- [`reth import`](./cli/reth/import.md)
|
||||||
|
- [`reth dump-genesis`](./cli/reth/dump-genesis.md)
|
||||||
- [`reth db`](./cli/reth/db.md)
|
- [`reth db`](./cli/reth/db.md)
|
||||||
- [`reth db stats`](./cli/reth/db/stats.md)
|
- [`reth db stats`](./cli/reth/db/stats.md)
|
||||||
- [`reth db list`](./cli/reth/db/list.md)
|
- [`reth db list`](./cli/reth/db/list.md)
|
||||||
|
|||||||
1
book/cli/SUMMARY.md
vendored
1
book/cli/SUMMARY.md
vendored
@ -2,6 +2,7 @@
|
|||||||
- [`reth node`](./reth/node.md)
|
- [`reth node`](./reth/node.md)
|
||||||
- [`reth init`](./reth/init.md)
|
- [`reth init`](./reth/init.md)
|
||||||
- [`reth import`](./reth/import.md)
|
- [`reth import`](./reth/import.md)
|
||||||
|
- [`reth dump-genesis`](./reth/dump-genesis.md)
|
||||||
- [`reth db`](./reth/db.md)
|
- [`reth db`](./reth/db.md)
|
||||||
- [`reth db stats`](./reth/db/stats.md)
|
- [`reth db stats`](./reth/db/stats.md)
|
||||||
- [`reth db list`](./reth/db/list.md)
|
- [`reth db list`](./reth/db/list.md)
|
||||||
|
|||||||
3
book/cli/reth.md
vendored
3
book/cli/reth.md
vendored
@ -4,12 +4,15 @@ Reth
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ reth --help
|
$ reth --help
|
||||||
|
Reth
|
||||||
|
|
||||||
Usage: reth [OPTIONS] <COMMAND>
|
Usage: reth [OPTIONS] <COMMAND>
|
||||||
|
|
||||||
Commands:
|
Commands:
|
||||||
node Start the node
|
node Start the node
|
||||||
init Initialize the database from a genesis file
|
init Initialize the database from a genesis file
|
||||||
import This syncs RLP encoded blocks from a file
|
import This syncs RLP encoded blocks from a file
|
||||||
|
dump-genesis Dumps genesis block JSON configuration to stdout
|
||||||
db Database debugging utilities
|
db Database debugging utilities
|
||||||
stage Manipulate individual stages
|
stage Manipulate individual stages
|
||||||
p2p P2P Debugging utilities
|
p2p P2P Debugging utilities
|
||||||
|
|||||||
111
book/cli/reth/dump-genesis.md
vendored
Normal file
111
book/cli/reth/dump-genesis.md
vendored
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
# reth dump-genesis
|
||||||
|
|
||||||
|
This dumps genesis block JSON configuration to stdout
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ reth dump-genesis
|
||||||
|
Dumps genesis block JSON configuration to stdout
|
||||||
|
|
||||||
|
Usage: reth dump-genesis [OPTIONS]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--chain <CHAIN_OR_PATH>
|
||||||
|
The chain this node is running.
|
||||||
|
Possible values are either a built-in chain or the path to a chain specification file.
|
||||||
|
|
||||||
|
Built-in chains:
|
||||||
|
mainnet, sepolia, goerli, holesky, dev
|
||||||
|
|
||||||
|
[default: mainnet]
|
||||||
|
|
||||||
|
--instance <INSTANCE>
|
||||||
|
Add a new instance of a node.
|
||||||
|
|
||||||
|
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
|
||||||
|
|
||||||
|
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
|
||||||
|
|
||||||
|
Changes to the following port numbers: - DISCOVERY_PORT: default + `instance` - 1 - AUTH_PORT: default + `instance` * 100 - 100 - HTTP_RPC_PORT: default - `instance` + 1 - WS_RPC_PORT: default + `instance` * 2 - 2
|
||||||
|
|
||||||
|
[default: 1]
|
||||||
|
|
||||||
|
-h, --help
|
||||||
|
Print help (see a summary with '-h')
|
||||||
|
|
||||||
|
Logging:
|
||||||
|
--log.stdout.format <FORMAT>
|
||||||
|
The format to use for logs written to stdout
|
||||||
|
|
||||||
|
[default: terminal]
|
||||||
|
|
||||||
|
Possible values:
|
||||||
|
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
|
||||||
|
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
|
||||||
|
- terminal: Represents terminal-friendly formatting for logs
|
||||||
|
|
||||||
|
--log.stdout.filter <FILTER>
|
||||||
|
The filter to use for logs written to stdout
|
||||||
|
|
||||||
|
[default: ]
|
||||||
|
|
||||||
|
--log.file.format <FORMAT>
|
||||||
|
The format to use for logs written to the log file
|
||||||
|
|
||||||
|
[default: terminal]
|
||||||
|
|
||||||
|
Possible values:
|
||||||
|
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
|
||||||
|
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
|
||||||
|
- terminal: Represents terminal-friendly formatting for logs
|
||||||
|
|
||||||
|
--log.file.filter <FILTER>
|
||||||
|
The filter to use for logs written to the log file
|
||||||
|
|
||||||
|
[default: debug]
|
||||||
|
|
||||||
|
--log.file.directory <PATH>
|
||||||
|
The path to put log files in
|
||||||
|
|
||||||
|
[default: <CACHE_DIR>/logs]
|
||||||
|
|
||||||
|
--log.file.max-size <SIZE>
|
||||||
|
The maximum size (in MB) of one log file
|
||||||
|
|
||||||
|
[default: 200]
|
||||||
|
|
||||||
|
--log.file.max-files <COUNT>
|
||||||
|
The maximum amount of log files that will be stored. If set to 0, background file logging is disabled
|
||||||
|
|
||||||
|
[default: 5]
|
||||||
|
|
||||||
|
--log.journald
|
||||||
|
Write logs to journald
|
||||||
|
|
||||||
|
--log.journald.filter <FILTER>
|
||||||
|
The filter to use for logs written to journald
|
||||||
|
|
||||||
|
[default: error]
|
||||||
|
|
||||||
|
--color <COLOR>
|
||||||
|
Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting
|
||||||
|
|
||||||
|
[default: always]
|
||||||
|
|
||||||
|
Possible values:
|
||||||
|
- always: Colors on
|
||||||
|
- auto: Colors on
|
||||||
|
- never: Colors off
|
||||||
|
|
||||||
|
Display:
|
||||||
|
-v, --verbosity...
|
||||||
|
Set the minimum log level.
|
||||||
|
|
||||||
|
-v Errors
|
||||||
|
-vv Warnings
|
||||||
|
-vvv Info
|
||||||
|
-vvvv Debug
|
||||||
|
-vvvvv Traces (warning: very verbose!)
|
||||||
|
|
||||||
|
-q, --quiet
|
||||||
|
Silence all log output
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user