2a205e561a
* Problem: traceTransaction fails for succesful tx Solution: - Change the context to the begining of the block, rather than the end of it, while override block context to correct one pass predecessors pass current block information to grpc query * changelog * fix build * fix lint * refactor traceBlock * update protobuf * fix Predecessors * traceBlock refactor * refactor traceBlock response * Update proto/ethermint/evm/v1/tx.proto Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update proto/ethermint/evm/v1/query.proto Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update proto/ethermint/evm/v1/query.proto Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update proto/ethermint/evm/v1/query.proto Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update proto/ethermint/evm/v1/query.proto Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update proto/ethermint/evm/v1/query.proto Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * check tx index is not out of bound * fix build * Update rpc/ethereum/namespaces/debug/api.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update rpc/ethereum/namespaces/debug/api.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update rpc/ethereum/namespaces/debug/api.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update rpc/ethereum/namespaces/debug/api.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * remove prealloc * add traceBlock test * Update x/evm/keeper/grpc_query.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * use bytes2Hex * fix error message * add comment * Apply suggestions from code review Co-authored-by: Freddy Caceres <freddy.caceres@crypto.com> Co-authored-by: crypto-facs <84574577+crypto-facs@users.noreply.github.com> Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
173 lines
5.8 KiB
Protocol Buffer
173 lines
5.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
package ethermint.evm.v1;
|
|
|
|
import "gogoproto/gogo.proto";
|
|
import "google/api/annotations.proto";
|
|
import "google/protobuf/any.proto";
|
|
import "cosmos_proto/cosmos.proto";
|
|
import "ethermint/evm/v1/evm.proto";
|
|
|
|
option go_package = "github.com/tharsis/ethermint/x/evm/types";
|
|
|
|
// Msg defines the evm Msg service.
|
|
service Msg {
|
|
// EthereumTx defines a method submitting Ethereum transactions.
|
|
rpc EthereumTx(MsgEthereumTx) returns (MsgEthereumTxResponse) {
|
|
option (google.api.http).post = "/ethermint/evm/v1/ethereum_tx";
|
|
};
|
|
}
|
|
|
|
// MsgEthereumTx encapsulates an Ethereum transaction as an SDK message.
|
|
message MsgEthereumTx {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// inner transaction data
|
|
google.protobuf.Any data = 1;
|
|
// caches
|
|
|
|
// encoded storage size of the transaction
|
|
double size = 2 [ (gogoproto.jsontag) = "-" ];
|
|
// transaction hash in hex format
|
|
string hash = 3 [ (gogoproto.moretags) = "rlp:\"-\"" ];
|
|
// ethereum signer address in hex format. This address value is checked
|
|
// against the address derived from the signature (V, R, S) using the
|
|
// secp256k1 elliptic curve
|
|
string from = 4;
|
|
}
|
|
|
|
// LegacyTx is the transaction data of regular Ethereum transactions.
|
|
message LegacyTx {
|
|
option (gogoproto.goproto_getters) = false;
|
|
option (cosmos_proto.implements_interface) = "TxData";
|
|
|
|
// nonce corresponds to the account nonce (transaction sequence).
|
|
uint64 nonce = 1;
|
|
// gas price defines the value for each gas unit
|
|
string gas_price = 2
|
|
[ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ];
|
|
// gas defines the gas limit defined for the transaction.
|
|
uint64 gas = 3 [ (gogoproto.customname) = "GasLimit" ];
|
|
// hex formatted address of the recipient
|
|
string to = 4;
|
|
// value defines the unsigned integer value of the transaction amount.
|
|
string value = 5 [
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.customname) = "Amount"
|
|
];
|
|
// input defines the data payload bytes of the transaction.
|
|
bytes data = 6;
|
|
// v defines the signature value
|
|
bytes v = 7;
|
|
// r defines the signature value
|
|
bytes r = 8;
|
|
// s define the signature value
|
|
bytes s = 9;
|
|
}
|
|
|
|
// AccessListTx is the data of EIP-2930 access list transactions.
|
|
message AccessListTx {
|
|
option (gogoproto.goproto_getters) = false;
|
|
option (cosmos_proto.implements_interface) = "TxData";
|
|
|
|
// destination EVM chain ID
|
|
string chain_id = 1 [
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.customname) = "ChainID",
|
|
(gogoproto.jsontag) = "chainID"
|
|
];
|
|
// nonce corresponds to the account nonce (transaction sequence).
|
|
uint64 nonce = 2;
|
|
// gas price defines the value for each gas unit
|
|
string gas_price = 3
|
|
[ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ];
|
|
// gas defines the gas limit defined for the transaction.
|
|
uint64 gas = 4 [ (gogoproto.customname) = "GasLimit" ];
|
|
// hex formatted address of the recipient
|
|
string to = 5;
|
|
// value defines the unsigned integer value of the transaction amount.
|
|
string value = 6 [
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.customname) = "Amount"
|
|
];
|
|
// input defines the data payload bytes of the transaction.
|
|
bytes data = 7;
|
|
repeated AccessTuple accesses = 8 [
|
|
(gogoproto.castrepeated) = "AccessList",
|
|
(gogoproto.jsontag) = "accessList",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// v defines the signature value
|
|
bytes v = 9;
|
|
// r defines the signature value
|
|
bytes r = 10;
|
|
// s define the signature value
|
|
bytes s = 11;
|
|
}
|
|
|
|
// DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.
|
|
message DynamicFeeTx {
|
|
option (gogoproto.goproto_getters) = false;
|
|
option (cosmos_proto.implements_interface) = "TxData";
|
|
|
|
// destination EVM chain ID
|
|
string chain_id = 1 [
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.customname) = "ChainID",
|
|
(gogoproto.jsontag) = "chainID"
|
|
];
|
|
// nonce corresponds to the account nonce (transaction sequence).
|
|
uint64 nonce = 2;
|
|
// gas tip cap defines the max value for the gas tip
|
|
string gas_tip_cap = 3
|
|
[ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ];
|
|
// gas fee cap defines the max value for the gas fee
|
|
string gas_fee_cap = 4
|
|
[ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ];
|
|
// gas defines the gas limit defined for the transaction.
|
|
uint64 gas = 5 [ (gogoproto.customname) = "GasLimit" ];
|
|
// hex formatted address of the recipient
|
|
string to = 6;
|
|
// value defines the the transaction amount.
|
|
string value = 7 [
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.customname) = "Amount"
|
|
];
|
|
// input defines the data payload bytes of the transaction.
|
|
bytes data = 8;
|
|
repeated AccessTuple accesses = 9 [
|
|
(gogoproto.castrepeated) = "AccessList",
|
|
(gogoproto.jsontag) = "accessList",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// v defines the signature value
|
|
bytes v = 10;
|
|
// r defines the signature value
|
|
bytes r = 11;
|
|
// s define the signature value
|
|
bytes s = 12;
|
|
}
|
|
|
|
message ExtensionOptionsEthereumTx {
|
|
option (gogoproto.goproto_getters) = false;
|
|
}
|
|
|
|
// MsgEthereumTxResponse defines the Msg/EthereumTx response type.
|
|
message MsgEthereumTxResponse {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// ethereum transaction hash in hex format. This hash differs from the
|
|
// Tendermint sha256 hash of the transaction bytes. See
|
|
// https://github.com/tendermint/tendermint/issues/6539 for reference
|
|
string hash = 1;
|
|
// logs contains the transaction hash and the proto-compatible ethereum
|
|
// logs.
|
|
repeated Log logs = 2;
|
|
// returned data from evm function (result or data supplied with revert
|
|
// opcode)
|
|
bytes ret = 3;
|
|
// vm error is the error returned by vm execution
|
|
string vm_error = 4;
|
|
// gas consumed by the transaction
|
|
uint64 gas_used = 5;
|
|
}
|