remove unnecessary mempoolitem trait

This commit is contained in:
Sergio Chouhy 2025-08-08 16:53:15 -03:00
parent 22c16c1ec9
commit 13cc82e3ed
4 changed files with 50 additions and 92 deletions

View File

@ -1,14 +1,10 @@
use std::collections::VecDeque;
use mempoolitem::MemPoolItem;
pub mod mempoolitem;
pub struct MemPool<Item> {
items: VecDeque<Item>,
}
impl<Item: MemPoolItem> MemPool<Item> {
impl<Item> MemPool<Item> {
pub fn new() -> Self {
Self {
items: VecDeque::new(),
@ -55,7 +51,7 @@ impl<Item: MemPoolItem> MemPool<Item> {
}
}
impl<Item: MemPoolItem> Default for MemPool<Item> {
impl<Item> Default for MemPool<Item> {
fn default() -> Self {
Self::new()
}
@ -74,14 +70,6 @@ mod tests {
id: ItemId,
}
impl MemPoolItem for TestItem {
type Identifier = ItemId;
fn identifier(&self) -> Self::Identifier {
self.id
}
}
fn test_item_with_id(id: u64) -> TestItem {
TestItem { id }
}

View File

@ -1,4 +0,0 @@
pub trait MemPoolItem {
type Identifier;
fn identifier(&self) -> Self::Identifier;
}

View File

@ -12,17 +12,15 @@ use common::{
};
use config::SequencerConfig;
use mempool::MemPool;
use mempool_transaction::MempoolTransaction;
use sequencer_store::SequecerChainStore;
use serde::{Deserialize, Serialize};
pub mod config;
pub mod mempool_transaction;
pub mod sequencer_store;
pub struct SequencerCore {
pub store: SequecerChainStore,
pub mempool: MemPool<MempoolTransaction>,
pub mempool: MemPool<nssa::PublicTransaction>,
pub sequencer_config: SequencerConfig,
pub chain_height: u64,
}
@ -61,7 +59,7 @@ impl SequencerCore {
config.is_genesis_random,
&config.initial_accounts,
),
mempool: MemPool::<MempoolTransaction>::default(),
mempool: MemPool::default(),
chain_height: config.genesis_id,
sequencer_config: config,
}
@ -95,10 +93,8 @@ impl SequencerCore {
fn execute_check_transaction_on_state(
&mut self,
mempool_tx: MempoolTransaction,
tx: nssa::PublicTransaction,
) -> Result<nssa::PublicTransaction, ()> {
let tx = mempool_tx.auth_tx;
self.store.state.transition_from_public_transaction(&tx)?;
// self.store.pub_tx_store.add_tx(mempool_tx.auth_tx);
@ -116,7 +112,7 @@ impl SequencerCore {
let valid_transactions = transactions
.into_iter()
.filter_map(|mempool_tx| self.execute_check_transaction_on_state(mempool_tx).ok())
.filter_map(|tx| self.execute_check_transaction_on_state(tx).ok())
.collect();
let prev_block_hash = self
@ -151,7 +147,6 @@ mod tests {
use common::transaction::{SignaturePrivateKey, Transaction, TransactionBody, TxKind};
use k256::{ecdsa::SigningKey, FieldBytes};
use mempool_transaction::MempoolTransaction;
use nssa::Program;
use secp256k1_zkp::Tweak;
@ -255,8 +250,7 @@ mod tests {
fn common_setup(sequencer: &mut SequencerCore) {
let tx = create_dummy_transaction();
let mempool_tx = MempoolTransaction { auth_tx: tx };
sequencer.mempool.push_item(mempool_tx);
sequencer.mempool.push_item(tx);
sequencer
.produce_new_block_with_mempool_transactions()
@ -281,17 +275,19 @@ mod tests {
.try_into()
.unwrap();
let balance_acc_1 = sequencer.store.state.get_account_by_address(&nssa::Address::new(acc1_addr)).balance;
let balance_acc_2 = sequencer.store.state.get_account_by_address(&nssa::Address::new(acc2_addr)).balance;
let balance_acc_1 = sequencer
.store
.state
.get_account_by_address(&nssa::Address::new(acc1_addr))
.balance;
let balance_acc_2 = sequencer
.store
.state
.get_account_by_address(&nssa::Address::new(acc2_addr))
.balance;
assert_eq!(
10000,
balance_acc_1
);
assert_eq!(
20000,
balance_acc_2
);
assert_eq!(10000, balance_acc_1);
assert_eq!(20000, balance_acc_2);
}
#[test]
@ -334,11 +330,19 @@ mod tests {
assert_eq!(
10000,
sequencer.store.state.get_account_by_address(&nssa::Address::new(acc1_addr)).balance
sequencer
.store
.state
.get_account_by_address(&nssa::Address::new(acc1_addr))
.balance
);
assert_eq!(
20000,
sequencer.store.state.get_account_by_address(&nssa::Address::new(acc2_addr)).balance
sequencer
.store
.state
.get_account_by_address(&nssa::Address::new(acc2_addr))
.balance
);
}
@ -402,8 +406,7 @@ mod tests {
// let tx_roots = sequencer.get_tree_roots();
let tx = sequencer.transaction_pre_check(tx).unwrap();
let result =
sequencer.execute_check_transaction_on_state(MempoolTransaction { auth_tx: tx });
let result = sequencer.execute_check_transaction_on_state(tx);
assert_eq!(result.err().unwrap(), ());
}
@ -433,9 +436,7 @@ mod tests {
//Passed pre-check
assert!(result.is_ok());
let result = sequencer.execute_check_transaction_on_state(MempoolTransaction {
auth_tx: result.unwrap(),
});
let result = sequencer.execute_check_transaction_on_state(result.unwrap());
let is_failed_at_balance_mismatch = matches!(
result.err().unwrap(),
// TransactionMalformationErrorKind::BalanceMismatch { tx: _ }
@ -465,12 +466,18 @@ mod tests {
let tx = create_dummy_transaction_native_token_transfer(acc1, 0, acc2, 100, sign_key1);
sequencer
.execute_check_transaction_on_state(MempoolTransaction { auth_tx: tx })
.unwrap();
sequencer.execute_check_transaction_on_state(tx).unwrap();
let bal_from = sequencer.store.state.get_account_by_address(&nssa::Address::new(acc1)).balance;
let bal_to = sequencer.store.state.get_account_by_address(&nssa::Address::new(acc2)).balance;
let bal_from = sequencer
.store
.state
.get_account_by_address(&nssa::Address::new(acc1))
.balance;
let bal_to = sequencer
.store
.state
.get_account_by_address(&nssa::Address::new(acc2))
.balance;
assert_eq!(bal_from, 9900);
assert_eq!(bal_to, 20100);
@ -490,10 +497,7 @@ mod tests {
// let tx_roots = sequencer.get_tree_roots();
// Fill the mempool
let dummy_tx = MempoolTransaction {
auth_tx: tx.clone(),
};
sequencer.mempool.push_item(dummy_tx);
sequencer.mempool.push_item(tx.clone());
let result = sequencer.push_tx_into_mempool_pre_check(tx);
@ -525,8 +529,7 @@ mod tests {
let genesis_height = sequencer.chain_height;
let tx = create_dummy_transaction();
let tx_mempool = MempoolTransaction { auth_tx: tx };
sequencer.mempool.push_item(tx_mempool);
sequencer.mempool.push_item(tx);
let block_id = sequencer.produce_new_block_with_mempool_transactions();
assert!(block_id.is_ok());
@ -553,16 +556,11 @@ mod tests {
let tx = create_dummy_transaction_native_token_transfer(acc1, 0, acc2, 100, sign_key1);
let tx_mempool_original = MempoolTransaction {
auth_tx: tx.clone(),
};
let tx_mempool_replay = MempoolTransaction {
auth_tx: tx.clone(),
};
let tx_original = tx.clone();
let tx_replay = tx.clone();
// Pushing two copies of the same tx to the mempool
sequencer.mempool.push_item(tx_mempool_original);
sequencer.mempool.push_item(tx_mempool_replay);
sequencer.mempool.push_item(tx_original);
sequencer.mempool.push_item(tx_replay);
// Create block
let current_height = sequencer
@ -599,10 +597,7 @@ mod tests {
let tx = create_dummy_transaction_native_token_transfer(acc1, 0, acc2, 100, sign_key1);
// The transaction should be included the first time
let tx_mempool_original = MempoolTransaction {
auth_tx: tx.clone(),
};
sequencer.mempool.push_item(tx_mempool_original);
sequencer.mempool.push_item(tx.clone());
let current_height = sequencer
.produce_new_block_with_mempool_transactions()
.unwrap();
@ -614,8 +609,7 @@ mod tests {
assert_eq!(block.transactions, vec![tx.clone()]);
// Add same transaction should fail
let tx_mempool_replay = MempoolTransaction { auth_tx: tx };
sequencer.mempool.push_item(tx_mempool_replay);
sequencer.mempool.push_item(tx);
let current_height = sequencer
.produce_new_block_with_mempool_transactions()
.unwrap();

View File

@ -1,20 +0,0 @@
use common::merkle_tree_public::TreeHashType;
use mempool::mempoolitem::MemPoolItem;
pub struct MempoolTransaction {
pub auth_tx: nssa::PublicTransaction,
}
impl From<nssa::PublicTransaction> for MempoolTransaction {
fn from(auth_tx: nssa::PublicTransaction) -> Self {
Self { auth_tx }
}
}
impl MemPoolItem for MempoolTransaction {
type Identifier = TreeHashType;
fn identifier(&self) -> Self::Identifier {
self.auth_tx.hash()
}
}