mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-03 17:44:29 +00:00
fd0e2d5c4d
* Remove interfaces for replacement * Squashed 'interfaces/' content from commit 041a3b20 git-subtree-dir: interfaces git-subtree-split: 041a3b204cceee5348d54bfa683dec6c7cf30d14 * save * save
313 lines
5.8 KiB
Protocol Buffer
313 lines
5.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
import "google/protobuf/empty.proto";
|
|
import "web3/common.proto";
|
|
import "types/types.proto";
|
|
|
|
package web3;
|
|
|
|
// Call params
|
|
|
|
message LegacyCall {
|
|
optional types.H160 from = 1;
|
|
optional types.H160 to = 2;
|
|
optional uint64 gas_limit = 3;
|
|
optional uint64 gas_price = 4;
|
|
optional types.H256 value = 5;
|
|
optional bytes input = 6;
|
|
}
|
|
|
|
message AccessList { repeated AccessListItem access_list = 1; }
|
|
|
|
message EIP2930Call {
|
|
optional types.H160 from = 1;
|
|
optional types.H160 to = 2;
|
|
optional uint64 gas_limit = 3;
|
|
optional uint64 gas_price = 4;
|
|
optional types.H256 value = 5;
|
|
optional bytes input = 6;
|
|
optional AccessList access_list = 7;
|
|
}
|
|
|
|
message EIP1559Call {
|
|
optional types.H160 from = 1;
|
|
optional types.H160 to = 2;
|
|
optional uint64 gas_limit = 3;
|
|
optional uint64 max_priority_fee_per_gas = 4;
|
|
optional uint64 max_fee_per_gas = 5;
|
|
optional types.H256 value = 6;
|
|
optional bytes input = 7;
|
|
optional AccessList access_list = 8;
|
|
}
|
|
|
|
message Call {
|
|
oneof call {
|
|
LegacyCall legacy = 1;
|
|
EIP2930Call eip2930 = 2;
|
|
EIP1559Call eip1559 = 3;
|
|
}
|
|
}
|
|
|
|
message TraceKinds {
|
|
bool trace = 1;
|
|
bool vm_trace = 2;
|
|
bool state_diff = 3;
|
|
}
|
|
|
|
message CallRequest {
|
|
Call call = 1;
|
|
TraceKinds kinds = 2;
|
|
}
|
|
|
|
message CallRequests {
|
|
repeated CallRequest calls = 1;
|
|
BlockId block_id = 2;
|
|
}
|
|
|
|
message TraceBlockRequest {
|
|
BlockId id = 1;
|
|
TraceKinds kinds = 2;
|
|
}
|
|
|
|
message TraceTransactionRequest {
|
|
types.H256 hash = 1;
|
|
TraceKinds kinds = 2;
|
|
}
|
|
|
|
message AddressSet { repeated types.H160 addresses = 1; }
|
|
|
|
enum FilterMode {
|
|
Union = 0;
|
|
Intersection = 1;
|
|
}
|
|
|
|
message FilterRequest {
|
|
optional BlockId from_block = 1;
|
|
optional BlockId to_block = 2;
|
|
optional AddressSet from_addresses = 3;
|
|
optional AddressSet to_addresses = 4;
|
|
optional FilterMode mode = 5;
|
|
}
|
|
|
|
// Trace
|
|
|
|
enum CallType {
|
|
CallTypeCall = 0;
|
|
CallTypeCallCode = 1;
|
|
CallTypeDelegateCall = 2;
|
|
CallTypeStaticCall = 3;
|
|
}
|
|
|
|
message CallAction {
|
|
types.H160 from = 1;
|
|
types.H160 to = 2;
|
|
types.H256 value = 3;
|
|
uint64 gas = 4;
|
|
bytes input = 5;
|
|
optional CallType call_type = 6;
|
|
}
|
|
|
|
message CreateAction {
|
|
types.H160 from = 1;
|
|
types.H256 value = 2;
|
|
uint64 gas = 3;
|
|
bytes init = 4;
|
|
}
|
|
|
|
message SelfdestructAction {
|
|
types.H160 address = 1;
|
|
types.H160 refund_address = 2;
|
|
types.H256 balance = 3;
|
|
}
|
|
|
|
message RewardAction {
|
|
types.H160 author = 1;
|
|
types.H256 value = 2;
|
|
enum RewardType {
|
|
Block = 0;
|
|
Uncle = 1;
|
|
}
|
|
RewardType reward_type = 3;
|
|
}
|
|
|
|
message Action {
|
|
oneof action {
|
|
CallAction call = 1;
|
|
CreateAction create = 2;
|
|
SelfdestructAction selfdestruct = 3;
|
|
RewardAction reward = 4;
|
|
}
|
|
}
|
|
|
|
message Trace {
|
|
Action action = 1;
|
|
optional TraceResult result = 2;
|
|
uint64 subtraces = 3;
|
|
repeated uint64 trace_address = 4;
|
|
}
|
|
|
|
message CallOutput {
|
|
uint64 gas_used = 1;
|
|
bytes output = 2;
|
|
}
|
|
|
|
message CreateOutput {
|
|
uint64 gas_used = 1;
|
|
bytes code = 2;
|
|
types.H160 address = 3;
|
|
}
|
|
|
|
message TraceOutput {
|
|
oneof output {
|
|
CallOutput call = 1;
|
|
CreateOutput create = 2;
|
|
}
|
|
}
|
|
|
|
message TraceResult {
|
|
oneof result {
|
|
TraceOutput output = 1;
|
|
string error = 2;
|
|
}
|
|
}
|
|
|
|
message Traces { repeated Trace traces = 1; }
|
|
|
|
message TraceWithLocation {
|
|
Trace trace = 1;
|
|
|
|
optional uint64 transaction_position = 2;
|
|
optional types.H256 transaction_hash = 3;
|
|
uint64 block_number = 4;
|
|
types.H256 block_hash = 5;
|
|
}
|
|
|
|
message TracesWithLocation { repeated TraceWithLocation traces = 1; }
|
|
|
|
message OptionalTracesWithLocation { optional TracesWithLocation traces = 1; }
|
|
|
|
// VM trace
|
|
|
|
message MemoryDelta {
|
|
uint64 off = 1;
|
|
bytes data = 2;
|
|
}
|
|
|
|
message StorageDelta {
|
|
types.H256 key = 1;
|
|
types.H256 val = 2;
|
|
}
|
|
|
|
message VmExecutedOperation {
|
|
uint64 used = 1;
|
|
optional types.H256 push = 2;
|
|
optional MemoryDelta mem = 3;
|
|
optional StorageDelta store = 4;
|
|
}
|
|
|
|
message VmInstruction {
|
|
uint32 pc = 1;
|
|
uint64 cost = 2;
|
|
optional VmExecutedOperation ex = 3;
|
|
optional VmTrace sub = 4;
|
|
}
|
|
|
|
message VmTrace {
|
|
bytes code = 1;
|
|
repeated VmInstruction ops = 2;
|
|
}
|
|
|
|
// State diff
|
|
|
|
message AlteredH256 {
|
|
types.H256 from = 1;
|
|
types.H256 to = 2;
|
|
}
|
|
|
|
message DeltaH256 {
|
|
oneof delta {
|
|
google.protobuf.Empty unchanged = 1;
|
|
types.H256 added = 2;
|
|
types.H256 removed = 3;
|
|
AlteredH256 altered = 4;
|
|
}
|
|
}
|
|
|
|
message AlteredU64 {
|
|
uint64 from = 1;
|
|
uint64 to = 2;
|
|
}
|
|
|
|
message DeltaU64 {
|
|
oneof delta {
|
|
google.protobuf.Empty unchanged = 1;
|
|
uint64 added = 2;
|
|
uint64 removed = 3;
|
|
AlteredU64 altered = 4;
|
|
}
|
|
}
|
|
|
|
message AlteredBytes {
|
|
bytes from = 1;
|
|
bytes to = 2;
|
|
}
|
|
|
|
message DeltaBytes {
|
|
oneof delta {
|
|
google.protobuf.Empty unchanged = 1;
|
|
bytes added = 2;
|
|
bytes removed = 3;
|
|
AlteredBytes altered = 4;
|
|
}
|
|
}
|
|
|
|
message StorageDiffEntry {
|
|
types.H256 location = 1;
|
|
DeltaH256 delta = 2;
|
|
}
|
|
|
|
message AccountDiff {
|
|
DeltaH256 balance = 1;
|
|
DeltaU64 nonce = 2;
|
|
DeltaBytes code = 3;
|
|
repeated StorageDiffEntry storage = 4;
|
|
}
|
|
|
|
message AccountDiffEntry {
|
|
types.H160 key = 1;
|
|
AccountDiff value = 2;
|
|
}
|
|
|
|
message StateDiff { repeated AccountDiffEntry diff = 1; }
|
|
|
|
message FullTrace {
|
|
bytes output = 1;
|
|
optional Traces traces = 2;
|
|
optional VmTrace vm_trace = 3;
|
|
optional StateDiff state_diff = 4;
|
|
}
|
|
|
|
message FullTraceWithTransactionHash {
|
|
FullTrace full_trace = 1;
|
|
types.H256 transaction_hash = 2;
|
|
}
|
|
|
|
message FullTraces { repeated FullTrace traces = 1; }
|
|
|
|
message FullTracesWithTransactionHashes {
|
|
repeated FullTraceWithTransactionHash traces = 1;
|
|
}
|
|
|
|
message OptionalFullTracesWithTransactionHashes {
|
|
optional FullTracesWithTransactionHashes traces = 1;
|
|
}
|
|
|
|
service TraceApi {
|
|
rpc Call(CallRequests) returns (FullTraces);
|
|
rpc Block(BlockId) returns (OptionalTracesWithLocation);
|
|
rpc BlockTransactions(TraceBlockRequest)
|
|
returns (OptionalFullTracesWithTransactionHashes);
|
|
rpc Transaction(TraceTransactionRequest) returns (FullTrace);
|
|
rpc Filter(FilterRequest) returns (stream TraceWithLocation);
|
|
}
|