mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix: omit empty fields of AccountState (#4828)
This commit is contained in:
@ -192,14 +192,14 @@ impl GethTraceBuilder {
|
||||
let mut prestate = PreStateMode::default();
|
||||
for (addr, _) in account_diffs {
|
||||
let db_acc = db.basic(addr)?.unwrap_or_default();
|
||||
|
||||
prestate.0.insert(
|
||||
addr,
|
||||
AccountState {
|
||||
balance: Some(db_acc.balance),
|
||||
nonce: Some(db_acc.nonce),
|
||||
code: db_acc.code.as_ref().map(|code| Bytes::from(code.original_bytes())),
|
||||
storage: None,
|
||||
},
|
||||
AccountState::from_account_info(
|
||||
db_acc.nonce,
|
||||
db_acc.balance,
|
||||
db_acc.code.as_ref().map(|code| Bytes::from(code.original_bytes())),
|
||||
),
|
||||
);
|
||||
}
|
||||
self.update_storage_from_trace(&mut prestate.0, false);
|
||||
@ -208,18 +208,16 @@ impl GethTraceBuilder {
|
||||
let mut state_diff = DiffMode::default();
|
||||
for (addr, changed_acc) in account_diffs {
|
||||
let db_acc = db.basic(addr)?.unwrap_or_default();
|
||||
let pre_state = AccountState {
|
||||
balance: Some(db_acc.balance),
|
||||
nonce: Some(db_acc.nonce),
|
||||
code: db_acc.code.as_ref().map(|code| Bytes::from(code.original_bytes())),
|
||||
storage: None,
|
||||
};
|
||||
let post_state = AccountState {
|
||||
balance: Some(changed_acc.balance),
|
||||
nonce: Some(changed_acc.nonce),
|
||||
code: changed_acc.code.as_ref().map(|code| Bytes::from(code.original_bytes())),
|
||||
storage: None,
|
||||
};
|
||||
let pre_state = AccountState::from_account_info(
|
||||
db_acc.nonce,
|
||||
db_acc.balance,
|
||||
db_acc.code.as_ref().map(|code| Bytes::from(code.original_bytes())),
|
||||
);
|
||||
let post_state = AccountState::from_account_info(
|
||||
changed_acc.nonce,
|
||||
changed_acc.balance,
|
||||
changed_acc.code.as_ref().map(|code| Bytes::from(code.original_bytes())),
|
||||
);
|
||||
state_diff.pre.insert(addr, pre_state);
|
||||
state_diff.post.insert(addr, post_state);
|
||||
}
|
||||
|
||||
@ -517,7 +517,6 @@ impl CallTraceNode {
|
||||
let acc_state = account_states.entry(addr).or_default();
|
||||
for change in self.trace.steps.iter().filter_map(|s| s.storage_change) {
|
||||
let StorageChange { key, value, had_value } = change;
|
||||
let storage_map = acc_state.storage.get_or_insert_with(BTreeMap::new);
|
||||
let value_to_insert = if post_value {
|
||||
H256::from(value)
|
||||
} else {
|
||||
@ -526,7 +525,7 @@ impl CallTraceNode {
|
||||
None => continue,
|
||||
}
|
||||
};
|
||||
storage_map.insert(key.into(), value_to_insert);
|
||||
acc_state.storage.insert(key.into(), value_to_insert);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user