From 92c2fc225224037d5f17a0d6612e4bb43befddbd Mon Sep 17 00:00:00 2001 From: Sebastien Chapuis Date: Fri, 12 Apr 2024 08:33:34 +0200 Subject: [PATCH] Fix after rebase --- ledger/src/proofs/gates.rs | 1 + ledger/src/transaction_pool.rs | 2 +- node/native/src/service.rs | 13 ++++- node/src/action_kind.rs | 2 +- node/src/ledger/ledger_manager.rs | 9 ++++ node/src/ledger/ledger_service.rs | 80 ++++--------------------------- 6 files changed, 33 insertions(+), 74 deletions(-) diff --git a/ledger/src/proofs/gates.rs b/ledger/src/proofs/gates.rs index c1bdbcff0..344c9e8f1 100644 --- a/ledger/src/proofs/gates.rs +++ b/ledger/src/proofs/gates.rs @@ -267,6 +267,7 @@ pub fn read_constraints_data( ) -> Option<(InternalVars, Vec>>)> { use mina_p2p_messages::bigint::BigInt; + #[allow(non_local_definitions)] impl From<&VRaw> for V { fn from(value: &VRaw) -> Self { match value { diff --git a/ledger/src/transaction_pool.rs b/ledger/src/transaction_pool.rs index e94338804..ff64db433 100644 --- a/ledger/src/transaction_pool.rs +++ b/ledger/src/transaction_pool.rs @@ -1402,7 +1402,7 @@ mod transaction_hash { } // TODO: Remove this -struct Envelope { +pub struct Envelope { pub data: T, } diff --git a/node/native/src/service.rs b/node/native/src/service.rs index 6c69418c7..9d3f04ef9 100644 --- a/node/native/src/service.rs +++ b/node/native/src/service.rs @@ -14,9 +14,9 @@ use mina_p2p_messages::v2::{ }; #[cfg(not(feature = "p2p-libp2p"))] use node::p2p::service_impl::mio::MioService; -use openmina_core::block::ArcBlockWithHash; use node::snark::user_command_verify::{SnarkUserCommandVerifyId, SnarkUserCommandVerifyService}; -use node::transaction_pool::VerifyUserCommandsService; +use node::transaction_pool::{TransactionPoolLedgerService, VerifyUserCommandsService}; +use openmina_core::block::ArcBlockWithHash; use rand::prelude::*; use redux::ActionMeta; use serde::Serialize; @@ -433,6 +433,15 @@ impl SnarkBlockVerifyService for NodeService { } } +impl TransactionPoolLedgerService for NodeService { + fn get_mask(&self, ledger_hash: &LedgerHash) -> Result { + self.ledger_manager + .get_mask(&ledger_hash) + .map(|(mask, _)| mask) + .ok_or_else(|| "Mask not found".to_string()) + } +} + impl SnarkUserCommandVerifyService for NodeService { fn verify_init( &mut self, diff --git a/node/src/action_kind.rs b/node/src/action_kind.rs index 75ff5ead6..cb0c8261a 100644 --- a/node/src/action_kind.rs +++ b/node/src/action_kind.rs @@ -423,7 +423,7 @@ pub enum ActionKind { } impl ActionKind { - pub const COUNT: u16 = 352; + pub const COUNT: u16 = 354; } impl std::fmt::Display for ActionKind { diff --git a/node/src/ledger/ledger_manager.rs b/node/src/ledger/ledger_manager.rs index d93498ce7..faa67004e 100644 --- a/node/src/ledger/ledger_manager.rs +++ b/node/src/ledger/ledger_manager.rs @@ -21,6 +21,7 @@ use crate::block_producer::{ use crate::ledger::LedgerAddress; use crate::p2p::channels::rpc::StagedLedgerAuxAndPendingCoinbases; use crate::rpc::{RpcLedgerService, RpcScanStateSummaryScanStateJob}; +use crate::transaction_pool::TransactionPoolLedgerService; use crate::transition_frontier::sync::{ ledger::snarked::TransitionFrontierSyncLedgerSnarkedService, ledger::staged::{ @@ -348,6 +349,14 @@ impl redux::TimeService for LedgerManager {} impl redux::Service for LedgerManager {} +impl TransactionPoolLedgerService for LedgerManager { + fn get_mask(&self, ledger_hash: &LedgerHash) -> Result { + self.get_mask(&ledger_hash) + .map(|(mask, _)| mask) + .ok_or_else(|| "Mask not found".to_string()) + } +} + impl TransitionFrontierSyncLedgerSnarkedService for LedgerManager { fn compute_snarked_ledger_hashes( &self, diff --git a/node/src/ledger/ledger_service.rs b/node/src/ledger/ledger_service.rs index b5c309a50..aea81b83f 100644 --- a/node/src/ledger/ledger_service.rs +++ b/node/src/ledger/ledger_service.rs @@ -401,76 +401,7 @@ impl LedgerCtx { Some(producers) } -impl LedgerSyncState { - fn mask(&self, hash: &LedgerHash) -> Option<(Mask, bool)> { - self.snarked_ledgers - .get(hash) - .cloned() - .map(|mask| (mask, false)) - .or_else(|| Some((self.staged_ledgers.get(hash)?.ledger(), true))) - } - - fn pending_sync_snarked_ledger_mask(&self, hash: &LedgerHash) -> Result { - self.snarked_ledgers - .get(hash) - .cloned() - .ok_or_else(|| format!("Missing sync snarked ledger {}", hash.to_string())) - } - - /// Returns a [Mask] instance for the snarked ledger with [hash]. If it doesn't - /// exist a new instance is created. - fn snarked_ledger_mut(&mut self, hash: LedgerHash) -> &mut Mask { - self.snarked_ledgers.entry(hash.clone()).or_insert_with(|| { - let mut ledger = Mask::create(LEDGER_DEPTH); - ledger.set_cached_hash_unchecked(&LedgerAddress::root(), hash.0.to_field()); - ledger - }) - } - - fn staged_ledger_mut(&mut self, hash: &LedgerHash) -> Option<&mut StagedLedger> { - self.staged_ledgers.get_mut(&hash) - } -} - -pub trait LedgerService: redux::Service { - fn ctx(&self) -> &LedgerCtx; - fn ctx_mut(&mut self) -> &mut LedgerCtx; -} - -impl TransactionPoolLedgerService for T { - fn get_mask(&self, ledger_hash: &LedgerHash) -> Result { - self.ctx() - .mask(&ledger_hash) - .map(|(mask, _)| mask) - .ok_or_else(|| "Mask not found".to_string()) - } -} - -impl TransitionFrontierSyncLedgerSnarkedService for T { - fn compute_snarked_ledger_hashes( - &mut self, - snarked_ledger_hash: &LedgerHash, - ) -> Result<(), String> { - self.ctx_mut() - .compute_snarked_ledger_hashes(snarked_ledger_hash)?; - - Ok(()) - } - - fn copy_snarked_ledger_contents_for_sync( - &mut self, - origin_snarked_ledger_hash: LedgerHash, - target_snarked_ledger_hash: LedgerHash, - overwrite: bool, - ) -> Result { - self.ctx_mut().copy_snarked_ledger_contents_for_sync( - origin_snarked_ledger_hash, - target_snarked_ledger_hash, - overwrite, - ) - } - - fn child_hashes_get( + pub fn child_hashes_get( &mut self, snarked_ledger_hash: LedgerHash, parent: &LedgerAddress, @@ -1149,6 +1080,15 @@ pub trait LedgerService: redux::Service { fn ledger_manager(&self) -> &LedgerManager; } +impl TransactionPoolLedgerService for T { + fn get_mask(&self, ledger_hash: &LedgerHash) -> Result { + self.ledger_manager() + .get_mask(&ledger_hash) + .map(|(mask, _)| mask) + .ok_or_else(|| "Mask not found".to_string()) + } +} + impl TransitionFrontierSyncLedgerSnarkedService for T { fn compute_snarked_ledger_hashes( &self,