1- use std:: sync:: Arc ;
2-
1+ use super :: {
2+ archive:: ArchiveService ,
3+ block_producer:: BlockProducerService ,
4+ p2p:: webrtc_with_libp2p:: P2pServiceCtx ,
5+ replay:: ReplayerState ,
6+ rpc:: { RpcSender , RpcService } ,
7+ snark_worker:: SnarkWorker ,
8+ snarks:: SnarkBlockVerifyArgs ,
9+ EventReceiver , EventSender ,
10+ } ;
11+ use crate :: rpc:: RpcReceiver ;
312use node:: {
413 core:: { channels:: mpsc, invariants:: InvariantsState } ,
514 event_source:: Event ,
@@ -14,43 +23,51 @@ use sha3::{
1423 digest:: { core_api:: XofReaderCoreWrapper , ExtendableOutput , Update } ,
1524 Shake256 , Shake256ReaderCore ,
1625} ;
17-
18- use crate :: rpc:: RpcReceiver ;
19-
20- use super :: {
21- archive:: ArchiveService ,
22- block_producer:: BlockProducerService ,
23- p2p:: webrtc_with_libp2p:: P2pServiceCtx ,
24- replay:: ReplayerState ,
25- rpc:: { RpcSender , RpcService } ,
26- snark_worker:: SnarkWorker ,
27- snarks:: SnarkBlockVerifyArgs ,
28- EventReceiver , EventSender ,
29- } ;
26+ use std:: sync:: Arc ;
3027
3128pub struct NodeService {
29+ /// Master seed for deterministic random number generation.
3230 pub rng_seed : [ u8 ; 32 ] ,
31+ /// XOF-based RNG for ephemeral keys (derived from seed + "ephemeral").
3332 pub rng_ephemeral : XofReaderCoreWrapper < Shake256ReaderCore > ,
33+ /// XOF-based RNG for static operations (derived from seed + "static").
3434 pub rng_static : XofReaderCoreWrapper < Shake256ReaderCore > ,
35+ /// Standard RNG for general-purpose randomness.
3536 pub rng : StdRng ,
3637
3738 /// Events sent on this channel are retrieved and processed in the
3839 /// `event_source` state machine defined in the `mina-node` crate.
3940 pub event_sender : EventSender ,
41+ /// Channel for consuming events in the event source state machine.
4042 pub event_receiver : EventReceiver ,
4143
44+ /// Channel for asynchronous block proof verification requests.
4245 pub snark_block_proof_verify : mpsc:: TrackedUnboundedSender < SnarkBlockVerifyArgs > ,
4346
47+ /// Manages ledger operations, database access, and staged ledger state.
4448 pub ledger_manager : LedgerManager ,
49+ /// SNARK proof worker for generating transaction proofs (enabled when node
50+ /// acts as SNARK worker).
4551 pub snark_worker : Option < SnarkWorker > ,
52+ /// Block production service including VRF evaluation and block proving
53+ /// (enabled when node acts as block producer).
4654 pub block_producer : Option < BlockProducerService > ,
55+ /// Archive service for storing full blockchain history (enabled when node
56+ /// acts as archive node).
4757 pub archive : Option < ArchiveService > ,
58+ /// P2P networking context (WebRTC and optionally libp2p transports).
4859 pub p2p : P2pServiceCtx ,
4960
61+ /// Runtime statistics and metrics collection.
5062 pub stats : Option < Stats > ,
63+ /// RPC service for external API queries.
5164 pub rpc : RpcService ,
65+ /// Records node state and actions for debugging and replay.
5266 pub recorder : Recorder ,
67+ /// Replayer state for deterministic action replay (only set in replay
68+ /// mode).
5369 pub replayer : Option < ReplayerState > ,
70+ /// State for runtime invariant checking and validation.
5471 pub invariants_state : InvariantsState ,
5572}
5673
0 commit comments