2021-01-07 21:45:32 +00:00
|
|
|
syntax = "proto3";
|
2021-08-17 15:30:35 +00:00
|
|
|
package ethermint.evm.v1;
|
2021-01-07 21:45:32 +00:00
|
|
|
|
2023-01-04 14:28:45 +00:00
|
|
|
import "cosmos/msg/v1/msg.proto";
|
2022-11-25 10:02:20 +00:00
|
|
|
import "cosmos_proto/cosmos.proto";
|
|
|
|
import "ethermint/evm/v1/evm.proto";
|
2021-01-07 21:45:32 +00:00
|
|
|
import "gogoproto/gogo.proto";
|
2021-11-06 22:01:58 +00:00
|
|
|
import "google/api/annotations.proto";
|
2021-07-05 16:39:08 +00:00
|
|
|
import "google/protobuf/any.proto";
|
2021-01-07 21:45:32 +00:00
|
|
|
|
2022-06-19 09:43:41 +00:00
|
|
|
option go_package = "github.com/evmos/ethermint/x/evm/types";
|
2021-01-07 21:45:32 +00:00
|
|
|
|
|
|
|
// Msg defines the evm Msg service.
|
|
|
|
service Msg {
|
|
|
|
// EthereumTx defines a method submitting Ethereum transactions.
|
2021-11-06 22:01:58 +00:00
|
|
|
rpc EthereumTx(MsgEthereumTx) returns (MsgEthereumTxResponse) {
|
2021-11-09 18:38:22 +00:00
|
|
|
option (google.api.http).post = "/ethermint/evm/v1/ethereum_tx";
|
2021-11-06 22:01:58 +00:00
|
|
|
};
|
2023-01-04 14:28:45 +00:00
|
|
|
// UpdateParams defined a governance operation for updating the x/evm module parameters.
|
|
|
|
// The authority is hard-coded to the Cosmos SDK x/gov module account
|
|
|
|
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// MsgEthereumTx encapsulates an Ethereum transaction as an SDK message.
|
|
|
|
message MsgEthereumTx {
|
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
|
2022-11-25 10:02:20 +00:00
|
|
|
// data is inner transaction data of the Ethereum transaction
|
2021-07-05 16:39:08 +00:00
|
|
|
google.protobuf.Any data = 1;
|
2021-05-10 16:34:00 +00:00
|
|
|
|
2022-11-25 10:02:20 +00:00
|
|
|
// size is the encoded storage size of the transaction (DEPRECATED)
|
2022-10-20 20:43:19 +00:00
|
|
|
double size = 2 [(gogoproto.jsontag) = "-"];
|
2022-11-25 10:02:20 +00:00
|
|
|
// hash of the transaction in hex format
|
2022-10-20 20:43:19 +00:00
|
|
|
string hash = 3 [(gogoproto.moretags) = "rlp:\"-\""];
|
2022-11-25 10:02:20 +00:00
|
|
|
// from is the ethereum signer address in hex format. This address value is checked
|
2021-07-30 11:40:17 +00:00
|
|
|
// against the address derived from the signature (V, R, S) using the
|
|
|
|
// secp256k1 elliptic curve
|
2021-05-10 16:34:00 +00:00
|
|
|
string from = 4;
|
2021-01-07 21:45:32 +00:00
|
|
|
}
|
|
|
|
|
2021-07-05 16:39:08 +00:00
|
|
|
// LegacyTx is the transaction data of regular Ethereum transactions.
|
2022-06-22 10:51:14 +00:00
|
|
|
// NOTE: All non-protected transactions (i.e non EIP155 signed) will fail if the
|
2022-10-20 20:43:19 +00:00
|
|
|
// AllowUnprotectedTxs parameter is disabled.
|
2021-07-05 16:39:08 +00:00
|
|
|
message LegacyTx {
|
2022-11-25 10:02:20 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
2021-07-08 14:46:42 +00:00
|
|
|
option (cosmos_proto.implements_interface) = "TxData";
|
2021-07-05 16:39:08 +00:00
|
|
|
|
|
|
|
// nonce corresponds to the account nonce (transaction sequence).
|
|
|
|
uint64 nonce = 1;
|
2022-11-25 10:02:20 +00:00
|
|
|
// gas_price defines the value for each gas unit
|
2022-10-20 20:43:19 +00:00
|
|
|
string gas_price = 2 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int"];
|
2021-07-05 16:39:08 +00:00
|
|
|
// gas defines the gas limit defined for the transaction.
|
2022-10-20 20:43:19 +00:00
|
|
|
uint64 gas = 3 [(gogoproto.customname) = "GasLimit"];
|
2022-11-25 10:02:20 +00:00
|
|
|
// to is the hex formatted address of the recipient
|
2021-07-05 16:39:08 +00:00
|
|
|
string to = 4;
|
|
|
|
// value defines the unsigned integer value of the transaction amount.
|
2022-10-20 20:43:19 +00:00
|
|
|
string value = 5
|
|
|
|
[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.customname) = "Amount"];
|
2022-11-25 10:02:20 +00:00
|
|
|
// data is the data payload bytes of the transaction.
|
2021-07-30 11:40:17 +00:00
|
|
|
bytes data = 6;
|
2021-07-05 16:39:08 +00:00
|
|
|
// 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 {
|
2022-11-25 10:02:20 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
2021-07-08 14:46:42 +00:00
|
|
|
option (cosmos_proto.implements_interface) = "TxData";
|
2021-07-05 16:39:08 +00:00
|
|
|
|
2022-11-25 10:02:20 +00:00
|
|
|
// chain_id of the destination EVM chain
|
2021-07-05 16:39:08 +00:00
|
|
|
string chain_id = 1 [
|
|
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
|
|
(gogoproto.customname) = "ChainID",
|
2022-11-25 10:02:20 +00:00
|
|
|
(gogoproto.jsontag) = "chainID"
|
2021-07-05 16:39:08 +00:00
|
|
|
];
|
|
|
|
// nonce corresponds to the account nonce (transaction sequence).
|
|
|
|
uint64 nonce = 2;
|
2022-11-25 10:02:20 +00:00
|
|
|
// gas_price defines the value for each gas unit
|
2022-10-20 20:43:19 +00:00
|
|
|
string gas_price = 3 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int"];
|
2021-07-05 16:39:08 +00:00
|
|
|
// gas defines the gas limit defined for the transaction.
|
2022-10-20 20:43:19 +00:00
|
|
|
uint64 gas = 4 [(gogoproto.customname) = "GasLimit"];
|
2022-11-25 10:02:20 +00:00
|
|
|
// to is the recipient address in hex format
|
2021-07-05 16:39:08 +00:00
|
|
|
string to = 5;
|
|
|
|
// value defines the unsigned integer value of the transaction amount.
|
2022-10-20 20:43:19 +00:00
|
|
|
string value = 6
|
|
|
|
[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.customname) = "Amount"];
|
2022-11-25 10:02:20 +00:00
|
|
|
// data is the data payload bytes of the transaction.
|
|
|
|
bytes data = 7;
|
|
|
|
// accesses is an array of access tuples
|
2022-10-20 20:43:19 +00:00
|
|
|
repeated AccessTuple accesses = 8
|
|
|
|
[(gogoproto.castrepeated) = "AccessList", (gogoproto.jsontag) = "accessList", (gogoproto.nullable) = false];
|
2021-07-05 16:39:08 +00:00
|
|
|
// v defines the signature value
|
|
|
|
bytes v = 9;
|
|
|
|
// r defines the signature value
|
|
|
|
bytes r = 10;
|
|
|
|
// s define the signature value
|
|
|
|
bytes s = 11;
|
|
|
|
}
|
|
|
|
|
2021-07-30 11:40:17 +00:00
|
|
|
// DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.
|
|
|
|
message DynamicFeeTx {
|
2022-11-25 10:02:20 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
2021-07-30 11:40:17 +00:00
|
|
|
option (cosmos_proto.implements_interface) = "TxData";
|
|
|
|
|
2022-11-25 10:02:20 +00:00
|
|
|
// chain_id of the destination EVM chain
|
2021-07-30 11:40:17 +00:00
|
|
|
string chain_id = 1 [
|
|
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
|
|
(gogoproto.customname) = "ChainID",
|
2022-11-25 10:02:20 +00:00
|
|
|
(gogoproto.jsontag) = "chainID"
|
2021-07-30 11:40:17 +00:00
|
|
|
];
|
|
|
|
// nonce corresponds to the account nonce (transaction sequence).
|
|
|
|
uint64 nonce = 2;
|
2022-11-25 10:02:20 +00:00
|
|
|
// gas_tip_cap defines the max value for the gas tip
|
2022-10-20 20:43:19 +00:00
|
|
|
string gas_tip_cap = 3 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int"];
|
2022-11-25 10:02:20 +00:00
|
|
|
// gas_fee_cap defines the max value for the gas fee
|
2022-10-20 20:43:19 +00:00
|
|
|
string gas_fee_cap = 4 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int"];
|
2021-07-30 11:40:17 +00:00
|
|
|
// gas defines the gas limit defined for the transaction.
|
2022-10-20 20:43:19 +00:00
|
|
|
uint64 gas = 5 [(gogoproto.customname) = "GasLimit"];
|
2022-11-25 10:02:20 +00:00
|
|
|
// to is the hex formatted address of the recipient
|
2021-07-30 11:40:17 +00:00
|
|
|
string to = 6;
|
|
|
|
// value defines the the transaction amount.
|
2022-10-20 20:43:19 +00:00
|
|
|
string value = 7
|
|
|
|
[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.customname) = "Amount"];
|
2022-11-25 10:02:20 +00:00
|
|
|
// data is the data payload bytes of the transaction.
|
|
|
|
bytes data = 8;
|
|
|
|
// accesses is an array of access tuples
|
2022-10-20 20:43:19 +00:00
|
|
|
repeated AccessTuple accesses = 9
|
|
|
|
[(gogoproto.castrepeated) = "AccessList", (gogoproto.jsontag) = "accessList", (gogoproto.nullable) = false];
|
2021-07-30 11:40:17 +00:00
|
|
|
// v defines the signature value
|
|
|
|
bytes v = 10;
|
|
|
|
// r defines the signature value
|
|
|
|
bytes r = 11;
|
|
|
|
// s define the signature value
|
|
|
|
bytes s = 12;
|
2021-04-18 15:54:18 +00:00
|
|
|
}
|
|
|
|
|
2022-11-25 10:02:20 +00:00
|
|
|
// ExtensionOptionsEthereumTx is an extension option for ethereum transactions
|
2021-07-30 11:40:17 +00:00
|
|
|
message ExtensionOptionsEthereumTx {
|
2021-04-18 15:54:18 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
}
|
|
|
|
|
2021-01-07 21:45:32 +00:00
|
|
|
// MsgEthereumTxResponse defines the Msg/EthereumTx response type.
|
2021-04-18 15:54:18 +00:00
|
|
|
message MsgEthereumTxResponse {
|
2021-01-07 21:45:32 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
|
2022-11-25 10:02:20 +00:00
|
|
|
// hash of the ethereum transaction in hex format. This hash differs from the
|
2021-07-30 11:40:17 +00:00
|
|
|
// Tendermint sha256 hash of the transaction bytes. See
|
|
|
|
// https://github.com/tendermint/tendermint/issues/6539 for reference
|
2021-06-08 11:11:37 +00:00
|
|
|
string hash = 1;
|
|
|
|
// logs contains the transaction hash and the proto-compatible ethereum
|
2021-01-07 21:45:32 +00:00
|
|
|
// logs.
|
2021-06-08 11:11:37 +00:00
|
|
|
repeated Log logs = 2;
|
2022-11-25 10:02:20 +00:00
|
|
|
// ret is the returned data from evm function (result or data supplied with revert
|
2021-07-30 11:40:17 +00:00
|
|
|
// opcode)
|
2021-06-08 11:11:37 +00:00
|
|
|
bytes ret = 3;
|
2022-11-25 10:02:20 +00:00
|
|
|
// vm_error is the error returned by vm execution
|
2021-07-15 06:01:05 +00:00
|
|
|
string vm_error = 4;
|
2022-11-25 10:02:20 +00:00
|
|
|
// gas_used specifies how much gas was consumed by the transaction
|
2021-06-30 09:31:30 +00:00
|
|
|
uint64 gas_used = 5;
|
2021-07-15 06:01:05 +00:00
|
|
|
}
|
2023-01-04 14:28:45 +00:00
|
|
|
|
|
|
|
// MsgUpdateParams defines a Msg for updating the x/evm module parameters.
|
|
|
|
message MsgUpdateParams {
|
|
|
|
option (cosmos.msg.v1.signer) = "authority";
|
|
|
|
|
|
|
|
// authority is the address of the governance account.
|
|
|
|
string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
|
|
|
|
|
|
// params defines the x/evm parameters to update.
|
|
|
|
// NOTE: All parameters must be supplied.
|
|
|
|
Params params = 2 [(gogoproto.nullable) = false];
|
|
|
|
}
|
|
|
|
|
|
|
|
// MsgUpdateParamsResponse defines the response structure for executing a
|
|
|
|
// MsgUpdateParams message.
|
|
|
|
message MsgUpdateParamsResponse {}
|