feat: use sdk.Int for TxData (#208)

* feat: use sdk.Int for TxData

* c++

* fix

* fix test

* fix rpc

* lint
This commit is contained in:
Federico Kunze Küllmer 2021-06-30 11:28:38 -04:00 committed by GitHub
parent 0113b4d2c0
commit 86e30e8fa3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 359 additions and 1085 deletions

View File

@ -46,6 +46,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### API Breaking
* (proto, evm) [tharsis#207](https://github.com/tharsis/ethermint/issues/207) Replace `big.Int` in favor of `sdk.Int` for `TxData` fields
* (proto, evm) [tharsis#81](https://github.com/tharsis/ethermint/pull/81) gRPC Query and Tx service changes:
* The `TxReceipt`, `TxReceiptsByBlockHeight` endpoints have been removed from the Query service.
* The `ContractAddress`, `Bloom` have been removed from the `MsgEthereumTxResponse` and the

View File

@ -164,7 +164,7 @@ var (
stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
govtypes.ModuleName: {authtypes.Burner},
ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
evmtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, // used for secure addition and substraction of balance using module account
evmtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, // used for secure addition and subtraction of balance using module account
}
// module accounts that are allowed to receive tokens

File diff suppressed because one or more lines are too long

View File

@ -16,6 +16,7 @@ paths:
properties:
balance:
type: string
format: int64
description: balance is the balance of the EVM denomination.
code_hash:
type: string
@ -71,6 +72,7 @@ paths:
properties:
balance:
type: string
format: int64
description: balance is the balance of the EVM denomination.
description: >-
QueryBalanceResponse is the response type for the Query/Balance
@ -10577,6 +10579,7 @@ definitions:
properties:
balance:
type: string
format: int64
description: balance is the balance of the EVM denomination.
code_hash:
type: string
@ -10593,6 +10596,7 @@ definitions:
properties:
balance:
type: string
format: int64
description: balance is the balance of the EVM denomination.
description: >-
QueryBalanceResponse is the response type for the Query/Balance RPC

View File

@ -52,26 +52,6 @@ func printKeyInfo(w io.Writer, keyInfo cryptokeyring.Info, bechKeyOut bechKeyOut
}
}
func printInfos(w io.Writer, infos []cryptokeyring.Info, output string) {
kos, err := cryptokeyring.MkAccKeysOutput(infos)
if err != nil {
panic(err)
}
switch output {
case OutputFormatText:
printTextInfos(w, kos)
case OutputFormatJSON:
out, err := keys.KeysCdc.MarshalJSON(kos)
if err != nil {
panic(err)
}
fmt.Fprintf(w, "%s", out)
}
}
func printTextInfos(w io.Writer, kos []cryptokeyring.KeyOutput) {
out, err := yaml.Marshal(&kos)
if err != nil {

View File

@ -10,14 +10,12 @@
- [ethermint/evm/v1alpha1/evm.proto](#ethermint/evm/v1alpha1/evm.proto)
- [AccessTuple](#ethermint.evm.v1alpha1.AccessTuple)
- [BytesList](#ethermint.evm.v1alpha1.BytesList)
- [ChainConfig](#ethermint.evm.v1alpha1.ChainConfig)
- [Log](#ethermint.evm.v1alpha1.Log)
- [Params](#ethermint.evm.v1alpha1.Params)
- [State](#ethermint.evm.v1alpha1.State)
- [TransactionLogs](#ethermint.evm.v1alpha1.TransactionLogs)
- [TxData](#ethermint.evm.v1alpha1.TxData)
- [TxReceipt](#ethermint.evm.v1alpha1.TxReceipt)
- [TxResult](#ethermint.evm.v1alpha1.TxResult)
- [ethermint/evm/v1alpha1/genesis.proto](#ethermint/evm/v1alpha1/genesis.proto)
@ -137,21 +135,6 @@ AccessTuple is the element type of an access list.
<a name="ethermint.evm.v1alpha1.BytesList"></a>
### BytesList
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `bytes` | [bytes](#bytes) | repeated | |
<a name="ethermint.evm.v1alpha1.ChainConfig"></a>
### ChainConfig
@ -278,12 +261,12 @@ solely as intended in Ethereum abiding by the protocol.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `chain_id` | [bytes](#bytes) | | destination EVM chain ID |
| `chain_id` | [string](#string) | | destination EVM chain ID |
| `nonce` | [uint64](#uint64) | | nonce corresponds to the account nonce (transaction sequence). |
| `gas_price` | [bytes](#bytes) | | price defines the unsigned integer value of the gas price in bytes. |
| `gas_price` | [string](#string) | | gas price defines the value for each gas unit |
| `gas` | [uint64](#uint64) | | gas defines the gas limit defined for the transaction. |
| `to` | [string](#string) | | hex formatted address of the recipient |
| `value` | [bytes](#bytes) | | value defines the unsigned integer value of the transaction amount. |
| `value` | [string](#string) | | value defines the unsigned integer value of the transaction amount. |
| `input` | [bytes](#bytes) | | input defines the data payload bytes of the transaction. |
| `accesses` | [AccessTuple](#ethermint.evm.v1alpha1.AccessTuple) | repeated | |
| `v` | [bytes](#bytes) | | v defines the signature value |
@ -295,27 +278,6 @@ solely as intended in Ethereum abiding by the protocol.
<a name="ethermint.evm.v1alpha1.TxReceipt"></a>
### TxReceipt
TxReceipt defines the receipt type stored in KV for each EVM transaction.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `hash` | [string](#string) | | |
| `from` | [string](#string) | | |
| `data` | [TxData](#ethermint.evm.v1alpha1.TxData) | | |
| `result` | [TxResult](#ethermint.evm.v1alpha1.TxResult) | | |
| `index` | [uint64](#uint64) | | |
| `block_height` | [uint64](#uint64) | | |
| `block_hash` | [string](#string) | | |
<a name="ethermint.evm.v1alpha1.TxResult"></a>
### TxResult
@ -428,7 +390,7 @@ QueryAccountResponse is the response type for the Query/Account RPC method.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `balance` | [string](#string) | | balance is the balance of the EVM denomination. |
| `balance` | [int64](#int64) | | balance is the balance of the EVM denomination. |
| `code_hash` | [string](#string) | | code hash is the hex-formatted code bytes from the EOA. |
| `nonce` | [uint64](#uint64) | | nonce is the account's sequence number. |
@ -460,7 +422,7 @@ QueryBalanceResponse is the response type for the Query/Balance RPC method.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `balance` | [string](#string) | | balance is the balance of the EVM denomination. |
| `balance` | [int64](#int64) | | balance is the balance of the EVM denomination. |

View File

@ -215,12 +215,7 @@ func (e *PublicAPI) GetBalance(address common.Address, blockNum rpctypes.BlockNu
return nil, err
}
val, err := ethermint.UnmarshalBigInt(res.Balance)
if err != nil {
return nil, err
}
return (*hexutil.Big)(val), nil
return (*hexutil.Big)(big.NewInt(res.Balance)), nil
}
// GetStorageAt returns the contract storage at the given address, block number, and key.
@ -997,15 +992,10 @@ func (e *PublicAPI) GetProof(address common.Address, storageKeys []string, block
accProofStr = proof.String()
}
balance, err := ethermint.UnmarshalBigInt(res.Balance)
if err != nil {
return nil, err
}
return &rpctypes.AccountResult{
Address: address,
AccountProof: []string{accProofStr},
Balance: (*hexutil.Big)(balance),
Balance: (*hexutil.Big)(big.NewInt(res.Balance)),
CodeHash: common.HexToHash(res.CodeHash),
Nonce: hexutil.Uint64(res.Nonce),
StorageHash: common.Hash{}, // NOTE: Ethermint doesn't have a storage hash. TODO: implement?

View File

@ -6,6 +6,9 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
ethtypes "github.com/ethereum/go-ethereum/core/types"
sdk "github.com/cosmos/cosmos-sdk/types"
evmtypes "github.com/tharsis/ethermint/x/evm/types"
)
@ -100,7 +103,7 @@ func (args *SendTxArgs) ToTransaction() *evmtypes.MsgEthereumTx {
}
if args.ChainID != nil {
data.ChainID = args.ChainID.ToInt().Bytes()
data.ChainID = sdk.NewIntFromBigInt(args.ChainID.ToInt())
}
if args.Nonce != nil {
@ -112,11 +115,11 @@ func (args *SendTxArgs) ToTransaction() *evmtypes.MsgEthereumTx {
}
if args.GasPrice != nil {
data.GasPrice = args.GasPrice.ToInt().Bytes()
data.GasPrice = sdk.NewIntFromBigInt(args.GasPrice.ToInt())
}
if args.Value != nil {
data.Amount = args.Value.ToInt().Bytes()
data.Amount = sdk.NewIntFromBigInt(args.Value.ToInt())
}
if args.To != nil {

View File

@ -270,14 +270,15 @@ func NewTransactionFromData(
}
rpcTx := &RPCTransaction{
Type: hexutil.Uint64(txData.Type()),
From: from,
Gas: hexutil.Uint64(txData.GasLimit),
GasPrice: (*hexutil.Big)(new(big.Int).SetBytes(txData.GasPrice)),
GasPrice: (*hexutil.Big)(txData.GasPrice.BigInt()),
Hash: txHash,
Input: hexutil.Bytes(txData.Input),
Nonce: hexutil.Uint64(txData.Nonce),
To: to,
Value: (*hexutil.Big)(new(big.Int).SetBytes(txData.Amount)),
Value: (*hexutil.Big)(txData.Amount.BigInt()),
V: (*hexutil.Big)(new(big.Int).SetBytes(txData.V)),
R: (*hexutil.Big)(new(big.Int).SetBytes(txData.R)),
S: (*hexutil.Big)(new(big.Int).SetBytes(txData.S)),
@ -293,5 +294,10 @@ func NewTransactionFromData(
rpcTx.TransactionIndex = (*hexutil.Uint64)(&index)
}
if txData.Type() == ethtypes.AccessListTxType {
rpcTx.Accesses = txData.Accesses.ToEthAccessList()
rpcTx.ChainID = (*hexutil.Big)(txData.ChainID.BigInt())
}
return rpcTx, nil
}

3
go.mod
View File

@ -45,9 +45,8 @@ require (
github.com/xlab/closer v0.0.0-20190328110542-03326addb7c2
github.com/xlab/suplog v1.3.0
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e // indirect
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84
google.golang.org/genproto v0.0.0-20210629200056-84d6f6074151
google.golang.org/grpc v1.38.0
google.golang.org/protobuf v1.27.0 // indirect
gopkg.in/yaml.v2 v2.4.0
nhooyr.io/websocket v1.8.7 // indirect
)

10
go.sum
View File

@ -1380,7 +1380,7 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@ -1473,8 +1473,8 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84 h1:R1r5J0u6Cx+RNl/6mezTw6oA14cmKC96FeUwL6A9bd4=
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
google.golang.org/genproto v0.0.0-20210629200056-84d6f6074151 h1:H/uPzsolsGjhl3CVT6Wb7bK+mf+hmkEvUVu+FBKyNlc=
google.golang.org/genproto v0.0.0-20210629200056-84d6f6074151/go.mod h1:yiaVoXHpRzHGyxV3o4DktVWY4mSUErTKaeEOq6C3t3U=
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
@ -1518,8 +1518,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
google.golang.org/protobuf v1.25.1-0.20200805231151-a709e31e5d12/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.0 h1:KhgSLlr/moiqjv0qUsSnLvdUL7NH7PHW8aZGn7Jpjko=
google.golang.org/protobuf v1.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

View File

@ -176,19 +176,6 @@ message Log {
bool removed = 9;
}
// TxReceipt defines the receipt type stored in KV for each EVM transaction.
message TxReceipt {
option (gogoproto.goproto_getters) = false;
string hash = 1;
string from = 2;
TxData data = 3;
TxResult result = 4;
uint64 index = 5;
uint64 block_height = 6;
string block_hash = 7;
}
// TxResult stores results of Tx execution.
message TxResult {
option (gogoproto.goproto_getters) = false;
@ -216,17 +203,29 @@ message TxData {
option (gogoproto.goproto_getters) = false;
// destination EVM chain ID
bytes chain_id = 1 [(gogoproto.customname) = "ChainID", (gogoproto.jsontag) = "chainID"];
string chain_id = 1 [
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
(gogoproto.customname) = "ChainID",
(gogoproto.jsontag) = "chainID",
(gogoproto.nullable) = false
];
// nonce corresponds to the account nonce (transaction sequence).
uint64 nonce = 2;
// price defines the unsigned integer value of the gas price in bytes.
bytes gas_price = 3 [(gogoproto.customname) = "GasPrice"];
// gas price defines the value for each gas unit
string gas_price = 3 [
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
(gogoproto.nullable) = false
];
// 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.
bytes value = 6 [(gogoproto.customname) = "Amount"];
string value = 6 [
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
(gogoproto.customname) = "Amount",
(gogoproto.nullable) = false
];
// input defines the data payload bytes of the transaction.
bytes input = 7;
repeated AccessTuple accesses = 8
@ -239,12 +238,6 @@ message TxData {
bytes s = 11;
}
message BytesList {
option (gogoproto.goproto_getters) = false;
repeated bytes bytes = 1;
}
// AccessTuple is the element type of an access list.
message AccessTuple {
option (gogoproto.goproto_getters) = false;

View File

@ -79,7 +79,7 @@ message QueryAccountRequest {
// QueryAccountResponse is the response type for the Query/Account RPC method.
message QueryAccountResponse {
// balance is the balance of the EVM denomination.
string balance = 1;
int64 balance = 1;
// code hash is the hex-formatted code bytes from the EOA.
string code_hash = 2;
// nonce is the account's sequence number.
@ -136,7 +136,7 @@ message QueryBalanceRequest {
// QueryBalanceResponse is the response type for the Query/Balance RPC method.
message QueryBalanceResponse {
// balance is the balance of the EVM denomination.
string balance = 1;
int64 balance = 1;
}
// QueryStorageRequest is the request type for the Query/Storage RPC method.

View File

@ -1,6 +1,8 @@
package types
import (
"math/big"
sdk "github.com/cosmos/cosmos-sdk/types"
ethaccounts "github.com/ethereum/go-ethereum/accounts"
@ -30,6 +32,9 @@ const (
var (
// BIP44HDPath is the BIP44 HD path used on Ethereum.
BIP44HDPath = ethaccounts.DefaultBaseDerivationPath.String()
// PowerReduction defines the default power reduction value for staking
PowerReduction = sdk.NewIntFromBigInt(new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil))
)
// SetBech32Prefixes sets the global prefixes to be used when serializing addresses and public keys to Bech32 strings.

View File

@ -1,30 +0,0 @@
package types
import (
"math/big"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
// PowerReduction defines the default power reduction value for staking
var PowerReduction = sdk.NewIntFromBigInt(new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil))
// MarshalBigInt marshals big int into text string for consistent encoding
func MarshalBigInt(i *big.Int) (string, error) {
bz, err := i.MarshalText()
if err != nil {
return "", sdkerrors.Wrap(ErrMarshalBigInt, err.Error())
}
return string(bz), nil
}
// UnmarshalBigInt unmarshals string from *big.Int
func UnmarshalBigInt(s string) (*big.Int, error) {
ret := new(big.Int)
err := ret.UnmarshalText([]byte(s))
if err != nil {
return nil, sdkerrors.Wrap(ErrUnmarshalBigInt, err.Error())
}
return ret, nil
}

View File

@ -1,18 +0,0 @@
package types
import (
"math/big"
"testing"
"github.com/stretchr/testify/require"
)
func TestMarshalAndUnmarshalInt(t *testing.T) {
i := big.NewInt(3)
m, err := MarshalBigInt(i)
require.NoError(t, err)
i2, err := UnmarshalBigInt(m)
require.NoError(t, err)
require.Equal(t, i, i2)
}

View File

@ -36,7 +36,7 @@ func (k Keeper) Account(c context.Context, req *types.QueryAccountRequest) (*typ
k.WithContext(ctx)
return &types.QueryAccountResponse{
Balance: k.GetBalance(addr).String(),
Balance: k.GetBalance(addr).Int64(),
CodeHash: k.GetCodeHash(addr).Hex(),
Nonce: k.GetNonce(addr),
}, nil
@ -125,16 +125,9 @@ func (k Keeper) Balance(c context.Context, req *types.QueryBalanceRequest) (*typ
k.WithContext(ctx)
balanceInt := k.GetBalance(ethcmn.HexToAddress(req.Address))
balance, err := ethermint.MarshalBigInt(balanceInt)
if err != nil {
return nil, status.Error(
codes.Internal,
"failed to marshal big.Int to string",
)
}
return &types.QueryBalanceResponse{
Balance: balance,
Balance: balanceInt.Int64(),
}, nil
}

View File

@ -32,10 +32,11 @@ func (suite *KeeperTestSuite) TestQueryAccount() {
malleate func()
expPass bool
}{
{"invalid address",
{
"invalid address",
func() {
expAccount = &types.QueryAccountResponse{
Balance: "0",
Balance: 0,
CodeHash: common.BytesToHash(ethcrypto.Keccak256(nil)).Hex(),
Nonce: 0,
}
@ -49,10 +50,13 @@ func (suite *KeeperTestSuite) TestQueryAccount() {
"success",
func() {
amt := sdk.Coins{ethermint.NewPhotonCoinInt64(100)}
suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, amt)
suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, suite.address.Bytes(), amt)
err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, amt)
suite.Require().NoError(err)
err = suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, suite.address.Bytes(), amt)
suite.Require().NoError(err)
expAccount = &types.QueryAccountResponse{
Balance: "100",
Balance: 100,
CodeHash: common.BytesToHash(ethcrypto.Keccak256(nil)).Hex(),
Nonce: 0,
}
@ -164,7 +168,7 @@ func (suite *KeeperTestSuite) TestQueryCosmosAccount() {
func (suite *KeeperTestSuite) TestQueryBalance() {
var (
req *types.QueryBalanceRequest
expBalance string
expBalance int64
)
testCases := []struct {
@ -174,7 +178,7 @@ func (suite *KeeperTestSuite) TestQueryBalance() {
}{
{"invalid address",
func() {
expBalance = "0"
expBalance = 0
req = &types.QueryBalanceRequest{
Address: invalidAddress,
}
@ -185,9 +189,12 @@ func (suite *KeeperTestSuite) TestQueryBalance() {
"success",
func() {
amt := sdk.Coins{ethermint.NewPhotonCoinInt64(100)}
suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, amt)
suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, suite.address.Bytes(), amt)
expBalance = "100"
err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, amt)
suite.Require().NoError(err)
err = suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, suite.address.Bytes(), amt)
suite.Require().NoError(err)
expBalance = 100
req = &types.QueryBalanceRequest{
Address: suite.address.String(),
}

File diff suppressed because it is too large Load Diff

View File

@ -66,10 +66,10 @@ func (msg *MsgEthereumTx) FromEthereumTx(tx *ethtypes.Transaction) {
msg.Data.To = tx.To().Hex()
}
if tx.Value() != nil {
msg.Data.Amount = tx.Value().Bytes()
msg.Data.Amount = sdk.NewIntFromBigInt(tx.Value())
}
if tx.GasPrice() != nil {
msg.Data.GasPrice = tx.GasPrice().Bytes()
msg.Data.GasPrice = sdk.NewIntFromBigInt(tx.GasPrice())
}
if tx.AccessList() != nil {
al := tx.AccessList()

View File

@ -66,24 +66,24 @@ func (suite *MsgsTestSuite) TestMsgEthereumTx_ValidateBasic() {
testCases := []struct {
msg string
to string
amount *big.Int
gasPrice *big.Int
amount sdk.Int
gasPrice sdk.Int
from string
accessList *ethtypes.AccessList
chainID *big.Int
chainID sdk.Int
expectPass bool
}{
{msg: "pass with recipient - Legacy Tx", to: suite.to.Hex(), amount: big.NewInt(100), gasPrice: big.NewInt(100000), expectPass: true},
{msg: "pass with recipient - AccessList Tx", to: suite.to.Hex(), amount: big.NewInt(100), gasPrice: big.NewInt(0), accessList: &ethtypes.AccessList{}, chainID: big.NewInt(1), expectPass: true},
{msg: "pass contract - Legacy Tx", to: "", amount: big.NewInt(100), gasPrice: big.NewInt(100000), expectPass: true},
{msg: "invalid recipient", to: invalidFromAddress, amount: big.NewInt(-1), gasPrice: big.NewInt(1000), expectPass: false},
{msg: "nil amount", to: suite.to.Hex(), amount: nil, gasPrice: big.NewInt(1000), expectPass: true},
{msg: "negative amount", to: suite.to.Hex(), amount: big.NewInt(-1), gasPrice: big.NewInt(1000), expectPass: true},
{msg: "nil gas price", to: suite.to.Hex(), amount: big.NewInt(100), gasPrice: nil, expectPass: false},
{msg: "negative gas price", to: suite.to.Hex(), amount: big.NewInt(100), gasPrice: big.NewInt(-1), expectPass: true},
{msg: "zero gas price", to: suite.to.Hex(), amount: big.NewInt(100), gasPrice: big.NewInt(0), expectPass: true},
{msg: "invalid from address", to: suite.to.Hex(), amount: big.NewInt(100), gasPrice: big.NewInt(0), from: invalidFromAddress, expectPass: false},
{msg: "chain ID not set on AccessListTx", to: suite.to.Hex(), amount: big.NewInt(100), gasPrice: big.NewInt(0), accessList: &ethtypes.AccessList{}, chainID: nil, expectPass: false},
{msg: "pass with recipient - Legacy Tx", to: suite.to.Hex(), amount: sdk.NewInt(100), gasPrice: sdk.NewInt(100000), expectPass: true},
{msg: "pass with recipient - AccessList Tx", to: suite.to.Hex(), amount: sdk.NewInt(100), gasPrice: sdk.ZeroInt(), accessList: &ethtypes.AccessList{}, chainID: sdk.OneInt(), expectPass: true},
{msg: "pass contract - Legacy Tx", to: "", amount: sdk.NewInt(100), gasPrice: sdk.NewInt(100000), expectPass: true},
{msg: "invalid recipient", to: invalidFromAddress, amount: sdk.NewInt(-1), gasPrice: sdk.NewInt(1000), expectPass: false},
{msg: "nil amount", to: suite.to.Hex(), amount: sdk.Int{}, gasPrice: sdk.NewInt(1000), expectPass: true},
{msg: "negative amount", to: suite.to.Hex(), amount: sdk.NewInt(-1), gasPrice: sdk.NewInt(1000), expectPass: false},
{msg: "nil gas price", to: suite.to.Hex(), amount: sdk.NewInt(100), gasPrice: sdk.Int{}, expectPass: false},
{msg: "negative gas price", to: suite.to.Hex(), amount: sdk.NewInt(100), gasPrice: sdk.NewInt(-1), expectPass: false},
{msg: "zero gas price", to: suite.to.Hex(), amount: sdk.NewInt(100), gasPrice: sdk.ZeroInt(), expectPass: true},
{msg: "invalid from address", to: suite.to.Hex(), amount: sdk.NewInt(100), gasPrice: sdk.ZeroInt(), from: invalidFromAddress, expectPass: false},
{msg: "chain ID not set on AccessListTx", to: suite.to.Hex(), amount: sdk.NewInt(100), gasPrice: sdk.ZeroInt(), accessList: &ethtypes.AccessList{}, chainID: sdk.Int{}, expectPass: false},
}
for i, tc := range testCases {
@ -96,17 +96,17 @@ func (suite *MsgsTestSuite) TestMsgEthereumTx_ValidateBasic() {
if tc.accessList != nil {
txData.Accesses = NewAccessList(tc.accessList)
if tc.chainID != nil {
txData.ChainID = tc.chainID.Bytes()
if !tc.chainID.IsNil() {
txData.ChainID = tc.chainID
}
}
if tc.amount != nil {
txData.Amount = tc.amount.Bytes()
if !tc.amount.IsNil() {
txData.Amount = tc.amount
}
if tc.gasPrice != nil {
txData.GasPrice = tc.gasPrice.Bytes()
if !tc.gasPrice.IsNil() {
txData.GasPrice = tc.gasPrice
}
msg := MsgEthereumTx{

View File

@ -72,7 +72,7 @@ var xxx_messageInfo_QueryAccountRequest proto.InternalMessageInfo
// QueryAccountResponse is the response type for the Query/Account RPC method.
type QueryAccountResponse struct {
// balance is the balance of the EVM denomination.
Balance string `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"`
Balance int64 `protobuf:"varint,1,opt,name=balance,proto3" json:"balance,omitempty"`
// code hash is the hex-formatted code bytes from the EOA.
CodeHash string `protobuf:"bytes,2,opt,name=code_hash,json=codeHash,proto3" json:"code_hash,omitempty"`
// nonce is the account's sequence number.
@ -112,11 +112,11 @@ func (m *QueryAccountResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryAccountResponse proto.InternalMessageInfo
func (m *QueryAccountResponse) GetBalance() string {
func (m *QueryAccountResponse) GetBalance() int64 {
if m != nil {
return m.Balance
}
return ""
return 0
}
func (m *QueryAccountResponse) GetCodeHash() string {
@ -381,7 +381,7 @@ var xxx_messageInfo_QueryBalanceRequest proto.InternalMessageInfo
// QueryBalanceResponse is the response type for the Query/Balance RPC method.
type QueryBalanceResponse struct {
// balance is the balance of the EVM denomination.
Balance string `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"`
Balance int64 `protobuf:"varint,1,opt,name=balance,proto3" json:"balance,omitempty"`
}
func (m *QueryBalanceResponse) Reset() { *m = QueryBalanceResponse{} }
@ -417,11 +417,11 @@ func (m *QueryBalanceResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryBalanceResponse proto.InternalMessageInfo
func (m *QueryBalanceResponse) GetBalance() string {
func (m *QueryBalanceResponse) GetBalance() int64 {
if m != nil {
return m.Balance
}
return ""
return 0
}
// QueryStorageRequest is the request type for the Query/Storage RPC method.
@ -1077,77 +1077,77 @@ func init() {
}
var fileDescriptor_8bbc79ec2b6c5cb2 = []byte{
// 1117 bytes of a gzipped FileDescriptorProto
// 1119 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x97, 0x4d, 0x6f, 0x1b, 0x45,
0x18, 0xc7, 0xbd, 0x8d, 0x13, 0x27, 0x4f, 0x12, 0x08, 0x83, 0x29, 0x61, 0x5b, 0x9c, 0xb0, 0xa8,
0xb1, 0xf3, 0xd2, 0x9d, 0xda, 0xbc, 0x95, 0x0a, 0x09, 0xe2, 0x4a, 0xa1, 0x52, 0x2b, 0x54, 0x9c,
0x8a, 0x03, 0x17, 0x6b, 0xbc, 0x5e, 0xad, 0xad, 0xac, 0x77, 0xdc, 0x9d, 0xb5, 0x95, 0x28, 0xca,
0xb1, 0xf3, 0xd2, 0xdd, 0xda, 0xbc, 0x95, 0x0a, 0x09, 0xe2, 0x4a, 0xa1, 0x52, 0x2b, 0x54, 0x9c,
0x8a, 0x03, 0x17, 0x6b, 0xbc, 0x1e, 0xad, 0xad, 0xac, 0x77, 0xdc, 0x9d, 0xb5, 0x95, 0x28, 0xca,
0x85, 0x03, 0x02, 0xc1, 0x01, 0xc4, 0x01, 0x84, 0x84, 0xd4, 0x2b, 0x37, 0xbe, 0x02, 0xb7, 0x1e,
0x2b, 0x71, 0xe1, 0x80, 0x10, 0x4a, 0x38, 0xf0, 0x31, 0xd0, 0xbc, 0xac, 0xbd, 0x6b, 0x7b, 0xbd,
0x0e, 0xe2, 0x36, 0x33, 0xfb, 0xbc, 0xfc, 0x9e, 0x67, 0x1e, 0xcf, 0x5f, 0x06, 0xc3, 0x0e, 0x5a,
0xb6, 0xdf, 0x69, 0x7b, 0x01, 0xb6, 0xfb, 0x1d, 0xdc, 0x2f, 0x13, 0xb7, 0xdb, 0x22, 0x65, 0xfc,
0xb8, 0x67, 0xfb, 0x27, 0x66, 0xd7, 0xa7, 0x01, 0x45, 0x57, 0x07, 0x36, 0xa6, 0xdd, 0xef, 0x98,
0xa1, 0x8d, 0x9e, 0x77, 0xa8, 0x43, 0x85, 0x09, 0xe6, 0x2b, 0x69, 0xad, 0xef, 0x58, 0x94, 0x75,
0x28, 0xc3, 0x0d, 0xc2, 0x6c, 0x19, 0x06, 0xf7, 0xcb, 0x0d, 0x3b, 0x20, 0x65, 0xdc, 0x25, 0x4e,
0xdb, 0x23, 0x41, 0x9b, 0x7a, 0xca, 0xf6, 0xba, 0x43, 0xa9, 0xe3, 0xda, 0x98, 0x74, 0xdb, 0x98,
0x78, 0x1e, 0x0d, 0xc4, 0x47, 0xa6, 0xbe, 0x6e, 0x26, 0xb0, 0x71, 0x08, 0x61, 0x61, 0xbc, 0x0b,
0x2f, 0x7e, 0xcc, 0x33, 0xec, 0x5b, 0x16, 0xed, 0x79, 0x41, 0xcd, 0x7e, 0xdc, 0xb3, 0x59, 0x80,
0xd6, 0x21, 0x47, 0x9a, 0x4d, 0xdf, 0x66, 0x6c, 0x5d, 0xdb, 0xd4, 0x4a, 0x4b, 0xb5, 0x70, 0x7b,
0x67, 0xf1, 0x8b, 0x27, 0x1b, 0x99, 0x7f, 0x9e, 0x6c, 0x64, 0x0c, 0x0b, 0xf2, 0x71, 0x57, 0xd6,
0xa5, 0x1e, 0xb3, 0xb9, 0x6f, 0x83, 0xb8, 0xc4, 0xb3, 0xec, 0xd0, 0x57, 0x6d, 0xd1, 0x35, 0x58,
0xb2, 0x68, 0xd3, 0xae, 0xb7, 0x08, 0x6b, 0xad, 0x5f, 0x11, 0xdf, 0x16, 0xf9, 0xc1, 0x3d, 0xc2,
0x5a, 0x28, 0x0f, 0xf3, 0x1e, 0xe5, 0x4e, 0x73, 0x9b, 0x5a, 0x29, 0x5b, 0x93, 0x1b, 0xe3, 0x7d,
0x78, 0x45, 0x24, 0xb9, 0x2b, 0x5a, 0xf2, 0x1f, 0x28, 0x3f, 0xd7, 0x40, 0x9f, 0x14, 0x41, 0xc1,
0xde, 0x80, 0xe7, 0x64, 0xb7, 0xeb, 0xf1, 0x48, 0xab, 0xf2, 0x74, 0x5f, 0x1e, 0x22, 0x1d, 0x16,
0x19, 0x4f, 0xca, 0xf9, 0xae, 0x08, 0xbe, 0xc1, 0x9e, 0x87, 0x20, 0x32, 0x6a, 0xdd, 0xeb, 0x75,
0x1a, 0xb6, 0xaf, 0x2a, 0x58, 0x55, 0xa7, 0x1f, 0x89, 0x43, 0xe3, 0x3e, 0x5c, 0x17, 0x1c, 0x9f,
0x10, 0xb7, 0xdd, 0x24, 0x01, 0xf5, 0x47, 0x8a, 0x79, 0x0d, 0x56, 0x2c, 0xea, 0x8d, 0x72, 0x2c,
0xf3, 0xb3, 0xfd, 0xb1, 0xaa, 0xbe, 0xd2, 0xe0, 0xd5, 0x84, 0x68, 0xaa, 0xb0, 0x22, 0x3c, 0x1f,
0x52, 0xc5, 0x23, 0x86, 0xb0, 0xff, 0x63, 0x69, 0xe1, 0x10, 0x55, 0xe5, 0x3d, 0x5f, 0xe6, 0x7a,
0x6e, 0xa9, 0x21, 0x1a, 0xb8, 0xa6, 0x0d, 0x91, 0x71, 0x5f, 0x25, 0x3b, 0x0c, 0xa8, 0x4f, 0x9c,
0xf4, 0x64, 0x68, 0x0d, 0xe6, 0x8e, 0xec, 0x13, 0x35, 0x6f, 0x7c, 0x19, 0x49, 0xbf, 0xa7, 0xd2,
0x0f, 0x82, 0xa9, 0xf4, 0x79, 0x98, 0xef, 0x13, 0xb7, 0x17, 0x26, 0x97, 0x1b, 0xe3, 0x6d, 0x58,
0x53, 0xa3, 0xd4, 0xbc, 0x54, 0x91, 0x45, 0x78, 0x21, 0xe2, 0xa7, 0x52, 0x20, 0xc8, 0xf2, 0xd9,
0x17, 0x5e, 0x2b, 0x35, 0xb1, 0x36, 0x2a, 0x80, 0x84, 0xe1, 0xa3, 0xe3, 0x07, 0xd4, 0x61, 0x61,
0x0a, 0x04, 0x59, 0xf1, 0x8b, 0x91, 0xf1, 0xc5, 0x3a, 0x12, 0xfc, 0x40, 0xf5, 0x23, 0xf4, 0x51,
0xe1, 0x31, 0x64, 0x5d, 0xea, 0x70, 0xa8, 0xb9, 0xd2, 0x72, 0xe5, 0x9a, 0x39, 0xf9, 0x05, 0x32,
0x1f, 0x50, 0xa7, 0x26, 0x0c, 0x8d, 0x33, 0x78, 0x49, 0xde, 0x84, 0x4b, 0xad, 0xa3, 0x94, 0xf4,
0xe8, 0x00, 0x60, 0xf8, 0x14, 0x89, 0xd6, 0x2e, 0x57, 0xb6, 0x4c, 0xf9, 0x9b, 0x31, 0xf9, 0xbb,
0x65, 0xca, 0xe7, 0x4f, 0xbd, 0x5b, 0xe6, 0xc3, 0xe1, 0x4d, 0xd5, 0x22, 0x9e, 0x91, 0x32, 0x7e,
0xd6, 0xe0, 0xea, 0x68, 0x7e, 0x55, 0xca, 0x01, 0xe4, 0x82, 0xe3, 0x7a, 0xa4, 0x9a, 0x62, 0x52,
0x35, 0x8f, 0x7c, 0xe2, 0x31, 0x62, 0xf1, 0xd0, 0x3c, 0x42, 0x35, 0xfb, 0xf4, 0xcf, 0x8d, 0x4c,
0x6d, 0x21, 0x10, 0xad, 0x41, 0x1f, 0x4e, 0x80, 0x2e, 0xa6, 0x42, 0x4b, 0x88, 0x28, 0xb5, 0xb1,
0x1e, 0x45, 0xad, 0xba, 0x94, 0x76, 0x54, 0x6d, 0x06, 0x86, 0x97, 0xc7, 0xbe, 0x0c, 0x47, 0xaa,
0xc1, 0x0f, 0xd4, 0x85, 0xcb, 0x8d, 0x91, 0x57, 0x37, 0xfe, 0x90, 0xf8, 0xa4, 0x13, 0xb6, 0xdc,
0x38, 0x54, 0x77, 0x1a, 0x9e, 0xaa, 0x10, 0xef, 0xc1, 0x42, 0x57, 0x9c, 0x88, 0x18, 0xcb, 0x95,
0x42, 0x52, 0x1f, 0xa4, 0x5f, 0x58, 0xbe, 0xf4, 0x31, 0xee, 0x29, 0xea, 0x43, 0xae, 0x11, 0xd6,
0x5d, 0xe2, 0xba, 0xe9, 0xbf, 0x9d, 0x3c, 0xcc, 0xb7, 0xbd, 0x6e, 0x2f, 0x10, 0xdd, 0x5a, 0xa9,
0xc9, 0x8d, 0x71, 0x53, 0x55, 0x19, 0x8d, 0x34, 0x9c, 0xea, 0x26, 0x09, 0x48, 0x38, 0xd5, 0x7c,
0x5d, 0xf9, 0x63, 0x15, 0xe6, 0x85, 0x3d, 0xfa, 0x5e, 0x83, 0x9c, 0x7a, 0xa8, 0xd0, 0x6e, 0x12,
0xfc, 0x04, 0x3d, 0xd2, 0xf7, 0x66, 0x33, 0x96, 0x10, 0x46, 0xf9, 0xb3, 0xdf, 0xfe, 0xfe, 0xee,
0xca, 0x2e, 0xda, 0xc6, 0x09, 0xfa, 0xa7, 0x9e, 0x2f, 0x7c, 0xaa, 0xea, 0x3c, 0x43, 0xbf, 0x68,
0xb0, 0x1a, 0x53, 0x08, 0x54, 0x9e, 0x9a, 0x72, 0x92, 0x1e, 0xe9, 0x95, 0xcb, 0xb8, 0x28, 0xd6,
0xdb, 0x82, 0xb5, 0x82, 0x6e, 0x25, 0xb1, 0x86, 0xf2, 0x34, 0x86, 0xfc, 0xab, 0x06, 0x6b, 0xa3,
0xcf, 0x3f, 0x7a, 0x73, 0x2a, 0x42, 0x82, 0xf6, 0xe8, 0x6f, 0x5d, 0xd2, 0x4b, 0xb1, 0x7f, 0x20,
0xd8, 0xef, 0xa0, 0xdb, 0x49, 0xec, 0xfd, 0xd0, 0x73, 0x88, 0x1f, 0xd5, 0xb8, 0x33, 0xf4, 0x83,
0x06, 0x39, 0xf5, 0xf4, 0xa7, 0x0c, 0x44, 0x5c, 0x5b, 0x52, 0x06, 0x62, 0x44, 0x4d, 0x8c, 0x8a,
0x00, 0xdd, 0x43, 0x3b, 0x49, 0xa0, 0x4a, 0x5c, 0x58, 0xa4, 0xbd, 0x3f, 0x69, 0x90, 0x53, 0xb2,
0x90, 0x82, 0x16, 0x57, 0xa2, 0x14, 0xb4, 0x11, 0xa5, 0x31, 0xde, 0x11, 0x68, 0x65, 0x84, 0x93,
0xd0, 0x98, 0x74, 0x18, 0x92, 0xe1, 0xd3, 0x23, 0xfb, 0xe4, 0x0c, 0x7d, 0xad, 0x41, 0x96, 0x0b,
0x0a, 0x2a, 0xa5, 0x4c, 0xdd, 0x40, 0xab, 0xf4, 0xed, 0x19, 0x2c, 0x15, 0x16, 0x16, 0x58, 0xdb,
0xa8, 0x98, 0x3c, 0x96, 0xcd, 0x58, 0xbb, 0xbe, 0xd5, 0x60, 0x41, 0x4a, 0x10, 0xda, 0x99, 0x9a,
0x26, 0xa6, 0x6d, 0xfa, 0xee, 0x4c, 0xb6, 0x0a, 0xca, 0x14, 0x50, 0x25, 0xb4, 0x95, 0x04, 0xa5,
0x64, 0x02, 0x9f, 0x72, 0x91, 0x12, 0x57, 0xb8, 0x34, 0x90, 0x13, 0x74, 0x73, 0xfa, 0xc8, 0x8c,
0xc8, 0x9e, 0x6e, 0xce, 0x6a, 0x3e, 0xeb, 0xa3, 0xd3, 0xe0, 0x2e, 0x31, 0xbe, 0x1f, 0x35, 0x80,
0xa1, 0x52, 0xa0, 0x19, 0x32, 0x46, 0xc5, 0x46, 0xc7, 0x33, 0xdb, 0x2b, 0xc4, 0x5d, 0x81, 0x78,
0x03, 0xbd, 0x3e, 0x1d, 0x51, 0x28, 0x13, 0xfa, 0x52, 0x83, 0x05, 0xa9, 0x23, 0x29, 0x17, 0x1a,
0x93, 0xae, 0x94, 0x0b, 0x8d, 0x0b, 0x9a, 0xb1, 0x25, 0x80, 0x36, 0x51, 0x21, 0x09, 0x48, 0x4a,
0x97, 0x68, 0xd4, 0x50, 0x6c, 0x52, 0x1a, 0x35, 0xa6, 0x6f, 0x29, 0x8d, 0x1a, 0x57, 0xb1, 0xf4,
0x46, 0x31, 0xe1, 0x53, 0xb7, 0x88, 0xeb, 0x56, 0xab, 0x4f, 0xcf, 0x0b, 0xda, 0xb3, 0xf3, 0x82,
0xf6, 0xd7, 0x79, 0x41, 0xfb, 0xe6, 0xa2, 0x90, 0x79, 0x76, 0x51, 0xc8, 0xfc, 0x7e, 0x51, 0xc8,
0x7c, 0x5a, 0x72, 0xda, 0x41, 0xab, 0xd7, 0x30, 0x2d, 0xda, 0xc1, 0x41, 0x8b, 0xf8, 0xac, 0xcd,
0x22, 0x01, 0x8f, 0x45, 0xc8, 0xe0, 0xa4, 0x6b, 0xb3, 0xc6, 0x82, 0xf8, 0x37, 0xf6, 0xc6, 0xbf,
0x01, 0x00, 0x00, 0xff, 0xff, 0x4e, 0x4f, 0xb9, 0xc4, 0x4d, 0x0e, 0x00, 0x00,
0x0e, 0xe2, 0x36, 0x33, 0x7e, 0x5e, 0x7e, 0xcf, 0x33, 0xcf, 0xce, 0x5f, 0x06, 0x83, 0x04, 0x2d,
0xe2, 0x77, 0xda, 0x5e, 0x60, 0x91, 0x7e, 0xc7, 0xea, 0x97, 0xb1, 0xdb, 0x6d, 0xe1, 0xb2, 0xf5,
0xb8, 0x47, 0xfc, 0x13, 0xb3, 0xeb, 0xd3, 0x80, 0xa2, 0xab, 0x03, 0x1b, 0x93, 0xf4, 0x3b, 0x66,
0x68, 0xa3, 0xe7, 0x1d, 0xea, 0x50, 0x61, 0x62, 0xf1, 0x95, 0xb4, 0xd6, 0x77, 0x6c, 0xca, 0x3a,
0x94, 0x59, 0x0d, 0xcc, 0x88, 0x0c, 0x63, 0xf5, 0xcb, 0x0d, 0x12, 0xe0, 0xb2, 0xd5, 0xc5, 0x4e,
0xdb, 0xc3, 0x41, 0x9b, 0x7a, 0xca, 0xf6, 0xba, 0x43, 0xa9, 0xe3, 0x12, 0x0b, 0x77, 0xdb, 0x16,
0xf6, 0x3c, 0x1a, 0x88, 0x1f, 0x99, 0xfa, 0x75, 0x33, 0x81, 0x8d, 0x43, 0x08, 0x0b, 0xe3, 0x5d,
0x78, 0xf1, 0x63, 0x9e, 0x61, 0xdf, 0xb6, 0x69, 0xcf, 0x0b, 0x6a, 0xe4, 0x71, 0x8f, 0xb0, 0x00,
0xad, 0x43, 0x0e, 0x37, 0x9b, 0x3e, 0x61, 0x6c, 0x5d, 0xdb, 0xd4, 0x4a, 0x4b, 0xb5, 0x70, 0x7b,
0x67, 0xf1, 0x8b, 0x27, 0x1b, 0x99, 0x7f, 0x9e, 0x6c, 0x64, 0x0c, 0x1b, 0xf2, 0x71, 0x57, 0xd6,
0xa5, 0x1e, 0x23, 0xdc, 0xb7, 0x81, 0x5d, 0xec, 0xd9, 0x44, 0xf8, 0xce, 0xd5, 0xc2, 0x2d, 0xba,
0x06, 0x4b, 0x36, 0x6d, 0x92, 0x7a, 0x0b, 0xb3, 0xd6, 0xfa, 0x15, 0x11, 0x77, 0x91, 0x1f, 0xdc,
0xc3, 0xac, 0x85, 0xf2, 0x30, 0xef, 0x51, 0xee, 0x34, 0xb7, 0xa9, 0x95, 0xb2, 0x35, 0xb9, 0x31,
0xde, 0x87, 0x57, 0x44, 0x92, 0xbb, 0xa2, 0x25, 0xff, 0x81, 0xf2, 0x73, 0x0d, 0xf4, 0x49, 0x11,
0x14, 0xec, 0x0d, 0x78, 0x4e, 0x76, 0xbb, 0x1e, 0x8f, 0xb4, 0x2a, 0x4f, 0xf7, 0xe5, 0x21, 0xd2,
0x61, 0x91, 0xf1, 0xa4, 0x9c, 0xef, 0x8a, 0xe0, 0x1b, 0xec, 0x79, 0x08, 0x2c, 0xa3, 0xd6, 0xbd,
0x5e, 0xa7, 0x41, 0x7c, 0x55, 0xc1, 0xaa, 0x3a, 0xfd, 0x48, 0x1c, 0x1a, 0xf7, 0xe1, 0xba, 0xe0,
0xf8, 0x04, 0xbb, 0xed, 0x26, 0x0e, 0xa8, 0x3f, 0x52, 0xcc, 0x6b, 0xb0, 0x62, 0x53, 0x6f, 0x94,
0x63, 0x99, 0x9f, 0xed, 0x8f, 0x55, 0xf5, 0x95, 0x06, 0xaf, 0x26, 0x44, 0x53, 0x85, 0x15, 0xe1,
0xf9, 0x90, 0x2a, 0x1e, 0x31, 0x84, 0xfd, 0x1f, 0x4b, 0x0b, 0x87, 0xa8, 0x2a, 0xef, 0xf9, 0x32,
0xd7, 0x73, 0x4b, 0x0d, 0xd1, 0xc0, 0x35, 0x6d, 0x88, 0x8c, 0xfb, 0x2a, 0xd9, 0x61, 0x40, 0x7d,
0xec, 0xa4, 0x27, 0x43, 0x6b, 0x30, 0x77, 0x44, 0x4e, 0xd4, 0xbc, 0xf1, 0x65, 0x24, 0xfd, 0x9e,
0x4a, 0x3f, 0x08, 0xa6, 0xd2, 0xe7, 0x61, 0xbe, 0x8f, 0xdd, 0x1e, 0x51, 0xb1, 0xe4, 0xc6, 0x78,
0x1b, 0xd6, 0xd4, 0x28, 0x35, 0x2f, 0x55, 0x64, 0x11, 0x5e, 0x88, 0xf8, 0xa9, 0x14, 0x08, 0xb2,
0x7c, 0xf6, 0x85, 0xd7, 0x4a, 0x4d, 0xac, 0x8d, 0x0a, 0x20, 0x61, 0xf8, 0xe8, 0xf8, 0x01, 0x75,
0x58, 0x98, 0x02, 0x41, 0x56, 0x7c, 0x31, 0x32, 0xbe, 0x58, 0x47, 0x82, 0x1f, 0xa8, 0x7e, 0x84,
0x3e, 0x2a, 0xbc, 0x05, 0x59, 0x97, 0x3a, 0x1c, 0x6a, 0xae, 0xb4, 0x5c, 0xb9, 0x66, 0x4e, 0x7e,
0x81, 0xcc, 0x07, 0xd4, 0xa9, 0x09, 0x43, 0xe3, 0x0c, 0x5e, 0x92, 0x37, 0xe1, 0x52, 0xfb, 0x28,
0x25, 0x3d, 0x3a, 0x00, 0x18, 0x3e, 0x45, 0xa2, 0xb5, 0xcb, 0x95, 0x2d, 0x53, 0x7e, 0x33, 0x26,
0x7f, 0xb7, 0x4c, 0xf9, 0xfc, 0xa9, 0x77, 0xcb, 0x7c, 0x38, 0xbc, 0xa9, 0x5a, 0xc4, 0x33, 0x52,
0xc6, 0xcf, 0x1a, 0x5c, 0x1d, 0xcd, 0xaf, 0x4a, 0x39, 0x80, 0x5c, 0x70, 0x5c, 0x8f, 0x54, 0x53,
0x4c, 0xaa, 0xe6, 0x91, 0x8f, 0x3d, 0x86, 0x6d, 0x1e, 0x9a, 0x47, 0xa8, 0x66, 0x9f, 0xfe, 0xb9,
0x91, 0xa9, 0x2d, 0x04, 0xa2, 0x35, 0xe8, 0xc3, 0x09, 0xd0, 0xc5, 0x54, 0x68, 0x09, 0x11, 0xa5,
0x36, 0xd6, 0xa3, 0xa8, 0x55, 0x97, 0xd2, 0x8e, 0xaa, 0xcd, 0xb0, 0xe0, 0xe5, 0xb1, 0x5f, 0x86,
0x23, 0xd5, 0xe0, 0x07, 0xea, 0xc2, 0xe5, 0xc6, 0xc8, 0xab, 0x1b, 0x7f, 0x88, 0x7d, 0xdc, 0x09,
0x5b, 0x6e, 0x1c, 0xaa, 0x3b, 0x0d, 0x4f, 0x55, 0x88, 0xf7, 0x60, 0xa1, 0x2b, 0x4e, 0x44, 0x8c,
0xe5, 0x4a, 0x21, 0xa9, 0x0f, 0xd2, 0x2f, 0x2c, 0x5f, 0xfa, 0x18, 0xf7, 0x14, 0xf5, 0x21, 0xd7,
0x08, 0xfb, 0x2e, 0x76, 0xdd, 0xf4, 0x6f, 0x27, 0x0f, 0xf3, 0x6d, 0xaf, 0xdb, 0x0b, 0x44, 0xb7,
0x56, 0x6a, 0x72, 0x63, 0xdc, 0x54, 0x55, 0x46, 0x23, 0x0d, 0xa7, 0xba, 0x89, 0x03, 0x1c, 0x4e,
0x35, 0x5f, 0x57, 0xfe, 0x58, 0x85, 0x79, 0x61, 0x8f, 0xbe, 0xd7, 0x20, 0xa7, 0x1e, 0x2a, 0xb4,
0x9b, 0x04, 0x3f, 0x41, 0x8f, 0xf4, 0xbd, 0xd9, 0x8c, 0x25, 0x84, 0x51, 0xfe, 0xec, 0xb7, 0xbf,
0xbf, 0xbb, 0xb2, 0x8b, 0xb6, 0xad, 0x04, 0xfd, 0x53, 0xcf, 0x97, 0x75, 0xaa, 0xea, 0x3c, 0x43,
0xbf, 0x68, 0xb0, 0x1a, 0x53, 0x08, 0x54, 0x9e, 0x9a, 0x72, 0x92, 0x1e, 0xe9, 0x95, 0xcb, 0xb8,
0x28, 0xd6, 0xdb, 0x82, 0xb5, 0x82, 0x6e, 0x25, 0xb1, 0x86, 0xf2, 0x34, 0x86, 0xfc, 0xab, 0x06,
0x6b, 0xa3, 0xcf, 0x3f, 0x7a, 0x73, 0x2a, 0x42, 0x82, 0xf6, 0xe8, 0x6f, 0x5d, 0xd2, 0x4b, 0xb1,
0x7f, 0x20, 0xd8, 0xef, 0xa0, 0xdb, 0x49, 0xec, 0xfd, 0xd0, 0x73, 0x88, 0x1f, 0xd5, 0xb8, 0x33,
0xf4, 0x83, 0x06, 0x39, 0xf5, 0xf4, 0xa7, 0x0c, 0x44, 0x5c, 0x5b, 0x52, 0x06, 0x62, 0x44, 0x4d,
0x8c, 0x8a, 0x00, 0xdd, 0x43, 0x3b, 0x49, 0xa0, 0x4a, 0x5c, 0x58, 0xa4, 0xbd, 0x3f, 0x69, 0x90,
0x53, 0xb2, 0x90, 0x82, 0x16, 0x57, 0xa2, 0x14, 0xb4, 0x11, 0xa5, 0x31, 0xde, 0x11, 0x68, 0x65,
0x64, 0x25, 0xa1, 0x31, 0xe9, 0x30, 0x24, 0xb3, 0x4e, 0x8f, 0xc8, 0xc9, 0x19, 0xfa, 0x5a, 0x83,
0x2c, 0x17, 0x14, 0x54, 0x4a, 0x99, 0xba, 0x81, 0x56, 0xe9, 0xdb, 0x33, 0x58, 0x2a, 0x2c, 0x4b,
0x60, 0x6d, 0xa3, 0x62, 0xf2, 0x58, 0x36, 0x63, 0xed, 0xfa, 0x56, 0x83, 0x05, 0x29, 0x41, 0x68,
0x67, 0x6a, 0x9a, 0x98, 0xb6, 0xe9, 0xbb, 0x33, 0xd9, 0x2a, 0x28, 0x53, 0x40, 0x95, 0xd0, 0x56,
0x12, 0x94, 0x92, 0x09, 0xeb, 0x94, 0x8b, 0x94, 0xb8, 0xc2, 0xa5, 0x81, 0x9c, 0xa0, 0x9b, 0xd3,
0x47, 0x66, 0x44, 0xf6, 0x74, 0x73, 0x56, 0xf3, 0x59, 0x1f, 0x9d, 0x06, 0x77, 0x89, 0xf1, 0xfd,
0xa8, 0x01, 0x0c, 0x95, 0x02, 0xcd, 0x90, 0x31, 0x2a, 0x36, 0xba, 0x35, 0xb3, 0xbd, 0x42, 0xdc,
0x15, 0x88, 0x37, 0xd0, 0xeb, 0xd3, 0x11, 0x85, 0x32, 0xa1, 0x2f, 0x35, 0x58, 0x90, 0x3a, 0x92,
0x72, 0xa1, 0x31, 0xe9, 0x4a, 0xb9, 0xd0, 0xb8, 0xa0, 0x19, 0x5b, 0x02, 0x68, 0x13, 0x15, 0x92,
0x80, 0xa4, 0x74, 0x89, 0x46, 0x0d, 0xc5, 0x26, 0xa5, 0x51, 0x63, 0xfa, 0x96, 0xd2, 0xa8, 0x71,
0x15, 0x4b, 0x6f, 0x14, 0x13, 0x3e, 0x75, 0x1b, 0xbb, 0x6e, 0xb5, 0xfa, 0xf4, 0xbc, 0xa0, 0x3d,
0x3b, 0x2f, 0x68, 0x7f, 0x9d, 0x17, 0xb4, 0x6f, 0x2e, 0x0a, 0x99, 0x67, 0x17, 0x85, 0xcc, 0xef,
0x17, 0x85, 0xcc, 0xa7, 0x25, 0xa7, 0x1d, 0xb4, 0x7a, 0x0d, 0xd3, 0xa6, 0x1d, 0x2b, 0x68, 0x61,
0x9f, 0xb5, 0x59, 0x24, 0xe0, 0xb1, 0x08, 0x19, 0x9c, 0x74, 0x09, 0x6b, 0x2c, 0x88, 0x7f, 0x63,
0x6f, 0xfc, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xbb, 0x62, 0xa4, 0x45, 0x4d, 0x0e, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -1676,12 +1676,10 @@ func (m *QueryAccountResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x12
}
if len(m.Balance) > 0 {
i -= len(m.Balance)
copy(dAtA[i:], m.Balance)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Balance)))
if m.Balance != 0 {
i = encodeVarintQuery(dAtA, i, uint64(m.Balance))
i--
dAtA[i] = 0xa
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
@ -1876,12 +1874,10 @@ func (m *QueryBalanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if len(m.Balance) > 0 {
i -= len(m.Balance)
copy(dAtA[i:], m.Balance)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Balance)))
if m.Balance != 0 {
i = encodeVarintQuery(dAtA, i, uint64(m.Balance))
i--
dAtA[i] = 0xa
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
@ -2377,9 +2373,8 @@ func (m *QueryAccountResponse) Size() (n int) {
}
var l int
_ = l
l = len(m.Balance)
if l > 0 {
n += 1 + l + sovQuery(uint64(l))
if m.Balance != 0 {
n += 1 + sovQuery(uint64(m.Balance))
}
l = len(m.CodeHash)
if l > 0 {
@ -2474,9 +2469,8 @@ func (m *QueryBalanceResponse) Size() (n int) {
}
var l int
_ = l
l = len(m.Balance)
if l > 0 {
n += 1 + l + sovQuery(uint64(l))
if m.Balance != 0 {
n += 1 + sovQuery(uint64(m.Balance))
}
return n
}
@ -2794,10 +2788,10 @@ func (m *QueryAccountResponse) Unmarshal(dAtA []byte) error {
}
switch fieldNum {
case 1:
if wireType != 2 {
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType)
}
var stringLen uint64
m.Balance = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
@ -2807,24 +2801,11 @@ func (m *QueryAccountResponse) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
m.Balance |= int64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Balance = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field CodeHash", wireType)
@ -3431,10 +3412,10 @@ func (m *QueryBalanceResponse) Unmarshal(dAtA []byte) error {
}
switch fieldNum {
case 1:
if wireType != 2 {
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType)
}
var stringLen uint64
m.Balance = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
@ -3444,24 +3425,11 @@ func (m *QueryBalanceResponse) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
m.Balance |= int64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Balance = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipQuery(dAtA[iNdEx:])

View File

@ -3,9 +3,12 @@ package types
import (
"math/big"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/ethereum/go-ethereum/common"
ethtypes "github.com/ethereum/go-ethereum/core/types"
"github.com/tharsis/ethermint/types"
)
@ -31,20 +34,25 @@ func newTxData(
// NOTE: we don't populate chain id on LegacyTx type
if chainID != nil {
txData.ChainID = chainID.Bytes()
txData.ChainID = sdk.NewIntFromBigInt(chainID)
}
}
if amount != nil {
txData.Amount = amount.Bytes()
txData.Amount = sdk.NewIntFromBigInt(amount)
}
if gasPrice != nil {
txData.GasPrice = gasPrice.Bytes()
txData.GasPrice = sdk.NewIntFromBigInt(gasPrice)
}
return txData
}
func (data *TxData) txType() byte {
// Type returns the tx type
func (data TxData) Type() uint8 {
return data.txType()
}
func (data *TxData) txType() uint8 {
if data.Accesses == nil {
return ethtypes.LegacyTxType
}
@ -57,11 +65,7 @@ func (data *TxData) chainID() *big.Int {
return DeriveChainID(v)
}
if data.ChainID == nil {
return nil
}
return new(big.Int).SetBytes(data.ChainID)
return data.ChainID.BigInt()
}
func (data *TxData) accessList() ethtypes.AccessList {
@ -80,17 +84,11 @@ func (data *TxData) gas() uint64 {
}
func (data *TxData) gasPrice() *big.Int {
if data.GasPrice == nil {
return nil
}
return new(big.Int).SetBytes(data.GasPrice)
return data.GasPrice.BigInt()
}
func (data *TxData) amount() *big.Int {
if data.Amount == nil {
return nil
}
return new(big.Int).SetBytes(data.Amount)
return data.Amount.BigInt()
}
func (data *TxData) nonce() uint64 { return data.Nonce }
@ -162,7 +160,7 @@ func (data *TxData) setSignatureValues(chainID, v, r, s *big.Int) {
data.S = s.Bytes()
}
if data.txType() == ethtypes.AccessListTxType && chainID != nil {
data.ChainID = chainID.Bytes()
data.ChainID = sdk.NewIntFromBigInt(chainID)
}
}

View File

@ -4,8 +4,11 @@ import (
"math/big"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/stretchr/testify/require"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/ethereum/go-ethereum/common"
"github.com/tharsis/ethermint/tests"
)
@ -16,7 +19,7 @@ func TestTxData_chainID(t *testing.T) {
expChainID *big.Int
}{
{
"access list tx", TxData{Accesses: AccessList{}, ChainID: big.NewInt(1).Bytes()}, big.NewInt(1),
"access list tx", TxData{Accesses: AccessList{}, ChainID: sdk.NewInt(1)}, big.NewInt(1),
},
{
"access list tx, nil chain ID", TxData{Accesses: AccessList{}}, nil,