Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

move feegrant ante to auth ante #8682

Merged
merged 39 commits into from
Mar 23, 2021
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
d7b83ba
move feegrant ante to auth ante
atheeshp Feb 22, 2021
967dd28
Merge branch 'master' into atheesh/move_feegrant_ante
atheeshp Feb 24, 2021
d692f10
Merge branch 'master' into atheesh/move_feegrant_ante
atheeshp Feb 25, 2021
b229812
update ante builder
atheeshp Feb 26, 2021
7eb8897
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Feb 26, 2021
f3874a7
Merge branch 'atheesh/move_feegrant_ante' of github.com:cosmos/cosmos…
atheeshp Feb 26, 2021
c8b38fa
remove commented code
atheeshp Feb 26, 2021
d1d74b8
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Mar 3, 2021
8bd1cfe
review changes
atheeshp Mar 5, 2021
b282167
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Mar 5, 2021
5e2c190
fix lint
atheeshp Mar 5, 2021
3c6c8a1
review changes
atheeshp Mar 5, 2021
3d633df
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Mar 5, 2021
f29391f
review changes
atheeshp Mar 8, 2021
81bfce6
review changes
atheeshp Mar 8, 2021
a652ace
review changes
atheeshp Mar 8, 2021
6fa68e3
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Mar 8, 2021
8fdf57b
fix ante builder
atheeshp Mar 8, 2021
a1e986c
Merge branch 'master' into atheesh/move_feegrant_ante
atheeshp Mar 9, 2021
87f2ecd
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Mar 9, 2021
88b38e5
review changes
atheeshp Mar 9, 2021
6fd08a2
Merge branch 'master' into atheesh/move_feegrant_ante
atheeshp Mar 12, 2021
2355779
Merge branch 'master' into atheesh/move_feegrant_ante
atheeshp Mar 12, 2021
3d72ad3
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Mar 18, 2021
b5404aa
update ante builder with options struct
atheeshp Mar 18, 2021
587b681
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Mar 18, 2021
4343835
Merge branch 'atheesh/move_feegrant_ante' of github.com:cosmos/cosmos…
atheeshp Mar 18, 2021
576a93a
review changes
atheeshp Mar 18, 2021
0e47dcf
Merge branch 'master' into atheesh/move_feegrant_ante
atheeshp Mar 18, 2021
6ac8011
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Mar 19, 2021
943190c
review changes
atheeshp Mar 19, 2021
3e4649c
Merge branch 'atheesh/move_feegrant_ante' of github.com:cosmos/cosmos…
atheeshp Mar 19, 2021
bb91e5b
Merge branch 'master' into atheesh/move_feegrant_ante
atheeshp Mar 20, 2021
7c08eba
Merge branch 'master' of github.com:cosmos/cosmos-sdk into atheesh/mo…
atheeshp Mar 22, 2021
e852d05
add changelog
atheeshp Mar 22, 2021
7ca23a6
Merge branch 'atheesh/move_feegrant_ante' of github.com:cosmos/cosmos…
atheeshp Mar 22, 2021
dcfdf08
Merge branch 'master' into atheesh/move_feegrant_ante
amaury1093 Mar 22, 2021
4a6199f
Merge branch 'master' into atheesh/move_feegrant_ante
aaronc Mar 22, 2021
148294a
Merge branch 'master' into atheesh/move_feegrant_ante
atheeshp Mar 23, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions simapp/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ import (
evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper"
evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types"
feegrant "github.com/cosmos/cosmos-sdk/x/feegrant"
feegrantante "github.com/cosmos/cosmos-sdk/x/feegrant/ante"
feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
feegranttypes "github.com/cosmos/cosmos-sdk/x/feegrant/types"
"github.com/cosmos/cosmos-sdk/x/genutil"
Expand Down Expand Up @@ -435,8 +434,8 @@ func NewSimApp(
app.SetInitChainer(app.InitChainer)
app.SetBeginBlocker(app.BeginBlocker)
app.SetAnteHandler(
feegrantante.NewAnteHandler(
app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, ante.DefaultSigVerificationGasConsumer,
ante.NewAnteHandler(
app.AccountKeeper, app.BankKeeper, &app.FeeGrantKeeper, ante.DefaultSigVerificationGasConsumer,
encodingConfig.TxConfig.SignModeHandler(),
),
)
Expand Down
21 changes: 17 additions & 4 deletions x/auth/ante/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,43 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/auth/signing"
"github.com/cosmos/cosmos-sdk/x/auth/types"
feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
)

// NewAnteHandler returns an AnteHandler that checks and increments sequence
// numbers, checks signatures & account numbers, and deducts fees from the first
// signer.
func NewAnteHandler(
ak AccountKeeper, bankKeeper types.BankKeeper,
ak AccountKeeper, bankKeeper types.BankKeeper, feeGrantKeeper *feegrantkeeper.Keeper,
amaury1093 marked this conversation as resolved.
Show resolved Hide resolved
sigGasConsumer SignatureVerificationGasConsumer,
signModeHandler signing.SignModeHandler,
) sdk.AnteHandler {
return sdk.ChainAnteDecorators(
anteDecorators := []sdk.AnteDecorator{
NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
NewRejectExtensionOptionsDecorator(),
NewMempoolFeeDecorator(),
NewValidateBasicDecorator(),
TxTimeoutHeightDecorator{},
NewValidateMemoDecorator(ak),
NewConsumeGasForTxSizeDecorator(ak),
NewRejectFeeGranterDecorator(),
}

if feeGrantKeeper == nil {
amaury1093 marked this conversation as resolved.
Show resolved Hide resolved
anteDecorators = append(
anteDecorators,
NewRejectFeeGranterDecorator(),
)
}

anteDecorators = append(
anteDecorators,
NewDeductGrantedFeeDecorator(ak, bankKeeper, feeGrantKeeper),
atheeshp marked this conversation as resolved.
Show resolved Hide resolved
NewSetPubKeyDecorator(ak), // SetPubKeyDecorator must be called before all signature verification decorators
NewValidateSigCountDecorator(ak),
NewDeductFeeDecorator(ak, bankKeeper),
NewSigGasConsumeDecorator(ak, sigGasConsumer),
NewSigVerificationDecorator(ak, signModeHandler),
NewIncrementSequenceDecorator(ak),
)

return sdk.ChainAnteDecorators(anteDecorators...)
}
2 changes: 1 addition & 1 deletion x/auth/ante/ante_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1009,7 +1009,7 @@ func (suite *AnteTestSuite) TestCustomSignatureVerificationGasConsumer() {
suite.SetupTest(false) // setup

// setup an ante handler that only accepts PubKeyEd25519
suite.anteHandler = ante.NewAnteHandler(suite.app.AccountKeeper, suite.app.BankKeeper, func(meter sdk.GasMeter, sig signing.SignatureV2, params types.Params) error {
suite.anteHandler = ante.NewAnteHandler(suite.app.AccountKeeper, suite.app.BankKeeper, &suite.app.FeeGrantKeeper, func(meter sdk.GasMeter, sig signing.SignatureV2, params types.Params) error {
switch pubkey := sig.PubKey.(type) {
case *ed25519.PubKey:
meter.ConsumeGas(params.SigVerifyCostED25519, "ante verify: ed25519")
Expand Down
2 changes: 2 additions & 0 deletions x/auth/ante/expected_keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ type AccountKeeper interface {
GetAccount(ctx sdk.Context, addr sdk.AccAddress) types.AccountI
SetAccount(ctx sdk.Context, acc types.AccountI)
GetModuleAddress(moduleName string) sdk.AccAddress
GetModuleAccount(ctx sdk.Context, moduleName string) types.ModuleAccountI
NewAccountWithAddress(ctx sdk.Context, addr sdk.AccAddress) types.AccountI
amaury1093 marked this conversation as resolved.
Show resolved Hide resolved
}
9 changes: 4 additions & 5 deletions x/feegrant/ante/fee.go → x/auth/ante/feegrant_ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@ import (

sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
authante "github.com/cosmos/cosmos-sdk/x/auth/ante"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
"github.com/cosmos/cosmos-sdk/x/feegrant/types"
)

Expand All @@ -17,11 +16,11 @@ import (
// CONTRACT: Tx must implement GrantedFeeTx interface to use DeductGrantedFeeDecorator
type DeductGrantedFeeDecorator struct {
ak types.AccountKeeper
k keeper.Keeper
k *feegrantkeeper.Keeper
bk types.BankKeeper
}

func NewDeductGrantedFeeDecorator(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) DeductGrantedFeeDecorator {
func NewDeductGrantedFeeDecorator(ak types.AccountKeeper, bk types.BankKeeper, k *feegrantkeeper.Keeper) DeductGrantedFeeDecorator {
return DeductGrantedFeeDecorator{
ak: ak,
k: k,
Expand Down Expand Up @@ -73,7 +72,7 @@ func (d DeductGrantedFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simula
}

// deduct fee if non-zero
err = authante.DeductFees(d.bk, ctx, deductFeesFromAcc, fee)
err = DeductFees(d.bk, ctx, deductFeesFromAcc, fee)
if err != nil {
return ctx, err
}
Expand Down
48 changes: 2 additions & 46 deletions x/feegrant/ante/fee_test.go → x/auth/ante/feegrant_ante_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ import (
"testing"
"time"

"github.com/stretchr/testify/suite"
"github.com/tendermint/tendermint/crypto"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"

"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
Expand All @@ -19,42 +17,13 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/simulation"
"github.com/cosmos/cosmos-sdk/types/tx/signing"
authante "github.com/cosmos/cosmos-sdk/x/auth/ante"
"github.com/cosmos/cosmos-sdk/x/auth/ante"
authsign "github.com/cosmos/cosmos-sdk/x/auth/signing"
"github.com/cosmos/cosmos-sdk/x/auth/tx"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/feegrant/ante"
"github.com/cosmos/cosmos-sdk/x/feegrant/types"
)

// AnteTestSuite is a test suite to be used with ante handler tests.
type AnteTestSuite struct {
suite.Suite

app *simapp.SimApp
anteHandler sdk.AnteHandler
ctx sdk.Context
clientCtx client.Context
txBuilder client.TxBuilder
}

// SetupTest setups a new test, with new app, context, and anteHandler.
func (suite *AnteTestSuite) SetupTest(isCheckTx bool) {
suite.app, suite.ctx = createTestApp(isCheckTx)
suite.ctx = suite.ctx.WithBlockHeight(1)

// Set up TxConfig.
encodingConfig := simapp.MakeTestEncodingConfig()
// We're using TestMsg encoding in some tests, so register it here.
encodingConfig.Amino.RegisterConcrete(&testdata.TestMsg{}, "testdata.TestMsg", nil)
testdata.RegisterInterfaces(encodingConfig.InterfaceRegistry)

suite.clientCtx = client.Context{}.
WithTxConfig(encodingConfig.TxConfig)

suite.anteHandler = ante.NewAnteHandler(suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.FeeGrantKeeper, authante.DefaultSigVerificationGasConsumer, encodingConfig.TxConfig.SignModeHandler())
}

func (suite *AnteTestSuite) TestDeductFeesNoDelegation() {
suite.SetupTest(false)
// setup
Expand All @@ -63,7 +32,7 @@ func (suite *AnteTestSuite) TestDeductFeesNoDelegation() {
protoTxCfg := tx.NewTxConfig(codec.NewProtoCodec(app.InterfaceRegistry()), tx.DefaultSignModes)

// this just tests our handler
dfd := ante.NewDeductGrantedFeeDecorator(app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper)
dfd := ante.NewDeductGrantedFeeDecorator(app.AccountKeeper, app.BankKeeper, &app.FeeGrantKeeper)
ourAnteHandler := sdk.ChainAnteDecorators(dfd)

// this tests the whole stack
Expand Down Expand Up @@ -205,15 +174,6 @@ func (suite *AnteTestSuite) TestDeductFeesNoDelegation() {
}
}

// returns context and app with params set on account keeper
func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) {
app := simapp.Setup(isCheckTx)
ctx := app.BaseApp.NewContext(isCheckTx, tmproto.Header{})
app.AccountKeeper.SetParams(ctx, authtypes.DefaultParams())

return app, ctx
}

// don't consume any gas
func SigGasNoConsumer(meter sdk.GasMeter, sig []byte, pubkey crypto.PubKey, params authtypes.Params) error {
return nil
Expand Down Expand Up @@ -280,7 +240,3 @@ func genTxWithFeeGranter(gen client.TxConfig, msgs []sdk.Msg, feeAmt sdk.Coins,

return tx.GetTx(), nil
}

func TestAnteTestSuite(t *testing.T) {
suite.Run(t, new(AnteTestSuite))
}
2 changes: 1 addition & 1 deletion x/auth/ante/sigverify_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ func (suite *AnteTestSuite) TestSigVerification_ExplicitAmino() {
suite.clientCtx = client.Context{}.
WithTxConfig(txConfig)

suite.anteHandler = ante.NewAnteHandler(suite.app.AccountKeeper, suite.app.BankKeeper, ante.DefaultSigVerificationGasConsumer, txConfig.SignModeHandler())
suite.anteHandler = ante.NewAnteHandler(suite.app.AccountKeeper, suite.app.BankKeeper, &suite.app.FeeGrantKeeper, ante.DefaultSigVerificationGasConsumer, txConfig.SignModeHandler())

suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder()

Expand Down
2 changes: 1 addition & 1 deletion x/auth/ante/testutil_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func (suite *AnteTestSuite) SetupTest(isCheckTx bool) {
suite.clientCtx = client.Context{}.
WithTxConfig(encodingConfig.TxConfig)

suite.anteHandler = ante.NewAnteHandler(suite.app.AccountKeeper, suite.app.BankKeeper, ante.DefaultSigVerificationGasConsumer, encodingConfig.TxConfig.SignModeHandler())
suite.anteHandler = ante.NewAnteHandler(suite.app.AccountKeeper, suite.app.BankKeeper, &suite.app.FeeGrantKeeper, ante.DefaultSigVerificationGasConsumer, encodingConfig.TxConfig.SignModeHandler())
}

// CreateTestAccounts creates `numAccs` accounts, and return all relevant
Expand Down
1 change: 1 addition & 0 deletions x/auth/types/expected_keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ import (

// BankKeeper defines the contract needed for supply related APIs (noalias)
type BankKeeper interface {
SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
atheeshp marked this conversation as resolved.
Show resolved Hide resolved
SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error
}
35 changes: 0 additions & 35 deletions x/feegrant/ante/ante.go

This file was deleted.