pub struct NodeBuilder {Show 18 fields
rng_seed: [u8; 32],
custom_initial_time: Option<Timestamp>,
genesis_config: Arc<GenesisConfig>,
p2p: P2pConfig,
p2p_sec_key: Option<SecretKey>,
p2p_is_seed: bool,
p2p_is_started: bool,
block_producer: Option<BlockProducerConfig>,
archive: Option<ArchiveConfig>,
snarker: Option<SnarkerConfig>,
service: NodeServiceBuilder,
verifier_srs: Option<Arc<VerifierSRS>>,
block_verifier_index: Option<BlockVerifier>,
work_verifier_index: Option<TransactionVerifier>,
http_port: Option<u16>,
daemon_conf: Daemon,
chain_id_override: Option<ChainId>,
skip_proof_verification: bool,
}Expand description
Builder for constructing a native Mina node with fluent API.
Fields§
§rng_seed: [u8; 32]Seed for RNG, used in Node::new() for replay. If None in constructor,
a random seed is generated.
custom_initial_time: Option<Timestamp>If Some, overrides system time (for testing). If None, uses real time.
genesis_config: Arc<GenesisConfig>Genesis block configuration.
p2p: P2pConfigP2P networking configuration.
p2p_sec_key: Option<SecretKey>If Some, uses provided key. If None, P2pSecretKey::rand() in build().
p2p_is_seed: boolIf true, node acts as seed (no initial peers needed).
p2p_is_started: boolIf true, P2P service already spawned via custom task spawner.
block_producer: Option<BlockProducerConfig>If Some, enables block production. If None, node is non-producing.
archive: Option<ArchiveConfig>If Some, enables archive mode. If None, no archiving.
snarker: Option<SnarkerConfig>If Some, enables SNARK worker. If None, no SNARK work.
service: NodeServiceBuilderService builder for I/O components.
verifier_srs: Option<Arc<VerifierSRS>>If Some, uses provided SRS. If None, get_srs() in build().
block_verifier_index: Option<BlockVerifier>If Some, uses provided index. If None, BlockVerifier::make() in build().
work_verifier_index: Option<TransactionVerifier>If Some, uses provided. If None, TransactionVerifier::make() in build().
http_port: Option<u16>If Some, starts HTTP RPC server on port. If None, no RPC server.
daemon_conf: DaemonDaemon JSON configuration.
chain_id_override: Option<ChainId>If Some, overrides computed chain ID (for interop testing).
skip_proof_verification: boolIf true, skips SNARK proof verification (for interop testing).
Implementations§
Source§impl NodeBuilder
impl NodeBuilder
pub fn new( custom_rng_seed: Option<[u8; 32]>, daemon_conf: Daemon, genesis_config: Arc<GenesisConfig>, ) -> Self
Sourcepub fn chain_id_override(&mut self, chain_id: ChainId) -> &mut Self
pub fn chain_id_override(&mut self, chain_id: ChainId) -> &mut Self
Override chain ID for P2P networking (interop testing).
Sourcepub fn skip_proof_verification(&mut self, skip: bool) -> &mut Self
pub fn skip_proof_verification(&mut self, skip: bool) -> &mut Self
Skip SNARK proof verification (interop testing).
Sourcepub fn custom_initial_time(&mut self, time: Timestamp) -> &mut Self
pub fn custom_initial_time(&mut self, time: Timestamp) -> &mut Self
Set custom initial time. Used for testing.
Sourcepub fn p2p_sec_key(&mut self, key: P2pSecretKey) -> &mut Self
pub fn p2p_sec_key(&mut self, key: P2pSecretKey) -> &mut Self
If not called, random one will be generated and used instead.
pub fn p2p_libp2p_port(&mut self, port: u16) -> &mut Self
Sourcepub fn p2p_seed_node(&mut self) -> &mut Self
pub fn p2p_seed_node(&mut self) -> &mut Self
Set up node as a seed node.
pub fn p2p_no_discovery(&mut self) -> &mut Self
Sourcepub fn initial_peers(
&mut self,
peers: impl IntoIterator<Item = P2pConnectionOutgoingInitOpts>,
) -> &mut Self
pub fn initial_peers( &mut self, peers: impl IntoIterator<Item = P2pConnectionOutgoingInitOpts>, ) -> &mut Self
Extend p2p initial peers from an iterable.
pub fn external_addrs(&mut self, v: impl Iterator<Item = IpAddr>) -> &mut Self
Sourcepub fn initial_peers_from_file(
&mut self,
path: impl AsRef<Path>,
) -> Result<&mut Self>
pub fn initial_peers_from_file( &mut self, path: impl AsRef<Path>, ) -> Result<&mut Self>
Extend p2p initial peers from file.
Sourcepub fn initial_peers_from_url(&mut self, url: impl IntoUrl) -> Result<&mut Self>
pub fn initial_peers_from_url(&mut self, url: impl IntoUrl) -> Result<&mut Self>
Extend p2p initial peers by opening the url.
pub fn p2p_max_peers(&mut self, limit: usize) -> &mut Self
Sourcepub fn p2p_custom_task_spawner(
&mut self,
spawner: impl TaskSpawner,
) -> Result<&mut Self>
pub fn p2p_custom_task_spawner( &mut self, spawner: impl TaskSpawner, ) -> Result<&mut Self>
Override default p2p task spawner.
Sourcepub fn block_producer(
&mut self,
key: AccountSecretKey,
provers: Option<BlockProver>,
) -> &mut Self
pub fn block_producer( &mut self, key: AccountSecretKey, provers: Option<BlockProver>, ) -> &mut Self
Set up block producer.
Sourcepub fn block_producer_from_file(
&mut self,
path: impl AsRef<Path>,
password: &str,
provers: Option<BlockProver>,
) -> Result<&mut Self>
pub fn block_producer_from_file( &mut self, path: impl AsRef<Path>, password: &str, provers: Option<BlockProver>, ) -> Result<&mut Self>
Set up block producer using keys from file.
pub fn archive( &mut self, options: ArchiveStorageOptions, work_dir: String, ) -> &mut Self
Sourcepub fn custom_coinbase_receiver(
&mut self,
addr: NonZeroCurvePoint,
) -> Result<&mut Self>
pub fn custom_coinbase_receiver( &mut self, addr: NonZeroCurvePoint, ) -> Result<&mut Self>
Receive block producer’s coinbase reward to another account.
pub fn custom_block_producer_config( &mut self, config: BlockProducerConfig, ) -> Result<&mut Self>
pub fn snarker( &mut self, sec_key: AccountSecretKey, fee: u64, strategy: SnarkerStrategy, ) -> &mut Self
Sourcepub fn verifier_srs(&mut self, srs: Arc<VerifierSRS>) -> &mut Self
pub fn verifier_srs(&mut self, srs: Arc<VerifierSRS>) -> &mut Self
Set verifier srs. If not set, default will be used.
pub fn block_verifier_index(&mut self, index: BlockVerifier) -> &mut Self
pub fn work_verifier_index(&mut self, index: TransactionVerifier) -> &mut Self
pub fn gather_stats(&mut self) -> &mut Self
pub fn record(&mut self, recorder: Recorder) -> &mut Self
pub fn http_server(&mut self, port: u16) -> &mut Self
pub fn build(self) -> Result<Node>
Auto Trait Implementations§
impl Freeze for NodeBuilder
impl !RefUnwindSafe for NodeBuilder
impl Send for NodeBuilder
impl !Sync for NodeBuilder
impl Unpin for NodeBuilder
impl UnsafeUnpin for NodeBuilder
impl !UnwindSafe for NodeBuilder
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
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) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
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
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.