Skip to content

Commit

Permalink
chore(eip712): adding utility to print eip712 structs (#1718)
Browse files Browse the repository at this point in the history
* adding FulfillOrderAuthorization

* increased fee for readability

* clean

* added msgcreateValidator
  • Loading branch information
mtsitrin authored Jan 27, 2025
1 parent 6b68cb0 commit b85aefa
Showing 1 changed file with 71 additions and 32 deletions.
103 changes: 71 additions & 32 deletions app/ante/eip712_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,20 @@ import (

"cosmossdk.io/math"
"github.com/cometbft/cometbft/libs/rand"
"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx"
authtx "github.com/cosmos/cosmos-sdk/x/auth/tx"
authz "github.com/cosmos/cosmos-sdk/x/authz"
bankutil "github.com/cosmos/cosmos-sdk/x/bank/testutil"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
feegrant "github.com/cosmos/cosmos-sdk/x/feegrant"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"

"github.com/dymensionxyz/dymension/v3/app/params"
eibctypes "github.com/dymensionxyz/dymension/v3/x/eibc/types"
rollapptypes "github.com/dymensionxyz/dymension/v3/x/rollapp/types"
"github.com/ethereum/go-ethereum/signer/core/apitypes"
"github.com/evmos/ethermint/crypto/ethsecp256k1"
Expand All @@ -30,24 +34,51 @@ func (s *AnteTestSuite) getMsgSend(from sdk.AccAddress) sdk.Msg {
return banktypes.NewMsgSend(from, to, sdk.NewCoins(sdk.NewCoin(params.DisplayDenom, sdk.NewInt(1))))
}

/*
func createIRO() sdk.Msg {
return &irotypes.MsgCreatePlan{
Owner: "",
RollappId: "",
AllocatedAmount: sdk.Int{},
BondingCurve: irotypes.BondingCurve{},
StartTime: time.Time{},
IroPlanDuration: 0,
IncentivePlanParams: irotypes.IncentivePlanParams{},
func (s *AnteTestSuite) getMsgCreateValidator(from sdk.AccAddress) sdk.Msg {
msgCreate, err := stakingtypes.NewMsgCreateValidator(
sdk.ValAddress(from),
ed25519.GenPrivKey().PubKey(),
sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1_000_000_000)),
stakingtypes.NewDescription("moniker", "indentity", "website", "security_contract", "details"),
stakingtypes.NewCommissionRates(sdk.OneDec(), sdk.OneDec(), sdk.OneDec()),
sdk.OneInt(),
)
s.Assert().NoError(err)
return msgCreate
}

func (s *AnteTestSuite) getMsgGrantEIBC(from sdk.AccAddress) *authz.MsgGrant {
privkey2, _ := ethsecp256k1.GenerateKey()
to := sdk.AccAddress(privkey2.PubKey().Address())

crit := eibctypes.NewRollappCriteria(
"rollappID",
[]string{"denom"},
sdk.DecProto{Dec: sdk.NewDec(1)},
sdk.Coins{sdk.NewCoin("denom", sdk.NewInt(1))},
sdk.Coins{sdk.NewCoin("denom", sdk.NewInt(1))},
sdk.DecProto{Dec: sdk.NewDec(1)},
true,
)
expDate := time.Now().Add(1 * time.Hour)
msg, err := authz.NewMsgGrant(
from,
to,
eibctypes.NewFulfillOrderAuthorization([]*eibctypes.RollappCriteria{crit}),
&expDate,
)
if err != nil {
panic(err)
}
return msg
}
*/

func (s *AnteTestSuite) getMsgGrant(msgTypeUrl string, from sdk.AccAddress) *authz.MsgGrant {
func (s *AnteTestSuite) getMsgGrant(from sdk.AccAddress) *authz.MsgGrant {
privkey2, _ := ethsecp256k1.GenerateKey()
to := sdk.AccAddress(privkey2.PubKey().Address())

// msgTypeUrl := sdk.MsgTypeURL(&authz.MsgExec{})
msgTypeUrl := "/dymensionxyz.dymension.gamm.poolmodels.balancer.v1beta1.MsgCreateBalancerPool"
expDate := time.Now().Add(1 * time.Hour)
msg, err := authz.NewMsgGrant(
from,
Expand Down Expand Up @@ -138,27 +169,39 @@ func (s *AnteTestSuite) TestEIP712() {
s.Require().Nil(err)

from := acc

msgs := []sdk.Msg{
s.getMsgSend(from),
s.getMsgCreateRollapp(from.String(), false, nil), // native denom
s.getMsgCreateRollapp(from.String(), true, nil), // tokenless
s.getMsgGrant("/dymensionxyz.dymension.gamm.poolmodels.balancer.v1beta1.MsgCreateBalancerPool", from),
s.getMsgGrantAllowance(from),
s.getMsgSubmitProposal(from),
testCases := []struct {
description string
msg sdk.Msg
output bool
}{
{"MsgSend", s.getMsgSend(from), false},
{"MsgCreateRollapp (native denom)", s.getMsgCreateRollapp(from.String(), false, nil), false},
{"MsgCreateRollapp (tokenless)", s.getMsgCreateRollapp(from.String(), true, nil), false},
{"MsgGrant", s.getMsgGrant(from), false},
{"MsgGrantAllowance", s.getMsgGrantAllowance(from), false},
{"MsgSubmitProposal", s.getMsgSubmitProposal(from), false},
{"MsgGrantEIBC", s.getMsgGrantEIBC(from), false},
{"MsgCreateValidator", s.getMsgCreateValidator(from), false},
}

for _, msg := range msgs {
toTest := []sdk.Msg{msg}
err = s.DumpEIP712TypedData(from, toTest)
s.Require().NoError(err)
for _, tc := range testCases {
s.Run(tc.description, func() {
data, err := s.DumpEIP712TypedData(from, []sdk.Msg{tc.msg})
s.Require().NoError(err)

// Dump the json string to t.log
if tc.output {
str, err := json.MarshalIndent(data, "", " ") // Indent with 2 spaces
s.Assert().NoError(err)
s.T().Log(string(str))
}
})
}
}

// FIXME: should iterate over all messages
func (suite *AnteTestSuite) DumpEIP712TypedData(from sdk.AccAddress, msgs []sdk.Msg) error {
func (suite *AnteTestSuite) DumpEIP712TypedData(from sdk.AccAddress, msgs []sdk.Msg) (apitypes.TypedData, error) {
txConfig := suite.clientCtx.TxConfig
coinAmount := sdk.NewCoin(params.DisplayDenom, sdk.NewInt(20))
coinAmount := sdk.NewCoin(params.BaseDenom, sdk.NewInt(20).MulRaw(1e18))
fees := sdk.NewCoins(coinAmount)

pc, err := ethermint.ParseChainID(suite.ctx.ChainID())
Expand Down Expand Up @@ -206,9 +249,5 @@ func (suite *AnteTestSuite) DumpEIP712TypedData(from sdk.AccAddress, msgs []sdk.
_, _, err = apitypes.TypedDataAndHash(data)
suite.Require().NoError(err)

// Dump the json string to t.log
str, err := json.Marshal(data)
suite.Assert().NoError(err)
suite.T().Logf("typed data: %s", string(str))
return nil
return data, nil
}

0 comments on commit b85aefa

Please sign in to comment.