Adds debug logs to EVM frame (#6887)

This commit is contained in:
Alan Sapede
2020-08-14 04:15:59 -04:00
committed by GitHub
parent 775e84cc04
commit f94aae1d2d
2 changed files with 45 additions and 2 deletions
+34 -1
View File
@@ -6,7 +6,7 @@ use codec::{Encode, Decode};
use sp_core::{U256, H256, H160}; use sp_core::{U256, H256, H160};
use sp_runtime::traits::UniqueSaturatedInto; use sp_runtime::traits::UniqueSaturatedInto;
use frame_support::traits::Get; use frame_support::traits::Get;
use frame_support::storage::{StorageMap, StorageDoubleMap}; use frame_support::{debug, storage::{StorageMap, StorageDoubleMap}};
use sha3::{Keccak256, Digest}; use sha3::{Keccak256, Digest};
use evm::backend::{Backend as BackendT, ApplyBackend, Apply}; use evm::backend::{Backend as BackendT, ApplyBackend, Apply};
use crate::{Trait, AccountStorages, AccountCodes, Module, Event}; use crate::{Trait, AccountStorages, AccountCodes, Module, Event};
@@ -147,6 +147,12 @@ impl<'vicinity, T: Trait> ApplyBackend for Backend<'vicinity, T> {
}); });
if let Some(code) = code { if let Some(code) = code {
debug::debug!(
target: "evm",
"Inserting code ({} bytes) at {:?}",
code.len(),
address
);
AccountCodes::insert(address, code); AccountCodes::insert(address, code);
} }
@@ -156,8 +162,21 @@ impl<'vicinity, T: Trait> ApplyBackend for Backend<'vicinity, T> {
for (index, value) in storage { for (index, value) in storage {
if value == H256::default() { if value == H256::default() {
debug::debug!(
target: "evm",
"Removing storage for {:?} [index: {:?}]",
address,
index
);
AccountStorages::remove(address, index); AccountStorages::remove(address, index);
} else { } else {
debug::debug!(
target: "evm",
"Updating storage for {:?} [index: {:?}, value: {:?}]",
address,
index,
value
);
AccountStorages::insert(address, index, value); AccountStorages::insert(address, index, value);
} }
} }
@@ -167,12 +186,26 @@ impl<'vicinity, T: Trait> ApplyBackend for Backend<'vicinity, T> {
} }
}, },
Apply::Delete { address } => { Apply::Delete { address } => {
debug::debug!(
target: "evm",
"Deleting account at {:?}",
address
);
Module::<T>::remove_account(&address) Module::<T>::remove_account(&address)
}, },
} }
} }
for log in logs { for log in logs {
debug::trace!(
target: "evm",
"Inserting log for {:?}, topics ({}) {:?}, data ({}): {:?}]",
log.address,
log.topics.len(),
log.topics,
log.data.len(),
log.data
);
Module::<T>::deposit_event(Event::<T>::Log(Log { Module::<T>::deposit_event(Event::<T>::Log(Log {
address: log.address, address: log.address,
topics: log.topics, topics: log.topics,
+11 -1
View File
@@ -32,7 +32,7 @@ use sp_std::vec::Vec;
use codec::{Encode, Decode}; use codec::{Encode, Decode};
#[cfg(feature = "std")] #[cfg(feature = "std")]
use serde::{Serialize, Deserialize}; use serde::{Serialize, Deserialize};
use frame_support::{ensure, decl_module, decl_storage, decl_event, decl_error}; use frame_support::{debug, ensure, decl_module, decl_storage, decl_event, decl_error};
use frame_support::weights::{Weight, Pays}; use frame_support::weights::{Weight, Pays};
use frame_support::traits::{Currency, ExistenceRequirement, Get}; use frame_support::traits::{Currency, ExistenceRequirement, Get};
use frame_support::dispatch::DispatchResultWithPostInfo; use frame_support::dispatch::DispatchResultWithPostInfo;
@@ -617,6 +617,16 @@ impl<T: Trait> Module<T> {
let used_gas = U256::from(executor.used_gas()); let used_gas = U256::from(executor.used_gas());
let actual_fee = executor.fee(gas_price); let actual_fee = executor.fee(gas_price);
debug::debug!(
target: "evm",
"Execution {:?} [source: {:?}, value: {}, gas_limit: {}, used_gas: {}, actual_fee: {}]",
retv,
source,
value,
gas_limit,
used_gas,
actual_fee
);
executor.deposit(source, total_fee.saturating_sub(actual_fee)); executor.deposit(source, total_fee.saturating_sub(actual_fee));
if apply_state { if apply_state {