neo_devpack_solidity/runtime/state/state_impl/
query_stats.rs1use super::*;
2
3impl StateManager {
4 pub fn query_state(&self, query: StateQuery) -> Vec<&AccountState> {
6 self.accounts
7 .values()
8 .filter(|account| {
9 if let Some(ref addr) = query.account {
10 account.address == *addr
11 } else {
12 true
13 }
14 })
15 .collect()
16 }
17
18 pub fn get_statistics(&self) -> StateStatistics {
20 let total_accounts = self.accounts.len();
21 let total_balance: u64 = self.accounts.values().map(|a| a.balance).sum();
22 let contracts = self.accounts.values().filter(|a| a.code.is_some()).count();
23
24 StateStatistics {
25 total_accounts,
26 total_balance,
27 contract_accounts: contracts,
28 external_accounts: total_accounts - contracts,
29 total_changes: self.change_count,
30 snapshots_count: self.snapshots.len(),
31 }
32 }
33}