multiversx_chain_vm/host/context/
blockchain_update.rs

1use std::collections::HashMap;
2
3use crate::{
4    blockchain::state::{AccountData, BlockchainState},
5    types::VMAddress,
6};
7
8#[derive(Default)]
9pub struct BlockchainUpdate {
10    pub accounts: HashMap<VMAddress, AccountData>,
11    pub new_token_identifiers: Option<Vec<String>>,
12}
13
14impl BlockchainUpdate {
15    pub fn empty() -> Self {
16        BlockchainUpdate::default()
17    }
18
19    pub fn apply(self, blockchain: &mut BlockchainState) {
20        blockchain.update_accounts(self.accounts);
21
22        if let Some(token_identifiers) = self.new_token_identifiers {
23            blockchain.update_new_token_identifiers(token_identifiers);
24        }
25    }
26}