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

feat(v2.11): feemarket #262

Open
wants to merge 34 commits into
base: release/v2.11
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
28786aa
added feemarket, wip build error
freeelancer Jan 8, 2024
6603bbd
use feemarket of go1.20
freeelancer Jan 9, 2024
c9dfa77
use feemarket of go1.20
freeelancer Jan 9, 2024
4d0ca46
set order for beginblock endblock initgenesis
freeelancer Jan 9, 2024
4e81383
fixed go mod
freeelancer Jan 9, 2024
7da94e2
fixed go mod with new version of feemarket
freeelancer Jan 9, 2024
d912243
adjusted gas
freeelancer Jan 15, 2024
ac2d005
wip: debug alliance test
emidev98 Jan 15, 2024
f4711ac
changed test file back to 0.025uluna gas price
freeelancer Jan 16, 2024
73d5b7c
feat: add bond denom into feemarket genesis state
javiersuweijie Jan 16, 2024
1cb4039
added feemarket params genesis
freeelancer Jan 16, 2024
b27b028
updated gas price for lcd connection
freeelancer Jan 17, 2024
4e5ffc2
removed fee specified for transaction
freeelancer Jan 17, 2024
0c5b7fc
updated feemarket test
freeelancer Jan 17, 2024
9d1eee6
update feemarket
freeelancer Jan 19, 2024
a47050c
removed fee for gov test
freeelancer Jan 21, 2024
4abf956
update feemarket.test
freeelancer Jan 24, 2024
b37b707
update feemarket test
freeelancer Jan 24, 2024
5630105
updated feemarket test
freeelancer Jan 26, 2024
e9c51e1
use latest feemarket
freeelancer Jan 30, 2024
fc627c4
added test scripts
freeelancer Jan 30, 2024
26dd127
updated to work with latest feemarket api
freeelancer Feb 1, 2024
491c4bc
set block utilization for init-one-chain
freeelancer Feb 5, 2024
6fc9d94
removed try catch from alliance test
freeelancer Feb 6, 2024
0cdde23
update to new feemarket protos
freeelancer Feb 6, 2024
3f533d7
updated gasprice test
freeelancer Feb 6, 2024
d64e951
changed dynamic fee testing to be non concurrent
freeelancer Feb 7, 2024
2e7671e
wip: feemarket tests
emidev98 Feb 13, 2024
e76e18f
tests: adjust integration tests
emidev98 Feb 14, 2024
f8c27e7
ante to fallback on deductfeedecorator
freeelancer Feb 15, 2024
8c304e9
added MsgRemoveFeeDenomParam tests
freeelancer Feb 15, 2024
2a8cc5a
updated to use feather.js 2.1.0-beta.2
freeelancer Feb 15, 2024
3694ea0
Merge branch 'release/v2.10' of https://github.com/terra-money/core i…
emidev98 Feb 29, 2024
41eaa7b
Merge branch 'feat/v2.10/feemarket' of https://github.com/terra-money…
emidev98 Feb 29, 2024
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
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
.idea
*.code-workspace


# Build
bin
build
Expand All @@ -29,6 +28,7 @@ client/lcd/keys/*
client/docs/statik/statik.go
remote/ansible/testnets
mytestnet
data/*

# Testing
coverage.txt
Expand Down Expand Up @@ -58,4 +58,4 @@ scripts/tests/ibc-hooks/counter/target
scripts/tests/vesting-accounts/.vesting-periods.json
node_modules
test-data
chain-upgrade-data
chain-upgrade-data
27 changes: 19 additions & 8 deletions app/ante/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package ante
import (
ibcante "github.com/cosmos/ibc-go/v7/modules/core/ante"
ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper"
feesharekeeper "github.com/terra-money/core/v2/x/feeshare/keeper"

errorsmod "cosmossdk.io/errors"
"github.com/cosmos/cosmos-sdk/client"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
Expand All @@ -14,6 +14,8 @@ import (

wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
wasmTypes "github.com/CosmWasm/wasmd/x/wasm/types"

feemarketante "github.com/skip-mev/feemarket/x/feemarket/ante"
)

// HandlerOptions extends the SDK's AnteHandler options by requiring the IBC
Expand All @@ -22,8 +24,8 @@ type HandlerOptions struct {
ante.HandlerOptions

IBCkeeper *ibckeeper.Keeper
FeeShareKeeper feesharekeeper.Keeper
BankKeeper bankKeeper.Keeper
FeeMarketKeeper feemarketante.FeeMarketKeeper
TxCounterStoreKey storetypes.StoreKey
WasmConfig wasmTypes.WasmConfig
TxConfig client.TxConfig
Expand All @@ -34,15 +36,19 @@ type HandlerOptions struct {
// signer.
func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
if options.AccountKeeper == nil {
return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "account keeper is required for ante builder")
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "account keeper is required for ante builder")
}

if options.BankKeeper == nil {
return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for ante builder")
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "bank keeper is required for ante builder")
}

if options.SignModeHandler == nil {
return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder")
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder")
}

if options.FeeMarketKeeper == nil {
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "feemarket keeper is required for ante builder")
}

sigGasConsumer := options.SigGasConsumer
Expand All @@ -59,9 +65,14 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
ante.NewTxTimeoutHeightDecorator(),
ante.NewValidateMemoDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker),
// SetPubKeyDecorator must be called before all signature verification decorators
ante.NewSetPubKeyDecorator(options.AccountKeeper),
feemarketante.NewFeeMarketCheckDecorator( // fee market check replaces fee deduct decorator
options.FeeMarketKeeper,
options.AccountKeeper,
options.BankKeeper,
options.FeegrantKeeper,
options.TxFeeChecker,
), // fees are deducted in the fee market deduct post handler
ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators
ante.NewValidateSigCountDecorator(options.AccountKeeper),
ante.NewSigGasConsumeDecorator(options.AccountKeeper, sigGasConsumer),
ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
Expand Down
16 changes: 11 additions & 5 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,22 +259,28 @@ func NewTerraApp(
SigGasConsumer: cosmosante.DefaultSigVerificationGasConsumer,
},
BankKeeper: app.Keepers.BankKeeper,
FeeShareKeeper: app.Keepers.FeeShareKeeper,
IBCkeeper: app.Keepers.IBCKeeper,
TxCounterStoreKey: app.keys[wasmtypes.StoreKey],
WasmConfig: wasmConfig,
FeeMarketKeeper: app.Keepers.FeeMarketKeeper,
},
)
if err != nil {
panic(err)
}
postHandler := post.NewPostHandler(
postHandler, err := post.NewPostHandler(
post.HandlerOptions{
FeeShareKeeper: app.Keepers.FeeShareKeeper,
BankKeeper: app.Keepers.BankKeeper,
WasmKeeper: app.Keepers.WasmKeeper,
FeeShareKeeper: app.Keepers.FeeShareKeeper,
BankKeeper: app.Keepers.BankKeeper,
WasmKeeper: app.Keepers.WasmKeeper,
AccountKeeper: app.Keepers.AccountKeeper,
FeeMarketKeeper: app.Keepers.FeeMarketKeeper,
FeeGrantKeeper: app.Keepers.FeeGrantKeeper,
},
)
if err != nil {
panic(err)
}

// initialize BaseApp
app.SetInitChainer(app.InitChainer)
Expand Down
31 changes: 31 additions & 0 deletions app/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package app
import (
"encoding/json"

"cosmossdk.io/math"
feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types"

icqtypes "github.com/cosmos/ibc-apps/modules/async-icq/v7/types"
icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types"
icagenesistypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/genesis/types"
Expand Down Expand Up @@ -79,6 +82,34 @@ func (genState GenesisState) SetDefaultTerraConfig(cdc codec.JSONCodec) GenesisS
}
genState[icatypes.ModuleName] = cdc.MustMarshalJSON(&icaGenState)

var feemarketGenState feemarkettypes.GenesisState
cdc.MustUnmarshalJSON(genState[feemarkettypes.ModuleName], &feemarketGenState)
feemarketGenState.State = feemarkettypes.State{
LearningRate: math.LegacyMustNewDecFromStr("0.125"),
Window: []uint64{0},
Index: 0,
}
feemarketGenState.Params = feemarkettypes.NewParams(
feemarkettypes.DefaultWindowSize,
feemarkettypes.DefaultAlpha,
feemarkettypes.DefaultBeta,
feemarkettypes.DefaultTheta,
feemarkettypes.DefaultTargetBlockUtilization,
feemarkettypes.DefaultMaxBlockUtilization,
feemarkettypes.DefaultMinLearningRate,
feemarkettypes.DefaultMaxLearningRate,
true,
config.BondDenom,
)
feemarketGenState.FeeDenomParams = []feemarkettypes.FeeDenomParam{
feemarkettypes.NewFeeDenomParam(
config.BondDenom,
math.LegacyMustNewDecFromStr("0.0015"),
math.LegacyMustNewDecFromStr("0.0015"),
),
}
genState[feemarkettypes.ModuleName] = cdc.MustMarshalJSON(&feemarketGenState)

return genState
}

Expand Down
13 changes: 13 additions & 0 deletions app/keepers/keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@ import (
feesharekeeper "github.com/terra-money/core/v2/x/feeshare/keeper"
feesharetypes "github.com/terra-money/core/v2/x/feeshare/types"

feemarketkeeper "github.com/skip-mev/feemarket/x/feemarket/keeper"
feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types"

terraappconfig "github.com/terra-money/core/v2/app/config"
// unnamed import of statik for swagger UI support
_ "github.com/terra-money/core/v2/client/docs/statik"
Expand Down Expand Up @@ -164,6 +167,9 @@ type TerraAppKeepers struct {
Ics20WasmHooks *ibchooks.WasmHooks
HooksICS4Wrapper ibchooks.ICS4Middleware

// Fee market
FeeMarketKeeper *feemarketkeeper.Keeper

// make scoped keepers public for test purposes
ScopedIBCKeeper capabilitykeeper.ScopedKeeper
ScopedTransferKeeper capabilitykeeper.ScopedKeeper
Expand Down Expand Up @@ -519,6 +525,13 @@ func NewTerraAppKeepers(
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)

keepers.FeeMarketKeeper = feemarketkeeper.NewKeeper(
appCodec,
keys[feemarkettypes.StoreKey],
keepers.AccountKeeper,
govModuleAddress,
)

// Set legacy router for backwards compatibility with gov v1beta1
govKeeper.SetLegacyRouter(govRouter)
keepers.GovKeeper = *govKeeper.SetHooks(
Expand Down
3 changes: 3 additions & 0 deletions app/keepers/keys.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ import (

ibchookstypes "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7/types"

feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types"

wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types"

tokenfactorytypes "github.com/terra-money/core/v2/x/tokenfactory/types"
Expand All @@ -61,6 +63,7 @@ func (keepers *TerraAppKeepers) GenerateKeys() {
consensusparamtypes.StoreKey, tokenfactorytypes.StoreKey, wasmtypes.StoreKey,
ibcfeetypes.StoreKey, ibchookstypes.StoreKey, crisistypes.StoreKey,
alliancetypes.StoreKey, feesharetypes.StoreKey, icqtypes.StoreKey,
feemarkettypes.StoreKey,
)

keepers.tkeys = sdk.NewTransientStoreKeys(paramstypes.TStoreKey)
Expand Down
8 changes: 8 additions & 0 deletions app/modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ import (
ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported"
terrappsparams "github.com/terra-money/core/v2/app/params"

"github.com/skip-mev/feemarket/x/feemarket"
feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types"

"github.com/cosmos/cosmos-sdk/x/feegrant"
)

Expand Down Expand Up @@ -117,6 +120,7 @@ var ModuleBasics = module.NewBasicManager(
alliance.AppModuleBasic{},
feeshare.AppModuleBasic{},
icq.AppModuleBasic{},
feemarket.AppModuleBasic{},
)

// NOTE: Any module instantiated in the module manager that is later modified
Expand Down Expand Up @@ -154,6 +158,7 @@ func appModules(app *TerraApp, encodingConfig terrappsparams.EncodingConfig, ski
alliance.NewAppModule(app.appCodec, app.Keepers.AllianceKeeper, app.Keepers.StakingKeeper, app.Keepers.AccountKeeper, app.Keepers.BankKeeper, app.interfaceRegistry, app.GetSubspace(alliancetypes.ModuleName)),
feeshare.NewAppModule(app.Keepers.FeeShareKeeper, app.Keepers.AccountKeeper, app.GetSubspace(feesharetypes.ModuleName)),
icq.NewAppModule(app.Keepers.ICQKeeper),
feemarket.NewAppModule(app.appCodec, *app.Keepers.FeeMarketKeeper),
}
}

Expand Down Expand Up @@ -191,6 +196,7 @@ var initGenesisOrder = []string{
feesharetypes.ModuleName,
consensusparamtypes.ModuleName,
icqtypes.ModuleName,
feemarkettypes.ModuleName,
}

var beginBlockersOrder = []string{
Expand Down Expand Up @@ -223,6 +229,7 @@ var beginBlockersOrder = []string{
feesharetypes.ModuleName,
consensusparamtypes.ModuleName,
icqtypes.ModuleName,
feemarkettypes.ModuleName,
}

var endBlockerOrder = []string{
Expand Down Expand Up @@ -255,4 +262,5 @@ var endBlockerOrder = []string{
feesharetypes.ModuleName,
consensusparamtypes.ModuleName,
icqtypes.ModuleName,
feemarkettypes.ModuleName,
}
33 changes: 29 additions & 4 deletions app/post/post.go
Original file line number Diff line number Diff line change
@@ -1,25 +1,50 @@
package post

import (
errorsmod "cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"

feemarketpost "github.com/skip-mev/feemarket/x/feemarket/post"
feesharepost "github.com/terra-money/core/v2/x/feeshare/post"
customwasmkeeper "github.com/terra-money/core/v2/x/wasm/keeper"
wasmpost "github.com/terra-money/core/v2/x/wasm/post"

sdk "github.com/cosmos/cosmos-sdk/types"
)

type HandlerOptions struct {
FeeShareKeeper feesharepost.FeeShareKeeper
BankKeeper feesharepost.BankKeeper
WasmKeeper customwasmkeeper.Keeper

AccountKeeper feemarketpost.AccountKeeper
FeeMarketKeeper feemarketpost.FeeMarketKeeper
FeeGrantKeeper feemarketpost.FeeGrantKeeper
}

func NewPostHandler(options HandlerOptions) sdk.PostHandler {
func NewPostHandler(options HandlerOptions) (sdk.PostHandler, error) {

if options.AccountKeeper == nil {
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "account keeper is required for post builder")
}

if options.BankKeeper == nil {
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "bank keeper is required for post builder")
}

if options.FeeMarketKeeper == nil {
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "feemarket keeper is required for post builder")
}

postDecorators := []sdk.PostDecorator{
feemarketpost.NewFeeMarketDeductDecorator(
options.AccountKeeper,
options.BankKeeper,
options.FeeGrantKeeper,
options.FeeMarketKeeper,
),
feesharepost.NewFeeSharePayoutDecorator(options.FeeShareKeeper, options.BankKeeper, options.WasmKeeper),
wasmpost.NewWasmdDecorator(options.WasmKeeper),
}

return sdk.ChainPostDecorators(postDecorators...)
return sdk.ChainPostDecorators(postDecorators...), nil
}
Loading
Loading