mirror of
https://github.com/logos-blockchain/lssa.git
synced 2026-07-22 23:59:27 +00:00
refactor(state_machine): allow PartialEq, Eq for V03State
This commit is contained in:
parent
29bd8d7e5b
commit
549da7ece3
@ -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,
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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"
|
||||
);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user