anvil_zksync_core/node/diagnostics/vm/
traces.rs1use 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}