anvil_zksync_core/node/diagnostics/vm/
traces.rs

1use std::collections::HashMap;
2
3use anvil_zksync_types::traces::{CallTraceArena, DecodedValue::Address, LabeledAddress};
4use zksync_types::H160;
5
6pub fn extract_addresses(
7    arena: &CallTraceArena,
8    known_addresses: &mut HashMap<H160, Option<String>>,
9) {
10    for node in arena.nodes().iter() {
11        if let Some(ref call_data) = node.trace.decoded.call_data {
12            for arg in &call_data.args {
13                if let Address(LabeledAddress { label, address }) = arg {
14                    if !known_addresses.contains_key(address) {
15                        known_addresses.entry(*address).or_insert(label.clone());
16                    }
17                }
18            }
19        }
20    }
21}