pub struct Call {Show 27 fields
pub index: u32,
pub parent_index: u32,
pub depth: u32,
pub call_type: i32,
pub caller: Vec<u8>,
pub address: Vec<u8>,
pub value: Option<BigInt>,
pub gas_limit: u64,
pub gas_consumed: u64,
pub return_data: Vec<u8>,
pub input: Vec<u8>,
pub executed_code: bool,
pub suicide: bool,
pub keccak_preimages: HashMap<String, String>,
pub storage_changes: Vec<StorageChange>,
pub balance_changes: Vec<BalanceChange>,
pub nonce_changes: Vec<NonceChange>,
pub logs: Vec<Log>,
pub code_changes: Vec<CodeChange>,
pub gas_changes: Vec<GasChange>,
pub status_failed: bool,
pub status_reverted: bool,
pub failure_reason: String,
pub state_reverted: bool,
pub begin_ordinal: u64,
pub end_ordinal: u64,
pub account_creations: Vec<AccountCreation>,
}Fields§
§index: u32§parent_index: u32§depth: u32§call_type: i32§caller: Vec<u8>§address: Vec<u8>§value: Option<BigInt>§gas_limit: u64§gas_consumed: u64§return_data: Vec<u8>§input: Vec<u8>§executed_code: bool§suicide: bool§keccak_preimages: HashMap<String, String>hex representation of the hash -> preimage
storage_changes: Vec<StorageChange>§balance_changes: Vec<BalanceChange>§nonce_changes: Vec<NonceChange>§logs: Vec<Log>§code_changes: Vec<CodeChange>§gas_changes: Vec<GasChange>§status_failed: boolIn Ethereum, a call can be either:
- Successfull, execution passes without any problem encountered
- Failed, execution failed, and remaining gas should be consumed
- Reverted, execution failed, but only gas consumed so far is billed, remaining gas is refunded
When a call is either failed or reverted, the status_failed field
below is set to true. If the status is reverted, then both status_failed
and status_reverted are going to be set to true.
status_reverted: bool§failure_reason: StringPopulated when a call either failed or reverted, so when status_failed == true,
see above for details about those flags.
state_reverted: boolThis field represents wheter or not the state changes performed by this call were correctly recorded by the blockchain.
On Ethereum, a transaction can record state changes even if some
of its inner nested calls failed. This is problematic however since
a call will invalidate all its state changes as well as all state
changes performed by its child call. This means that even if a call
has a status of SUCCESS, the chain might have reverted all the state
changes it performed.
Trx 1
Call #1 <Failed>
Call #2 <Execution Success>
Call #3 <Execution Success>
|--- Failure here
Call #4In the transaction above, while Call #2 and Call #3 would have the
status EXECUTED.
If you check all calls and check only state_reverted flag, you might be missing
some balance changes and nonce changes. This is because when a full transaction fails
in ethereum (e.g. calls.all(x.state_reverted == true)), there is still the transaction
fee that are recorded to the chain.
Refer to [TransactionTrace#status] field for more details about the handling you must perform.
begin_ordinal: u64The block’s global ordinal when the call started executing, refer to [Block] documentation for further information about ordinals and total ordering.
end_ordinal: u64The block’s global ordinal when the call finished executing, refer to [Block] documentation for further information about ordinals and total ordering.
account_creations: Vec<AccountCreation>Implementations§
Trait Implementations§
Source§impl Message for Call
impl Message for Call
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.