Node

Struct Node 

Source
pub struct Node {
Show 29 fields pub work_dir: String, pub p2p_secret_key: Option<SecretKey>, pub libp2p_keypair: Option<String>, pub libp2p_password: Option<String>, pub libp2p_external_ip: Vec<String>, pub port: u16, pub libp2p_port: u16, pub verbosity: Level, pub disable_filesystem_logging: bool, pub log_path: String, pub peers: Vec<P2pConnectionOutgoingInitOpts>, pub peer_list_file: Option<PathBuf>, pub peer_list_url: Option<Url>, pub max_peers: usize, pub seed: bool, pub run_snarker: Option<AccountSecretKey>, pub snarker_fee: u64, pub snarker_strategy: SnarkerStrategy, pub producer_key: Option<PathBuf>, pub producer_key_password: String, pub coinbase_receiver: Option<AccountPublicKey>, pub record: String, pub no_peers_discovery: bool, pub config: Option<PathBuf>, pub archive_local_storage: bool, pub archive_archiver_process: bool, pub archive_gcp_storage: bool, pub archive_aws_storage: bool, pub rng_seed: Option<String>,
}
Expand description

OpenMina node configuration and runtime options

This struct defines all available command-line parameters for running an OpenMina node. The node can operate in different modes (basic node, block producer, archive node) depending on the parameters provided.

§Basic Usage

# Run a basic node on devnet
openmina node --network devnet

# Run with custom ports and logging
openmina node --network devnet --port 3001 --libp2p-port 8303 --verbosity debug

§Block Producer Mode

# Run as block producer
openmina node --network devnet --producer-key /path/to/key --coinbase-receiver B62q...

§Archive Node Mode

# Run as archive node with local storage
openmina node --network devnet --archive-local-storage

Fields§

§work_dir: String

Working directory for node data, logs, and configuration files

Can be set via OPENMINA_HOME environment variable. Defaults to ~/.openmina

§p2p_secret_key: Option<SecretKey>

P2P networking secret key for node identity

If not provided, a new key will be generated automatically. Can be set via OPENMINA_P2P_SEC_KEY environment variable.

§libp2p_keypair: Option<String>

Compatibility with OCaml Mina node

§libp2p_password: Option<String>

Compatibility with OCaml Mina node

§libp2p_external_ip: Vec<String>

List of external addresses at which this node is accessible

§port: u16

HTTP server port for RPC API and web interface

The node will serve its HTTP API and dashboard on this port. Default: 3000

§libp2p_port: u16

LibP2P networking port for peer-to-peer communication

This port is used for connecting to other nodes in the network. Default: 8302

§verbosity: Level

Logging verbosity level

Controls the amount of logging output. Options in order of verbosity:

  • error: Only show errors
  • warn: Show warnings and errors
  • info: Show informational messages, warnings, and errors (default)
  • debug: Show debug information and all above
  • trace: Show all possible logging output
§disable_filesystem_logging: bool

Disable filesystem logging

§log_path: String

Specify custom path for log files

§peers: Vec<P2pConnectionOutgoingInitOpts>

Initial peers to connect to on startup

Specify peer multiaddresses to connect to when the node starts. Can be used multiple times to add multiple peers.

§Multiaddr Format

Multiaddresses follow the format: /protocol/address/protocol/port/protocol/peer_id

IPv4 Example:

/ip4/192.168.1.100/tcp/8302/p2p/12D3KooWABCDEF1234567890abcdef...

IPv6 Example:

/ip6/2001:db8::1/tcp/8302/p2p/12D3KooWABCDEF1234567890abcdef...

DNS Example:

/dns4/node.example.com/tcp/8302/p2p/12D3KooWABCDEF1234567890abcdef...

Where:

  • ip4/ip6/dns4 specifies the address type
  • IP address or hostname
  • tcp protocol with port number (typically 8302 for OpenMina)
  • p2p protocol with the peer’s public key identifier
§peer_list_file: Option<PathBuf>

File containing initial peers to connect to

Each line should contain a peer’s multiaddr following the format described above.

Example file content:

/ip4/192.168.1.100/tcp/8302/p2p/12D3KooWABCDEF1234567890abcdef...
/ip4/10.0.0.50/tcp/8302/p2p/12D3KooWXYZ9876543210fedcba...
/dns4/bootstrap.example.com/tcp/8302/p2p/12D3KooW123ABC...

Empty lines and lines starting with # are ignored.

§peer_list_url: Option<Url>

URL to fetch initial peers list from

The URL should return a text file with one peer multiaddr per line, using the same format as described in peer_list_file. Useful for dynamic peer discovery from a central bootstrap service.

Example URL response:

/ip4/bootstrap1.example.com/tcp/8302/p2p/12D3KooW...
/ip4/bootstrap2.example.com/tcp/8302/p2p/12D3KooX...
§max_peers: usize

Maximum number of peer connections to maintain

The node will attempt to maintain up to this many connections to other peers in the network. Default: 100

§seed: bool

Run the node in seed mode. No default peers will be added.

§run_snarker: Option<AccountSecretKey>

Run Snark Worker.

Pass snarker private key as an argument.

§snarker_fee: u64

Snark fee, in Mina

§snarker_strategy: SnarkerStrategy§producer_key: Option<PathBuf>

Enable block producer with this key file

MINA_PRIVKEY_PASS must be set to decrypt the keyfile if it is password-protected

§producer_key_password: String

Password used to decrypt the producer key file.

§coinbase_receiver: Option<AccountPublicKey>

Address to send coinbase rewards to (if this node is producing blocks). If not provided, coinbase rewards will be sent to the producer of a block.

Warning: If the key is from a zkApp account, the account’s receive permission must be None.

§record: String§no_peers_discovery: bool

Do not use peers discovery.

§config: Option<PathBuf>

Config JSON file to load at startup.

§archive_local_storage: bool

Enable local precomputed storage.

This option requires the following environment variables to be set:

  • OPENMINA_ARCHIVE_LOCAL_STORAGE_PATH (otherwise the path to the working directory will be used)
§archive_archiver_process: bool

Enable archiver process.

This requires the following environment variables to be set:

  • OPENMINA_ARCHIVE_ADDRESS
§archive_gcp_storage: bool

Enable GCP precomputed storage.

This requires the following environment variables to be set:

  • GCP_CREDENTIALS_JSON
  • GCP_BUCKET_NAME
§archive_aws_storage: bool

Enable AWS precomputed storage.

This requires the following environment variables to be set:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN
  • AWS_DEFAULT_REGION
  • OPENMINA_AWS_BUCKET_NAME
§rng_seed: Option<String>

Implementations§

Source§

impl Node

Source

pub fn run(self) -> Result<()>

Trait Implementations§

Source§

impl Args for Node

Source§

fn group_id() -> Option<Id>

Report the [ArgGroup::id][crate::ArgGroup::id] for this set of arguments
Source§

fn augment_args<'b>(__clap_app: Command) -> Command

Append to [Command] so it can instantiate Self via [FromArgMatches::from_arg_matches_mut] Read more
Source§

fn augment_args_for_update<'b>(__clap_app: Command) -> Command

Append to [Command] so it can instantiate self via [FromArgMatches::update_from_arg_matches_mut] Read more
Source§

impl Debug for Node

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromArgMatches for Node

Source§

fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
Source§

fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>

Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
Source§

fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>

Assign values from ArgMatches to self.
Source§

fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>

Assign values from ArgMatches to self.

Auto Trait Implementations§

§

impl Freeze for Node

§

impl RefUnwindSafe for Node

§

impl Send for Node

§

impl Sync for Node

§

impl Unpin for Node

§

impl UnwindSafe for Node

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T