From 8186e0f7b15338e9ddff16fece1502cc4283ab3e Mon Sep 17 00:00:00 2001 From: Bruno Deferrari Date: Fri, 22 Mar 2024 08:44:46 -0300 Subject: [PATCH] fix(ledger_service): assert the loaded top hash and computed merkle root are the same --- node/src/ledger/ledger_service.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/node/src/ledger/ledger_service.rs b/node/src/ledger/ledger_service.rs index 34f74c2be..037967bd1 100644 --- a/node/src/ledger/ledger_service.rs +++ b/node/src/ledger/ledger_service.rs @@ -107,12 +107,11 @@ impl LedgerCtx { mask.get_or_create_account(account_id, account).unwrap(); } - let top_hash = top_hash.unwrap_or_else(|| { - v2::LedgerHash::from(v2::MinaBaseLedgerHash0StableV1(mask.merkle_root().into())) - }); + let top_hash = top_hash.unwrap_or_else(|| v2::LedgerHash::from_fp(mask.merkle_root())); + // Forcing this computation is needed so that the ledger contains node hashes + let computed_merkle_root = v2::LedgerHash::from_fp(mask.merkle_root()); - // Needed so that the ledger contains node hashes - let _force_hashes_computation = mask.merkle_root(); + assert_eq!(top_hash, computed_merkle_root); self.snarked_ledgers.insert(top_hash, mask); }