diff --git a/node/bft/examples/simple_node.rs b/node/bft/examples/simple_node.rs index 668448e6ca..f37ba4d310 100644 --- a/node/bft/examples/simple_node.rs +++ b/node/bft/examples/simple_node.rs @@ -23,19 +23,31 @@ use snarkos_node_bft::{ MAX_GC_ROUNDS, MEMORY_POOL_PORT, }; -use snarkos_node_bft_ledger_service::MockLedgerService; +use snarkos_node_bft_ledger_service::TranslucentLedgerService; use snarkvm::{ + console::algorithms::BHP256, ledger::{ committee::{Committee, MIN_VALIDATOR_STAKE}, narwhal::Data, }, prelude::{ - block::Transaction, + block::{Block, Transaction}, coinbase::{ProverSolution, PuzzleCommitment}, + store::{helpers::memory::ConsensusMemory, ConsensusStore}, + Address, Field, + FromBytes, + Hash, + Ledger, Network, + PrivateKey, + TestRng, + ToBits, + ToBytes, Uniform, + VM, }, + utilities::to_bytes_le, }; use ::bytes::Bytes; @@ -50,8 +62,15 @@ use axum::{ use axum_extra::response::ErasedJson; use clap::{Parser, ValueEnum}; use indexmap::IndexMap; -use rand::{Rng, SeedableRng}; -use std::{collections::HashMap, net::SocketAddr, path::PathBuf, str::FromStr, sync::Arc}; +use parking_lot::Mutex; +use rand::{CryptoRng, Rng, SeedableRng}; +use std::{ + collections::HashMap, + net::SocketAddr, + path::PathBuf, + str::FromStr, + sync::{Arc, OnceLock}, +}; use tokio::sync::oneshot; use tracing_subscriber::{ layer::{Layer, SubscriberExt}, @@ -112,8 +131,17 @@ pub async fn start_bft( let (sender, receiver) = init_primary_channels(); // Initialize the components. let (committee, account) = initialize_components(node_id, num_nodes)?; - // Initialize the mock ledger service. - let ledger = Arc::new(MockLedgerService::new(committee)); + // Initialize the translucent ledger service. + let gen_key = account.private_key(); + let public_balance_per_validator = + (1_500_000_000_000_000 - (num_nodes as u64) * 1_000_000_000_000) / (num_nodes as u64); + let mut balances = IndexMap::
, u64>::new(); + for address in committee.members().keys() { + balances.insert(*address, public_balance_per_validator); + } + let mut rng = TestRng::default(); + let gen_ledger = genesis_ledger(*gen_key, committee.clone(), balances.clone(), &mut rng); + let ledger = Arc::new(TranslucentLedgerService::new(gen_ledger)); // Initialize the storage. let storage = Storage::new(ledger.clone(), MAX_GC_ROUNDS); // Initialize the gateway IP and dev mode. @@ -145,6 +173,7 @@ pub async fn start_primary( num_nodes: u16, peers: HashMap