Skip to main content
added 856 characters in body
Source Link
Shawn Tabrizi
  • 8.1k
  • 4
  • 21
  • 38

To get an answer to this question we can look at the source code for Parity-Ethereum and the documentation for the trace module.

There are two distinct definitions in the source:

Action

/// Action
#[derive(Debug)]
pub enum Action {
    /// Call
    Call(Call),
    /// Create
    Create(Create),
    /// Suicide
    Suicide(Suicide),
    /// Reward
    Reward(Reward),
}

CallType

/// Call type.
#[derive(Debug, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum CallType {
    /// None
    None,
    /// Call
    Call,
    /// Call code
    CallCode,
    /// Delegate call
    DelegateCall,
    /// Static call
    StaticCall,
}

So here we can see that every trace has an Action (represented by type in the JSON), and if the Action is a Call, then it can have a CallType (represented by calltype).

These are all generally represented by the Ethereum OpCodes:

Calls

0xf1    CALL    Message-call into an account    -   Complicated
0xf2    CALLCODE    Message-call into this account with alternative account's code  -   Complicated
0xf4    DELEGATECALL    Message-call into this account with an alternative account's code, but persisting into this account with an alternative account's code  -   Complicated
0xfa    STATICCALL  Similar to CALL, but does not modify state  -   40

Other

0xf0    CREATE  Create a new account with associated code   -   32000
0xff    SELFDESTRUCT    Halt execution and register account for later deletion  -   5000*

Not very sure about Reward, but here suggests it is for uncle and mining rewards.

To get an answer to this question we can look at the source code for Parity-Ethereum and the documentation for the trace module.

There are two distinct definitions in the source:

Action

/// Action
#[derive(Debug)]
pub enum Action {
    /// Call
    Call(Call),
    /// Create
    Create(Create),
    /// Suicide
    Suicide(Suicide),
    /// Reward
    Reward(Reward),
}

CallType

/// Call type.
#[derive(Debug, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum CallType {
    /// None
    None,
    /// Call
    Call,
    /// Call code
    CallCode,
    /// Delegate call
    DelegateCall,
    /// Static call
    StaticCall,
}

So here we can see that every trace has an Action (represented by type in the JSON), and if the Action is a Call, then it can have a CallType (represented by calltype).

To get an answer to this question we can look at the source code for Parity-Ethereum and the documentation for the trace module.

There are two distinct definitions in the source:

Action

/// Action
#[derive(Debug)]
pub enum Action {
    /// Call
    Call(Call),
    /// Create
    Create(Create),
    /// Suicide
    Suicide(Suicide),
    /// Reward
    Reward(Reward),
}

CallType

/// Call type.
#[derive(Debug, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum CallType {
    /// None
    None,
    /// Call
    Call,
    /// Call code
    CallCode,
    /// Delegate call
    DelegateCall,
    /// Static call
    StaticCall,
}

So here we can see that every trace has an Action (represented by type in the JSON), and if the Action is a Call, then it can have a CallType (represented by calltype).

These are all generally represented by the Ethereum OpCodes:

Calls

0xf1    CALL    Message-call into an account    -   Complicated
0xf2    CALLCODE    Message-call into this account with alternative account's code  -   Complicated
0xf4    DELEGATECALL    Message-call into this account with an alternative account's code, but persisting into this account with an alternative account's code  -   Complicated
0xfa    STATICCALL  Similar to CALL, but does not modify state  -   40

Other

0xf0    CREATE  Create a new account with associated code   -   32000
0xff    SELFDESTRUCT    Halt execution and register account for later deletion  -   5000*

Not very sure about Reward, but here suggests it is for uncle and mining rewards.

Source Link
Shawn Tabrizi
  • 8.1k
  • 4
  • 21
  • 38

To get an answer to this question we can look at the source code for Parity-Ethereum and the documentation for the trace module.

There are two distinct definitions in the source:

Action

/// Action
#[derive(Debug)]
pub enum Action {
    /// Call
    Call(Call),
    /// Create
    Create(Create),
    /// Suicide
    Suicide(Suicide),
    /// Reward
    Reward(Reward),
}

CallType

/// Call type.
#[derive(Debug, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum CallType {
    /// None
    None,
    /// Call
    Call,
    /// Call code
    CallCode,
    /// Delegate call
    DelegateCall,
    /// Static call
    StaticCall,
}

So here we can see that every trace has an Action (represented by type in the JSON), and if the Action is a Call, then it can have a CallType (represented by calltype).