From 344a10d33b8eb236505db256cf9ef6b82e31b9df Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Tue, 21 Nov 2023 18:17:15 +0000 Subject: [PATCH] Preload accounts for transactions --- src/lib/staged_ledger/staged_ledger.ml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/staged_ledger/staged_ledger.ml b/src/lib/staged_ledger/staged_ledger.ml index d26739b78cd..a714941e2b2 100644 --- a/src/lib/staged_ledger/staged_ledger.ml +++ b/src/lib/staged_ledger/staged_ledger.ml @@ -1019,6 +1019,14 @@ module T = struct let new_mask = Ledger.Mask.create ~depth:(Ledger.depth t.ledger) () in let new_ledger = Ledger.register_mask t.ledger new_mask in let transactions, works, commands_count, coinbases = pre_diff_info in + let accounts_accessed = + List.fold_left ~init:Account_id.Set.empty transactions ~f:(fun set txn -> + Account_id.Set.( + union set + (of_list (Transaction.accounts_referenced txn.With_status.data))) ) + |> Set.to_list + in + Ledger.unsafe_preload_accounts_from_parent new_ledger accounts_accessed ; [%log internal] "Update_coinbase_stack" ~metadata: [ ("transactions", `Int (List.length transactions))