refactor(state_machine): allow PartialEq, Eq for V03State

This commit is contained in:
erhant 2026-07-21 08:44:43 +03:00
parent 29bd8d7e5b
commit 549da7ece3
3 changed files with 12 additions and 14 deletions

View File

@ -8,8 +8,8 @@ mod default_values;
type Value = [u8; 32];
type Node = [u8; 32];
#[cfg_attr(test, derive(Debug, PartialEq, Eq))]
#[derive(Clone, BorshSerialize, BorshDeserialize)]
#[cfg_attr(test, derive(Debug))]
#[derive(Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)]
pub struct MerkleTree {
nodes: Vec<Node>,
capacity: usize,

View File

@ -20,8 +20,8 @@ use crate::{
pub const MAX_NUMBER_CHAINED_CALLS: usize = 10;
#[derive(Clone, BorshSerialize, BorshDeserialize)]
#[cfg_attr(test, derive(Debug, PartialEq, Eq))]
#[derive(Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)]
#[cfg_attr(test, derive(Debug))]
pub struct CommitmentSet {
merkle_tree: MerkleTree,
commitments: HashMap<Commitment, usize>,
@ -67,8 +67,8 @@ impl CommitmentSet {
}
}
#[cfg_attr(test, derive(Debug, PartialEq, Eq))]
#[derive(Clone)]
#[cfg_attr(test, derive(Debug))]
#[derive(Clone, PartialEq, Eq)]
struct NullifierSet(BTreeSet<Nullifier>);
impl NullifierSet {
@ -109,8 +109,8 @@ impl BorshDeserialize for NullifierSet {
}
}
#[derive(Clone, BorshSerialize, BorshDeserialize)]
#[cfg_attr(test, derive(Debug, PartialEq, Eq))]
#[derive(Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)]
#[cfg_attr(test, derive(Debug))]
pub struct V03State {
public_state: HashMap<AccountId, Account>,
private_state: (CommitmentSet, NullifierSet),

View File

@ -177,12 +177,10 @@ impl<BP: BlockPublisherTrait> SequencerCore<BP> {
});
}
// The replayed head must reproduce the persisted state byte-for-byte,
// else store and config disagree (e.g. edited genesis actions).
let replayed = borsh::to_vec(chain.head_state()).expect("state serializes");
let stored = borsh::to_vec(stored_head_state).expect("state serializes");
assert_eq!(
replayed, stored,
// The replayed head must reproduce the persisted state, else store
// and config disagree (e.g. edited genesis actions).
assert!(
chain.head_state() == stored_head_state,
"Persisted state does not match the replayed chain; reset the store or restore the original config"
);