From 013569daf38452ab9721785154017a55fa4d7830 Mon Sep 17 00:00:00 2001 From: Mohammad Nassar Date: Thu, 18 Jul 2024 16:18:11 +0300 Subject: [PATCH] fix(mempool): fix nonce incremental --- crates/mempool/Cargo.toml | 1 - crates/mempool/src/mempool.rs | 4 ++-- crates/mempool_types/src/errors.rs | 3 +++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/crates/mempool/Cargo.toml b/crates/mempool/Cargo.toml index e009af0ee..3c79703cf 100644 --- a/crates/mempool/Cargo.toml +++ b/crates/mempool/Cargo.toml @@ -14,7 +14,6 @@ derive_more.workspace = true starknet_mempool_infra = { path = "../mempool_infra", version = "0.0" } starknet_api.workspace = true starknet_mempool_types = { path = "../mempool_types", version = "0.0" } -starknet-types-core.workspace = true tokio.workspace = true [dev-dependencies] diff --git a/crates/mempool/src/mempool.rs b/crates/mempool/src/mempool.rs index 8b1b4c84e..976b38a7e 100644 --- a/crates/mempool/src/mempool.rs +++ b/crates/mempool/src/mempool.rs @@ -2,10 +2,10 @@ use std::collections::HashMap; use starknet_api::core::{ContractAddress, Nonce}; use starknet_api::transaction::{Tip, TransactionHash}; +use starknet_mempool_types::errors::MempoolError; use starknet_mempool_types::mempool_types::{ Account, AccountState, MempoolInput, MempoolResult, ThinTransaction, }; -use starknet_types_core::felt::Felt; use crate::transaction_pool::TransactionPool; use crate::transaction_queue::TransactionQueue; @@ -76,7 +76,7 @@ impl Mempool { state_changes: HashMap, ) -> MempoolResult<()> { for (address, AccountState { nonce }) in state_changes { - let next_nonce = Nonce(nonce.0 + Felt::ONE); + let next_nonce = nonce.try_increment().map_err(|_| MempoolError::FeltOutOfRange)?; // Dequeue transactions from the queue in the following cases: // 1. Remove a transaction from queue with nonce lower and eq than those committed to // the block, applicable when the block is from the same leader. diff --git a/crates/mempool_types/src/errors.rs b/crates/mempool_types/src/errors.rs index adcca6b3e..ebe6ad50d 100644 --- a/crates/mempool_types/src/errors.rs +++ b/crates/mempool_types/src/errors.rs @@ -7,4 +7,7 @@ pub enum MempoolError { DuplicateTransaction { tx_hash: TransactionHash }, #[error("Transaction with hash: {tx_hash} not found")] TransactionNotFound { tx_hash: TransactionHash }, + // TODO(Mohammad): Consider using `StarknetApiError` once it implements `PartialEq`. + #[error("Out of range.")] + FeltOutOfRange, }