Skip to content

Commit

Permalink
style: Fix golangci-lint issues
Browse files Browse the repository at this point in the history
  • Loading branch information
drklee3 committed Sep 12, 2024
1 parent 2908de1 commit 226c3d7
Showing 1 changed file with 58 additions and 40 deletions.
98 changes: 58 additions & 40 deletions app/ante/eip712_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ import (
"time"

sdkmath "cosmossdk.io/math"
abci "github.com/cometbft/cometbft/abci/types"
"github.com/cometbft/cometbft/crypto/tmhash"
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
tmversion "github.com/cometbft/cometbft/proto/tendermint/version"
"github.com/cometbft/cometbft/version"
"github.com/cosmos/cosmos-sdk/client"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
Expand All @@ -21,12 +26,6 @@ import (
ethtypes "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/signer/core/apitypes"

abci "github.com/cometbft/cometbft/abci/types"
"github.com/cometbft/cometbft/crypto/tmhash"
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
tmversion "github.com/cometbft/cometbft/proto/tendermint/version"
"github.com/cometbft/cometbft/version"
"github.com/evmos/ethermint/crypto/ethsecp256k1"
"github.com/evmos/ethermint/ethereum/eip712"
"github.com/evmos/ethermint/tests"
Expand Down Expand Up @@ -75,7 +74,7 @@ func (suite *EIP712TestSuite) getEVMAmount(amount int64) sdkmath.Int {
func (suite *EIP712TestSuite) createTestEIP712CosmosTxBuilderWithDomain(
from sdk.AccAddress,
priv cryptotypes.PrivKey,
chainId string,
chainID string,
gas uint64,
gasAmount sdk.Coins,
msgs []sdk.Msg,
Expand All @@ -86,17 +85,17 @@ func (suite *EIP712TestSuite) createTestEIP712CosmosTxBuilderWithDomain(
nonce, err := suite.tApp.GetAccountKeeper().GetSequence(suite.ctx, from)
suite.Require().NoError(err)

pc, err := etherminttypes.ParseChainID(chainId)
pc, err := etherminttypes.ParseChainID(chainID)
suite.Require().NoError(err)
ethChainId := pc.Uint64()
ethChainID := pc.Uint64()

// GenerateTypedData TypedData
fee := legacytx.NewStdFee(gas, gasAmount)
accNumber := suite.tApp.GetAccountKeeper().GetAccount(suite.ctx, from).GetAccountNumber()

data := eip712.ConstructUntypedEIP712Data(chainId, accNumber, nonce, 0, fee, msgs, "", nil)
data := eip712.ConstructUntypedEIP712Data(chainID, accNumber, nonce, 0, fee, msgs, "", nil)
typedData, err := eip712.WrapTxToTypedData(
ethChainId,
ethChainID,
msgs,
data,
&eip712.FeeDelegationOptions{
Expand Down Expand Up @@ -130,7 +129,7 @@ func (suite *EIP712TestSuite) createTestEIP712CosmosTxBuilderWithDomain(
var option *codectypes.Any
option, err = codectypes.NewAnyWithValue(&etherminttypes.ExtensionOptionsWeb3Tx{
FeePayer: from.String(),
TypedDataChainID: ethChainId,
TypedDataChainID: ethChainID,
FeePayerSig: signature,
})
suite.Require().NoError(err)
Expand Down Expand Up @@ -164,15 +163,15 @@ func (suite *EIP712TestSuite) createTestEIP712CosmosTxBuilderWithDomain(
func (suite *EIP712TestSuite) createTestEIP712CosmosTxBuilder(
from sdk.AccAddress,
priv cryptotypes.PrivKey,
chainId string,
chainID string,
gas uint64,
gasAmount sdk.Coins,
msgs []sdk.Msg,
) client.TxBuilder {
return suite.createTestEIP712CosmosTxBuilderWithDomain(
from,
priv,
chainId,
chainID,
gas,
gasAmount,
msgs,
Expand Down Expand Up @@ -375,7 +374,7 @@ func (suite *EIP712TestSuite) SetupTest() {
tApp.GetStakingKeeper().SetValidator(ctx, validator)

// Deploy an ERC20 contract for USDC
contractAddr := suite.deployUSDCERC20(tApp, ctx)
contractAddr := suite.deployUSDCERC20()
pair := evmutiltypes.NewConversionPair(
contractAddr,
USDCCoinDenom,
Expand Down Expand Up @@ -468,21 +467,22 @@ func (suite *EIP712TestSuite) SetupTest() {
},
},
}
evmKeeper.SetParams(suite.ctx, params)
err = evmKeeper.SetParams(suite.ctx, params)
suite.Require().NoError(err)

// give test address 50k erc20 usdc to begin with
initBal := suite.getEVMAmount(50_000)
err = suite.evmutilKeeper.MintERC20(
ctx,
pair.GetAddress(), // contractAddr
suite.testEVMAddr, //receiver
suite.testEVMAddr, // receiver
initBal.BigInt(),
)
suite.Require().NoError(err)
err = suite.evmutilKeeper.MintERC20(
ctx,
pair.GetAddress(), // contractAddr
suite.testEVMAddr2, //receiver
suite.testEVMAddr2, // receiver
initBal.BigInt(),
)
suite.Require().NoError(err)
Expand All @@ -498,7 +498,7 @@ func (suite *EIP712TestSuite) SetupTest() {
func (suite *EIP712TestSuite) Commit() {
_ = suite.tApp.Commit()
header := suite.ctx.BlockHeader()
header.Height += 1
header.Height++
suite.tApp.BeginBlock(abci.RequestBeginBlock{
Header: header,
})
Expand All @@ -507,13 +507,14 @@ func (suite *EIP712TestSuite) Commit() {
suite.ctx = suite.tApp.NewContext(false, header)
}

func (suite *EIP712TestSuite) deployUSDCERC20(app app.TestApp, ctx sdk.Context) evmutiltypes.InternalEVMAddress {
func (suite *EIP712TestSuite) deployUSDCERC20() evmutiltypes.InternalEVMAddress {
// make sure module account is created
suite.tApp.FundModuleAccount(
err := suite.tApp.FundModuleAccount(
suite.ctx,
evmutiltypes.ModuleName,
sdk.NewCoins(sdk.NewCoin("ukava", sdkmath.NewInt(0))),
)
suite.Require().NoError(err)

contractAddr, err := suite.evmutilKeeper.DeployTestMintableERC20Contract(suite.ctx, "USDC", "USDC", uint8(18))
suite.Require().NoError(err)
Expand Down Expand Up @@ -590,13 +591,14 @@ func (suite *EIP712TestSuite) TestEIP712Tx() {
usdxToMintAmt: 90,
failCheckTx: true,
errMsg: "tx intended signer does not match the given signer",
updateTx: func(txBuilder client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
var option *codectypes.Any
option, _ = codectypes.NewAnyWithValue(&etherminttypes.ExtensionOptionsWeb3Tx{
updateTx: func(txBuilder client.TxBuilder, _ []sdk.Msg) client.TxBuilder {
option, err := codectypes.NewAnyWithValue(&etherminttypes.ExtensionOptionsWeb3Tx{
FeePayer: suite.testAddr.String(),
TypedDataChainID: 2221,
FeePayerSig: []byte("sig"),
})
suite.Require().NoError(err)

builder, _ := txBuilder.(authtx.ExtensionOptionsTxBuilder)
builder.SetExtensionOptions(option)
return txBuilder
Expand All @@ -607,10 +609,16 @@ func (suite *EIP712TestSuite) TestEIP712Tx() {
usdcDepositAmt: 100,
usdxToMintAmt: 90,
errMsg: "insufficient funds",
updateTx: func(txBuilder client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
updateTx: func(txBuilder client.TxBuilder, _ []sdk.Msg) client.TxBuilder {
bk := suite.tApp.GetBankKeeper()
gasCoins := bk.GetBalance(suite.ctx, suite.testAddr, "ukava")
suite.tApp.GetBankKeeper().SendCoins(suite.ctx, suite.testAddr, suite.testAddr2, sdk.NewCoins(gasCoins))
err := suite.tApp.GetBankKeeper().SendCoins(
suite.ctx,
suite.testAddr,
suite.testAddr2,
sdk.NewCoins(gasCoins),
)
suite.Require().NoError(err)
return txBuilder
},
},
Expand All @@ -620,10 +628,15 @@ func (suite *EIP712TestSuite) TestEIP712Tx() {
usdxToMintAmt: 90,
failCheckTx: true,
errMsg: "invalid chain-id",
updateTx: func(txBuilder client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
updateTx: func(_ client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
gasAmt := sdk.NewCoins(sdk.NewCoin("ukava", sdkmath.NewInt(20)))
return suite.createTestEIP712CosmosTxBuilder(
suite.testAddr, suite.testPrivKey, "kavatest_12-1", uint64(sims.DefaultGenTxGas*10), gasAmt, msgs,
suite.testAddr,
suite.testPrivKey,
"kavatest_12-1",
uint64(sims.DefaultGenTxGas*10),
gasAmt,
msgs,
)
},
},
Expand All @@ -633,10 +646,15 @@ func (suite *EIP712TestSuite) TestEIP712Tx() {
usdxToMintAmt: 90,
failCheckTx: true,
errMsg: "invalid pubkey",
updateTx: func(txBuilder client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
updateTx: func(_ client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
gasAmt := sdk.NewCoins(sdk.NewCoin("ukava", sdkmath.NewInt(20)))
return suite.createTestEIP712CosmosTxBuilder(
suite.testAddr2, suite.testPrivKey2, ChainID, uint64(sims.DefaultGenTxGas*10), gasAmt, msgs,
suite.testAddr2,
suite.testPrivKey2,
ChainID,
uint64(sims.DefaultGenTxGas*10),
gasAmt,
msgs,
)
},
},
Expand All @@ -646,22 +664,22 @@ func (suite *EIP712TestSuite) TestEIP712Tx() {
usdxToMintAmt: 90,
failCheckTx: false,
errMsg: "",
updateTx: func(txBuilder client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
updateTx: func(_ client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
gasAmt := sdk.NewCoins(sdk.NewCoin("ukava", sdkmath.NewInt(20)))

pc, err := etherminttypes.ParseChainID(ChainID)
suite.Require().NoError(err)
ethChainId := pc.Int64()
ethChainID := pc.Int64()

// Expected domain used in Ethermint ante handler
// These are explicitly set in this test to ensure Ethermint
// is using the expected domain for signature verification
domain := apitypes.TypedDataDomain{
Name: "Kava Cosmos",
Version: "1.0.0",
ChainId: math.NewHexOrDecimal256(ethChainId),
ChainId: math.NewHexOrDecimal256(ethChainID),

// Both should be ommitted
// Both should be omitted
Salt: "",
VerifyingContract: "",
}
Expand Down Expand Up @@ -703,20 +721,20 @@ func (suite *EIP712TestSuite) TestEIP712Tx() {
usdxToMintAmt: 90,
failCheckTx: true,
errMsg: "signature verification failed",
updateTx: func(txBuilder client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
updateTx: func(_ client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
gasAmt := sdk.NewCoins(sdk.NewCoin("ukava", sdkmath.NewInt(20)))

pc, err := etherminttypes.ParseChainID(ChainID)
suite.Require().NoError(err)
ethChainId := pc.Int64()
ethChainID := pc.Int64()

// Domain and types are **not** included in the tx data.
// Both signature creation on client & verification in ante
// should match to produce a matching signature hash.
domain := apitypes.TypedDataDomain{
Name: "Kava Cosmos",
Version: "1.0.0",
ChainId: math.NewHexOrDecimal256(ethChainId),
ChainId: math.NewHexOrDecimal256(ethChainID),

Salt: "",
// Original value with string type instead of address.
Expand Down Expand Up @@ -762,17 +780,17 @@ func (suite *EIP712TestSuite) TestEIP712Tx() {
usdxToMintAmt: 90,
failCheckTx: true,
errMsg: "signature verification failed",
updateTx: func(txBuilder client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
updateTx: func(_ client.TxBuilder, msgs []sdk.Msg) client.TxBuilder {
gasAmt := sdk.NewCoins(sdk.NewCoin("ukava", sdkmath.NewInt(20)))

pc, err := etherminttypes.ParseChainID(ChainID)
suite.Require().NoError(err)
ethChainId := pc.Int64()
ethChainID := pc.Int64()

domain := apitypes.TypedDataDomain{
Name: "Kava Cosmos",
Version: "1.0.0",
ChainId: math.NewHexOrDecimal256(ethChainId),
ChainId: math.NewHexOrDecimal256(ethChainID),

Salt: "",
// Address type
Expand Down

0 comments on commit 226c3d7

Please sign in to comment.