Skip to content

Commit 60a6b86

Browse files
Merge pull request #449 from neonlabsorg/develop->master_0.5.2
develop -> master 0.5.2
2 parents ae49723 + 77eb2e2 commit 60a6b86

File tree

9 files changed

+203
-75
lines changed

9 files changed

+203
-75
lines changed

evm_loader/Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

evm_loader/cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "neon-cli"
3-
version = "0.5.1"
3+
version = "0.5.2"
44
authors = ["Cyber-Core Maintainers <maintainers@cyber-core.dev>"]
55
edition = "2018"
66

evm_loader/cli/src/account_storage.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ use evm_loader::{
5454
precompile_contracts::is_precompile_address,
5555
solana_backend::{AccountStorage, AccountStorageInfo},
5656
solidity_account::SolidityAccount,
57-
config::token_mint
5857
};
5958

6059
use crate::Config;
@@ -157,10 +156,11 @@ pub struct EmulatorAccountStorage<'a> {
157156
caller_id: H160,
158157
block_number: u64,
159158
block_timestamp: i64,
159+
token_mint: Pubkey
160160
}
161161

162162
impl<'a> EmulatorAccountStorage<'a> {
163-
pub fn new(config: &'a Config, contract_id: H160, caller_id: H160) -> EmulatorAccountStorage {
163+
pub fn new(config: &'a Config, contract_id: H160, caller_id: H160, token_mint: Pubkey) -> EmulatorAccountStorage {
164164
eprintln!("backend::new");
165165

166166
let slot = if let Ok(slot) = config.rpc_client.get_slot() {
@@ -192,6 +192,7 @@ impl<'a> EmulatorAccountStorage<'a> {
192192
caller_id,
193193
block_number: slot,
194194
block_timestamp: timestamp,
195+
token_mint
195196
}
196197
}
197198

@@ -244,8 +245,10 @@ impl<'a> EmulatorAccountStorage<'a> {
244245
true
245246
}
246247
else {
247-
eprintln!("Account not found {}", &address.to_string());
248-
new_accounts.insert(*address, SolanaNewAccount::new(solana_address));
248+
if new_accounts.get(address).is_none() {
249+
eprintln!("Account not found {}", &address.to_string());
250+
new_accounts.insert(*address, SolanaNewAccount::new(solana_address));
251+
}
249252
false
250253
}
251254
} else {
@@ -399,19 +402,19 @@ impl<'a> EmulatorAccountStorage<'a> {
399402
};
400403
}
401404

402-
pub fn apply_transfers(&self, transfers: Vec<Transfer>) {
405+
pub fn apply_transfers(&self, transfers: Vec<Transfer>, token_mint: &Pubkey) {
403406
let mut solana_accounts = self.solana_accounts.borrow_mut();
404407

405408
for transfer in transfers {
406409
self.create_acc_if_not_exists(&transfer.source);
407410
self.create_acc_if_not_exists(&transfer.target);
408411

409412
let (source, _) = make_solana_program_address(&transfer.source, &self.config.evm_loader);
410-
let source_token = spl_associated_token_account::get_associated_token_address(&source, &token_mint::id());
413+
let source_token = spl_associated_token_account::get_associated_token_address(&source, token_mint);
411414
solana_accounts.insert(source_token, AccountMeta::new(source_token, false));
412415

413416
let (target, _) = make_solana_program_address(&transfer.target, &self.config.evm_loader);
414-
let target_token = spl_associated_token_account::get_associated_token_address(&target, &token_mint::id());
417+
let target_token = spl_associated_token_account::get_associated_token_address(&target, token_mint);
415418
solana_accounts.insert(target_token, AccountMeta::new(target_token, false));
416419
}
417420
}
@@ -610,7 +613,7 @@ impl<'a> AccountStorage for EmulatorAccountStorage<'a> {
610613
self.create_acc_if_not_exists(address);
611614

612615
let (account, _) = make_solana_program_address(address, &self.config.evm_loader);
613-
let token_account = spl_associated_token_account::get_associated_token_address(&account, &token_mint::id());
616+
let token_account = spl_associated_token_account::get_associated_token_address(&account, &self.token_mint);
614617

615618
let mut solana_accounts = self.solana_accounts.borrow_mut();
616619
solana_accounts.entry(token_account).or_insert_with(|| AccountMeta::new_readonly(token_account, false));

0 commit comments

Comments
 (0)