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.