imp(feemarket): update BaseFee based on GasWanted (#1105)

* add gasWanted transient store keys

* add gasWanted transient store keeper functions

* add gasWanted transient store tracker

* add comment

* remove unncesary comment

* remove unnecesary function

* fix tests

* fix bad comment

* remove unnecesary comment

* update comment

* update changelog

* Update CHANGELOG.md

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* add GasWantedDecorator

* remove unnecesary comments

* gasWanted decorator test

* fix tests

* fix tests and build

* fix lint

* updated end block event

* Update app/ante/fee_market.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* fix undeclared variable

* Update app/ante/fee_market_test.go

* remove unnecesary line

* migrate MinGasMultiplier to FeeMarket module

* set limited gas wanted

* remove old newKeeper param

* update proto comment

* fix test

* update comments

* Update x/feemarket/keeper/abci.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* address comments from review

* tidy

* tests

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
This commit is contained in:
crypto-facs
2022-06-05 09:22:33 +00:00
committed by GitHub
co-authored by Federico Kunze Küllmer
parent 8155e1f319
commit 620f6a6770
46 changed files with 570 additions and 521 deletions
+7 -1
View File
@@ -287,7 +287,7 @@ func (k *Keeper) GetBalance(ctx sdk.Context, addr common.Address) *big.Int {
return coin.Amount.BigInt()
}
// BaseFee returns current base fee, return values:
// GetBaseFee returns current base fee, return values:
// - `nil`: london hardfork not enabled.
// - `0`: london hardfork enabled but feemarket is not enabled.
// - `n`: both london hardfork and feemarket are enabled.
@@ -303,6 +303,12 @@ func (k Keeper) GetBaseFee(ctx sdk.Context, ethCfg *params.ChainConfig) *big.Int
return baseFee
}
// GetMinGasMultiplier returns the MinGasMultiplier param from the fee market module
func (k Keeper) GetMinGasMultiplier(ctx sdk.Context) sdk.Dec {
fmkParmas := k.feeMarketKeeper.GetParams(ctx)
return fmkParmas.MinGasMultiplier
}
// ResetTransientGasUsed reset gas used to prepare for execution of current cosmos tx, called in ante handler.
func (k Keeper) ResetTransientGasUsed(ctx sdk.Context) {
store := ctx.TransientStore(k.transientKey)
-10
View File
@@ -1,10 +1,5 @@
package keeper
import (
sdk "github.com/cosmos/cosmos-sdk/types"
v2 "github.com/tharsis/ethermint/x/evm/migrations/v2"
)
// Migrator is a struct for handling in-place store migrations.
type Migrator struct {
keeper Keeper
@@ -16,8 +11,3 @@ func NewMigrator(keeper Keeper) Migrator {
keeper: keeper,
}
}
// Migrate1to2 migrates the store from consensus version v1 to v2
func (m Migrator) Migrate1to2(ctx sdk.Context) error {
return v2.AddMinGasMultiplierParam(ctx, &m.keeper.paramSpace)
}
+2 -2
View File
@@ -421,9 +421,9 @@ func (k *Keeper) ApplyMessageWithConfig(ctx sdk.Context, msg core.Message, trace
// calculate a minimum amount of gas to be charged to sender if GasLimit
// is considerably higher than GasUsed to stay more aligned with Tendermint gas mechanics
// for more info https://github.com/tharsis/ethermint/issues/1085
// NOTE: MinGasDenominator can not be negative as it is validated on ValidateParams
gasLimit := sdk.NewDec(int64(msg.Gas()))
minimumGasUsed := gasLimit.Mul(cfg.Params.MinGasMultiplier)
minGasMultiplier := k.GetMinGasMultiplier(ctx)
minimumGasUsed := gasLimit.Mul(minGasMultiplier)
gasUsed := sdk.MaxDec(minimumGasUsed, sdk.NewDec(int64(temporaryGasUsed))).TruncateInt().Uint64()
return &types.MsgEthereumTxResponse{
+1 -1
View File
@@ -56,7 +56,7 @@ func (k Keeper) DeductTxCostsFromUserBalance(
var feeAmt *big.Int
feeMktParams := k.feeMarketKeeper.GetParams(ctx)
if london && !feeMktParams.NoBaseFee && txData.TxType() == ethtypes.DynamicFeeTxType {
if london && feeMktParams.IsBaseFeeEnabled(ctx.BlockHeight()) && txData.TxType() == ethtypes.DynamicFeeTxType {
baseFee := k.feeMarketKeeper.GetBaseFee(ctx)
if txData.GetGasFeeCap().Cmp(baseFee) < 0 {
return nil, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "the tx gasfeecap is lower than the tx baseFee: %s (gasfeecap), %s (basefee) ", txData.GetGasFeeCap(), baseFee)
-18
View File
@@ -1,18 +0,0 @@
package v2
import (
sdk "github.com/cosmos/cosmos-sdk/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
"github.com/tharsis/ethermint/x/evm/types"
)
// AddMinGasMultiplierParam updates the module parameter MinGasMultiplier to 0.5
func AddMinGasMultiplierParam(ctx sdk.Context, paramStore *paramtypes.Subspace) error {
if !paramStore.HasKeyTable() {
ps := paramStore.WithKeyTable(types.ParamKeyTable())
paramStore = &ps
}
paramStore.Set(ctx, types.ParamStoreKeyMinGasMultiplier, types.DefaultMinGasMultiplier)
return nil
}
-46
View File
@@ -1,46 +0,0 @@
package v2_test
import (
"fmt"
"github.com/cosmos/cosmos-sdk/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
"github.com/stretchr/testify/require"
"github.com/tharsis/ethermint/app"
"github.com/tharsis/ethermint/encoding"
v2 "github.com/tharsis/ethermint/x/evm/migrations/v2"
"github.com/tharsis/ethermint/x/evm/types"
"testing"
)
func TestAddMinGasMultiplierParam(t *testing.T) {
encCfg := encoding.MakeConfig(app.ModuleBasics)
erc20Key := sdk.NewKVStoreKey(types.StoreKey)
tErc20Key := sdk.NewTransientStoreKey(fmt.Sprintf("%s_test", types.StoreKey))
ctx := testutil.DefaultContext(erc20Key, tErc20Key)
paramStore := paramtypes.NewSubspace(
encCfg.Marshaler, encCfg.Amino, erc20Key, tErc20Key, "erc20",
)
paramStore = paramStore.WithKeyTable(types.ParamKeyTable())
require.True(t, paramStore.HasKeyTable())
// check no param
require.False(t, paramStore.Has(ctx, types.ParamStoreKeyMinGasMultiplier))
// Run migrations
err := v2.AddMinGasMultiplierParam(ctx, &paramStore)
require.NoError(t, err)
// Make sure the params are set
require.True(t, paramStore.Has(ctx, types.ParamStoreKeyMinGasMultiplier))
var minGasMultiplier sdk.Dec
// Make sure the new params are set
require.NotPanics(t, func() {
paramStore.Get(ctx, types.ParamStoreKeyMinGasMultiplier, &minGasMultiplier)
})
// check the params is up
require.Equal(t, minGasMultiplier, types.DefaultMinGasMultiplier)
}
+3 -7
View File
@@ -44,7 +44,7 @@ func (AppModuleBasic) RegisterLegacyAminoCodec(_ *codec.LegacyAmino) {
// ConsensusVersion returns the consensus state-breaking version for the module.
func (AppModuleBasic) ConsensusVersion() uint64 {
return 2
return 1
}
// DefaultGenesis returns default genesis state as raw bytes for the evm
@@ -118,16 +118,12 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {
}
// RegisterServices registers a GRPC query service to respond to the
// module-specific GRPC queries and runs necessary migrations.
// module-specific GRPC queries.
func (am AppModule) RegisterServices(cfg module.Configurator) {
types.RegisterMsgServer(cfg.MsgServer(), am.keeper)
types.RegisterQueryServer(cfg.QueryServer(), am.keeper)
migrator := keeper.NewMigrator(*am.keeper)
// register v1 -> v2 migration for MinGasMultiplierParam
if err := cfg.RegisterMigration(types.ModuleName, 1, migrator.Migrate1to2); err != nil {
panic(fmt.Errorf("failed to migrate %s to v2: %w", types.ModuleName, err))
}
_ = keeper.NewMigrator(*am.keeper)
}
// Route returns the message routing key for the evm module.
+1 -1
View File
@@ -48,7 +48,7 @@ func RandomizedGenState(simState *module.SimulationState) {
func(r *rand.Rand) { extraEIPs = GenExtraEIPs(r) },
)
params := types.NewParams(types.DefaultEVMDenom, true, true, types.DefaultChainConfig(), types.DefaultMinGasMultiplier, extraEIPs...)
params := types.NewParams(types.DefaultEVMDenom, true, true, types.DefaultChainConfig(), extraEIPs...)
evmGenesis := types.NewGenesisState(params, []types.GenesisAccount{})
bz, err := json.MarshalIndent(evmGenesis, "", " ")
+94 -145
View File
@@ -37,9 +37,6 @@ type Params struct {
ExtraEIPs []int64 `protobuf:"varint,4,rep,packed,name=extra_eips,json=extraEips,proto3" json:"extra_eips,omitempty" yaml:"extra_eips"`
// chain config defines the EVM chain configuration parameters
ChainConfig ChainConfig `protobuf:"bytes,5,opt,name=chain_config,json=chainConfig,proto3" json:"chain_config" yaml:"chain_config"`
// min gas denominator bounds the minimum gasUsed to be charged
// to senders based on GasLimit
MinGasMultiplier github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,6,opt,name=min_gas_multiplier,json=minGasMultiplier,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_gas_multiplier"`
}
func (m *Params) Reset() { *m = Params{} }
@@ -660,102 +657,100 @@ func init() {
func init() { proto.RegisterFile("ethermint/evm/v1/evm.proto", fileDescriptor_d21ecc92c8c8583e) }
var fileDescriptor_d21ecc92c8c8583e = []byte{
// 1514 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcf, 0x6e, 0xdb, 0x46,
0x1a, 0xb7, 0x2d, 0xd9, 0xa6, 0x46, 0xb2, 0x44, 0x8f, 0x1d, 0xaf, 0xe2, 0x60, 0x4d, 0x2f, 0x0f,
0x0b, 0x2f, 0x90, 0x58, 0xb1, 0x03, 0x63, 0x83, 0x04, 0x7b, 0xb0, 0x6c, 0x27, 0xb1, 0x37, 0xd9,
0x35, 0xc6, 0x5e, 0x2c, 0x50, 0xb4, 0x20, 0x46, 0xe4, 0x84, 0x62, 0x4d, 0x72, 0x84, 0x99, 0xa1,
0x22, 0x15, 0x7d, 0x80, 0x02, 0xbd, 0xf4, 0x11, 0xfa, 0x0a, 0x45, 0x5f, 0x22, 0xe8, 0x29, 0xc7,
0xa2, 0x07, 0x22, 0x70, 0x6e, 0x3e, 0xea, 0x09, 0x0a, 0xce, 0x8c, 0xa8, 0x3f, 0x36, 0xda, 0xd8,
0x27, 0xce, 0xef, 0xfb, 0xf3, 0xfb, 0xcd, 0x7c, 0xf3, 0x91, 0x33, 0x04, 0xeb, 0x44, 0xb4, 0x09,
0x8b, 0x82, 0x58, 0x34, 0x48, 0x37, 0x6a, 0x74, 0x77, 0xb2, 0xc7, 0x76, 0x87, 0x51, 0x41, 0xa1,
0x99, 0xfb, 0xb6, 0x33, 0x63, 0x77, 0x67, 0x7d, 0xd5, 0xa7, 0x3e, 0x95, 0xce, 0x46, 0x36, 0x52,
0x71, 0xf6, 0xcf, 0x05, 0xb0, 0x70, 0x8a, 0x19, 0x8e, 0x38, 0xdc, 0x01, 0x25, 0xd2, 0x8d, 0x1c,
0x8f, 0xc4, 0x34, 0xaa, 0xcf, 0x6e, 0xce, 0x6e, 0x95, 0x9a, 0xab, 0x83, 0xd4, 0x32, 0xfb, 0x38,
0x0a, 0x9f, 0xd9, 0xb9, 0xcb, 0x46, 0x06, 0xe9, 0x46, 0x87, 0xd9, 0x10, 0xfe, 0x0b, 0x2c, 0x91,
0x18, 0xb7, 0x42, 0xe2, 0xb8, 0x8c, 0x60, 0x41, 0xea, 0x73, 0x9b, 0xb3, 0x5b, 0x46, 0xb3, 0x3e,
0x48, 0xad, 0x55, 0x9d, 0x36, 0xee, 0xb6, 0x51, 0x45, 0xe1, 0x03, 0x09, 0xe1, 0x3f, 0x41, 0x79,
0xe8, 0xc7, 0x61, 0x58, 0x2f, 0xc8, 0xe4, 0xb5, 0x41, 0x6a, 0xc1, 0xc9, 0x64, 0x1c, 0x86, 0x36,
0x02, 0x3a, 0x15, 0x87, 0x21, 0xdc, 0x07, 0x80, 0xf4, 0x04, 0xc3, 0x0e, 0x09, 0x3a, 0xbc, 0x5e,
0xdc, 0x2c, 0x6c, 0x15, 0x9a, 0xf6, 0x65, 0x6a, 0x95, 0x8e, 0x32, 0xeb, 0xd1, 0xf1, 0x29, 0x1f,
0xa4, 0xd6, 0xb2, 0x26, 0xc9, 0x03, 0x6d, 0x54, 0x92, 0xe0, 0x28, 0xe8, 0x70, 0xf8, 0x15, 0xa8,
0xb8, 0x6d, 0x1c, 0xc4, 0x8e, 0x4b, 0xe3, 0xb7, 0x81, 0x5f, 0x9f, 0xdf, 0x9c, 0xdd, 0x2a, 0xef,
0xfe, 0x75, 0x7b, 0xba, 0x6e, 0xdb, 0x07, 0x59, 0xd4, 0x81, 0x0c, 0x6a, 0x3e, 0x78, 0x9f, 0x5a,
0x33, 0x83, 0xd4, 0x5a, 0x51, 0xd4, 0xe3, 0x04, 0x36, 0x2a, 0xbb, 0xa3, 0x48, 0xf8, 0x25, 0x80,
0x51, 0x10, 0x3b, 0x3e, 0xe6, 0x4e, 0x94, 0x84, 0x22, 0xe8, 0x84, 0x01, 0x61, 0xf5, 0x05, 0x59,
0xd5, 0xed, 0x8c, 0xe5, 0xb7, 0xd4, 0xfa, 0xbb, 0x1f, 0x88, 0x76, 0xd2, 0xda, 0x76, 0x69, 0xd4,
0x70, 0x29, 0x8f, 0x28, 0xd7, 0x8f, 0x47, 0xdc, 0xbb, 0x68, 0x88, 0x7e, 0x87, 0xf0, 0xed, 0x43,
0xe2, 0x22, 0x33, 0x0a, 0xe2, 0x97, 0x98, 0xbf, 0xc9, 0x79, 0xec, 0x9f, 0xaa, 0xa0, 0x3c, 0x36,
0x2f, 0x18, 0x81, 0x5a, 0x9b, 0x46, 0x84, 0x0b, 0x82, 0x3d, 0xa7, 0x15, 0x52, 0xf7, 0x42, 0x6f,
0xe0, 0xe1, 0x67, 0xca, 0x1c, 0xc7, 0x62, 0x90, 0x5a, 0x6b, 0x6a, 0x59, 0x53, 0x54, 0x36, 0xaa,
0xe6, 0x96, 0x66, 0x66, 0x80, 0x7d, 0x50, 0xf5, 0x30, 0x75, 0xde, 0x52, 0x76, 0xa1, 0xd5, 0xe6,
0xa4, 0xda, 0xd9, 0xe7, 0xab, 0x5d, 0xa6, 0x56, 0xe5, 0x70, 0xff, 0xbf, 0x2f, 0x28, 0xbb, 0x90,
0x9c, 0x83, 0xd4, 0xba, 0xa7, 0xd4, 0x27, 0x99, 0x6d, 0x54, 0xf1, 0x30, 0xcd, 0xc3, 0xe0, 0xff,
0x81, 0x99, 0x07, 0xf0, 0xa4, 0xd3, 0xa1, 0x4c, 0xe8, 0xbe, 0x79, 0x74, 0x99, 0x5a, 0x55, 0x4d,
0x79, 0xa6, 0x3c, 0x83, 0xd4, 0xfa, 0xcb, 0x14, 0xa9, 0xce, 0xb1, 0x51, 0x55, 0xd3, 0xea, 0x50,
0xc8, 0x41, 0x85, 0x04, 0x9d, 0x9d, 0xbd, 0xc7, 0x7a, 0x45, 0x45, 0xb9, 0xa2, 0xd3, 0x5b, 0xad,
0xa8, 0x7c, 0x74, 0x7c, 0xba, 0xb3, 0xf7, 0x78, 0xb8, 0x20, 0xdd, 0x25, 0xe3, 0xb4, 0x36, 0x2a,
0x2b, 0xa8, 0x56, 0x73, 0x0c, 0x34, 0x74, 0xda, 0x98, 0xb7, 0x65, 0x0f, 0x96, 0x9a, 0x5b, 0x97,
0xa9, 0x05, 0x14, 0xd3, 0x2b, 0xcc, 0xdb, 0xa3, 0x7d, 0x69, 0xf5, 0xbf, 0xc1, 0xb1, 0x08, 0x92,
0x68, 0xc8, 0x05, 0x54, 0x72, 0x16, 0x95, 0xcf, 0x7f, 0x4f, 0xcf, 0x7f, 0xe1, 0xce, 0xf3, 0xdf,
0xbb, 0x69, 0xfe, 0x7b, 0x93, 0xf3, 0x57, 0x31, 0xb9, 0xe8, 0x53, 0x2d, 0xba, 0x78, 0x67, 0xd1,
0xa7, 0x37, 0x89, 0x3e, 0x9d, 0x14, 0x55, 0x31, 0x59, 0xb3, 0x4f, 0x55, 0xa2, 0x6e, 0xdc, 0xbd,
0xd9, 0xaf, 0x15, 0xb5, 0x9a, 0x5b, 0x94, 0xdc, 0xb7, 0x60, 0xd5, 0xa5, 0x31, 0x17, 0x99, 0x2d,
0xa6, 0x9d, 0x90, 0x68, 0xcd, 0x92, 0xd4, 0x3c, 0xbe, 0x95, 0xe6, 0x03, 0xfd, 0xdd, 0xb8, 0x81,
0xcf, 0x46, 0x2b, 0x93, 0x66, 0xa5, 0xde, 0x01, 0x66, 0x87, 0x08, 0xc2, 0x78, 0x2b, 0x61, 0xbe,
0x56, 0x06, 0x52, 0xf9, 0xe8, 0x56, 0xca, 0xfa, 0x3d, 0x98, 0xe6, 0xb2, 0x51, 0x6d, 0x64, 0x52,
0x8a, 0x5f, 0x83, 0x6a, 0x90, 0x4d, 0xa3, 0x95, 0x84, 0x5a, 0xaf, 0x2c, 0xf5, 0x0e, 0x6e, 0xa5,
0xa7, 0x5f, 0xe6, 0x49, 0x26, 0x1b, 0x2d, 0x0d, 0x0d, 0x4a, 0x2b, 0x01, 0x30, 0x4a, 0x02, 0xe6,
0xf8, 0x21, 0x76, 0x03, 0xc2, 0xb4, 0x5e, 0x45, 0xea, 0xbd, 0xbc, 0x95, 0xde, 0x7d, 0xa5, 0x77,
0x9d, 0xcd, 0x46, 0x66, 0x66, 0x7c, 0xa9, 0x6c, 0x4a, 0xd6, 0x03, 0x95, 0x16, 0x61, 0x61, 0x10,
0x6b, 0xc1, 0x25, 0x29, 0xb8, 0x7f, 0x2b, 0x41, 0xdd, 0xa7, 0xe3, 0x3c, 0x36, 0x2a, 0x2b, 0x98,
0xab, 0x84, 0x34, 0xf6, 0xe8, 0x50, 0x65, 0xf9, 0xee, 0x2a, 0xe3, 0x3c, 0x36, 0x2a, 0x2b, 0xa8,
0x54, 0x7a, 0x60, 0x05, 0x33, 0x46, 0xdf, 0x4d, 0xd5, 0x10, 0x4a, 0xb1, 0x57, 0xb7, 0x12, 0x5b,
0x57, 0x62, 0x37, 0xd0, 0xd9, 0x68, 0x59, 0x5a, 0x27, 0xaa, 0x48, 0x81, 0x19, 0x11, 0xe6, 0x93,
0xf1, 0x73, 0x60, 0xe5, 0xee, 0xad, 0x39, 0xcd, 0x65, 0xa3, 0xaa, 0x34, 0xe5, 0xdf, 0xfe, 0x93,
0xa2, 0x51, 0x35, 0x6b, 0x27, 0x45, 0xa3, 0x66, 0x9a, 0x27, 0x45, 0xc3, 0x34, 0x97, 0xd1, 0x52,
0x9f, 0x86, 0xd4, 0xe9, 0x3e, 0x51, 0x19, 0xa8, 0x4c, 0xde, 0x61, 0xae, 0x5f, 0x64, 0x54, 0x75,
0xb1, 0xc0, 0x61, 0x9f, 0x0b, 0x4d, 0xd7, 0x00, 0xf3, 0x67, 0x22, 0xbb, 0x75, 0x98, 0xa0, 0x70,
0x41, 0xfa, 0xea, 0x80, 0x44, 0xd9, 0x10, 0xae, 0x82, 0xf9, 0x2e, 0x0e, 0x13, 0x75, 0x7d, 0x29,
0x21, 0x05, 0xec, 0x53, 0x50, 0x3b, 0x67, 0x38, 0xe6, 0xd8, 0x15, 0x01, 0x8d, 0x5f, 0x53, 0x9f,
0x43, 0x08, 0x8a, 0xf2, 0x43, 0xad, 0x72, 0xe5, 0x18, 0xfe, 0x03, 0x14, 0x43, 0xea, 0xf3, 0xfa,
0xdc, 0x66, 0x61, 0xab, 0xbc, 0x7b, 0xef, 0xfa, 0x05, 0xe2, 0x35, 0xf5, 0x91, 0x0c, 0xb1, 0x7f,
0x99, 0x03, 0x85, 0xd7, 0xd4, 0x87, 0x75, 0xb0, 0x88, 0x3d, 0x8f, 0x11, 0xce, 0x35, 0xd3, 0x10,
0xc2, 0x35, 0xb0, 0x20, 0x68, 0x27, 0x70, 0x15, 0x5d, 0x09, 0x69, 0x94, 0x09, 0x7b, 0x58, 0x60,
0x79, 0xd4, 0x55, 0x90, 0x1c, 0xc3, 0x5d, 0x50, 0x91, 0x2b, 0x73, 0xe2, 0x24, 0x6a, 0x11, 0x26,
0x4f, 0xac, 0x62, 0xb3, 0x76, 0x95, 0x5a, 0x65, 0x69, 0xff, 0x8f, 0x34, 0xa3, 0x71, 0x00, 0x1f,
0x82, 0x45, 0xd1, 0x1b, 0x3f, 0x6c, 0x56, 0xae, 0x52, 0xab, 0x26, 0x46, 0xcb, 0xcc, 0xce, 0x12,
0xb4, 0x20, 0x7a, 0xf2, 0x4c, 0x69, 0x00, 0x43, 0xf4, 0x9c, 0x20, 0xf6, 0x48, 0x4f, 0x9e, 0x27,
0xc5, 0xe6, 0xea, 0x55, 0x6a, 0x99, 0x63, 0xe1, 0xc7, 0x99, 0x0f, 0x2d, 0x8a, 0x9e, 0x1c, 0xc0,
0x87, 0x00, 0xa8, 0x29, 0x49, 0x05, 0x75, 0x1a, 0x2c, 0x5d, 0xa5, 0x56, 0x49, 0x5a, 0x25, 0xf7,
0x68, 0x08, 0x6d, 0x30, 0xaf, 0xb8, 0x0d, 0xc9, 0x5d, 0xb9, 0x4a, 0x2d, 0x23, 0xa4, 0xbe, 0xe2,
0x54, 0xae, 0xac, 0x54, 0x8c, 0x44, 0xb4, 0x4b, 0x3c, 0xf9, 0xc1, 0x35, 0xd0, 0x10, 0xda, 0xdf,
0xcf, 0x01, 0xe3, 0xbc, 0x87, 0x08, 0x4f, 0x42, 0x01, 0x5f, 0x00, 0xd3, 0xa5, 0xb1, 0x60, 0xd8,
0x15, 0xce, 0x44, 0x69, 0x9b, 0x0f, 0x46, 0x1d, 0x36, 0x1d, 0x61, 0xa3, 0xda, 0xd0, 0xb4, 0xaf,
0xeb, 0xbf, 0x0a, 0xe6, 0x5b, 0x21, 0xa5, 0x91, 0xec, 0x84, 0x0a, 0x52, 0x00, 0x22, 0x59, 0x35,
0xb9, 0xcb, 0x05, 0x79, 0x4d, 0xfc, 0xdb, 0xf5, 0x5d, 0x9e, 0x6a, 0x95, 0xe6, 0x9a, 0xbe, 0x2a,
0x56, 0x95, 0xb6, 0xce, 0xb7, 0xb3, 0xda, 0xca, 0x56, 0x32, 0x41, 0x81, 0x11, 0x21, 0x37, 0xad,
0x82, 0xb2, 0x21, 0x5c, 0x07, 0x06, 0x23, 0x5d, 0xc2, 0x04, 0xf1, 0xe4, 0xe6, 0x18, 0x28, 0xc7,
0xf0, 0x3e, 0x30, 0xb2, 0xab, 0x64, 0xc2, 0x89, 0xa7, 0x76, 0x02, 0x2d, 0xfa, 0x98, 0xff, 0x8f,
0x13, 0xef, 0x59, 0xf1, 0xbb, 0x1f, 0xad, 0x19, 0x1b, 0x83, 0xf2, 0xbe, 0xeb, 0x12, 0xce, 0xcf,
0x93, 0x4e, 0x48, 0xfe, 0xa0, 0xc3, 0x76, 0x41, 0x85, 0x0b, 0xca, 0xb0, 0x4f, 0x9c, 0x0b, 0xd2,
0xd7, 0x7d, 0xa6, 0xba, 0x46, 0xdb, 0xff, 0x4d, 0xfa, 0x1c, 0x8d, 0x03, 0x2d, 0xf1, 0xb1, 0x00,
0xca, 0xe7, 0x0c, 0xbb, 0x44, 0x5f, 0x3a, 0xb3, 0x5e, 0xcd, 0x20, 0xd3, 0x12, 0x1a, 0x65, 0xda,
0x22, 0x88, 0x08, 0x4d, 0x84, 0x7e, 0x9f, 0x86, 0x30, 0xcb, 0x60, 0x84, 0xf4, 0x88, 0x2b, 0xcb,
0x58, 0x44, 0x1a, 0xc1, 0x3d, 0xb0, 0xe4, 0x05, 0x5c, 0xde, 0xf5, 0xb9, 0xc0, 0xee, 0x85, 0x5a,
0x7e, 0xd3, 0xbc, 0x4a, 0xad, 0x8a, 0x76, 0x9c, 0x65, 0x76, 0x34, 0x81, 0xe0, 0x73, 0x50, 0x1b,
0xa5, 0xc9, 0xd9, 0xca, 0xda, 0x18, 0x4d, 0x78, 0x95, 0x5a, 0xd5, 0x3c, 0x54, 0x7a, 0xd0, 0x14,
0xce, 0x76, 0xda, 0x23, 0xad, 0xc4, 0x97, 0xcd, 0x67, 0x20, 0x05, 0x32, 0x6b, 0x18, 0x44, 0x81,
0x90, 0xcd, 0x36, 0x8f, 0x14, 0x80, 0xcf, 0x41, 0x89, 0x76, 0x09, 0x63, 0x81, 0x47, 0xb8, 0x3c,
0x7d, 0xff, 0xec, 0x47, 0x01, 0x8d, 0xe2, 0xb3, 0xc5, 0xe9, 0xff, 0x98, 0x88, 0x44, 0x94, 0xf5,
0xe5, 0x71, 0xaa, 0x17, 0xa7, 0x1c, 0x6f, 0xa4, 0x1d, 0x4d, 0x20, 0xd8, 0x04, 0x50, 0xa7, 0x31,
0x22, 0x12, 0x16, 0x3b, 0xf2, 0xfd, 0xaf, 0xc8, 0x5c, 0xf9, 0x16, 0x2a, 0x2f, 0x92, 0xce, 0x43,
0x2c, 0x30, 0xba, 0x66, 0x39, 0x29, 0x1a, 0x45, 0x73, 0xfe, 0xa4, 0x68, 0x2c, 0x9a, 0x46, 0xbe,
0x7e, 0x3d, 0x0b, 0xb4, 0x32, 0xc4, 0x63, 0xf4, 0xcd, 0xe6, 0xfb, 0xcb, 0x8d, 0xd9, 0x0f, 0x97,
0x1b, 0xb3, 0x1f, 0x2f, 0x37, 0x66, 0x7f, 0xf8, 0xb4, 0x31, 0xf3, 0xe1, 0xd3, 0xc6, 0xcc, 0xaf,
0x9f, 0x36, 0x66, 0xbe, 0xd8, 0x1a, 0xfb, 0x9c, 0x8b, 0x36, 0x66, 0x3c, 0xe0, 0x8d, 0xd1, 0xef,
0x67, 0x4f, 0xfe, 0x80, 0xca, 0x8f, 0x7a, 0x6b, 0x41, 0xfe, 0x58, 0x3e, 0xf9, 0x3d, 0x00, 0x00,
0xff, 0xff, 0xc9, 0xc5, 0x98, 0x42, 0x9e, 0x0e, 0x00, 0x00,
// 1475 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdf, 0x6e, 0xdb, 0xb6,
0x1a, 0x4f, 0x62, 0x27, 0x91, 0x69, 0xc7, 0x56, 0x98, 0x34, 0xc7, 0x4d, 0x71, 0xa2, 0x1c, 0x5d,
0x1c, 0xe4, 0x00, 0x6d, 0xdc, 0xa4, 0x08, 0x4e, 0xd1, 0x62, 0x17, 0x51, 0x92, 0xb6, 0xc9, 0xba,
0x2d, 0x60, 0x32, 0x0c, 0x18, 0x30, 0x08, 0xb4, 0xc4, 0xca, 0x5a, 0x24, 0xd1, 0x20, 0x29, 0xd7,
0x1e, 0xf6, 0x00, 0x03, 0x76, 0xb3, 0x47, 0xd8, 0x2b, 0xec, 0x2d, 0x8a, 0x5d, 0xf5, 0x66, 0xc0,
0xb0, 0x0b, 0xa1, 0x48, 0xef, 0x72, 0xe9, 0x27, 0x18, 0x44, 0xd2, 0x7f, 0x13, 0x6c, 0x4b, 0xae,
0xcc, 0xdf, 0xf7, 0xe7, 0xf7, 0x23, 0x3f, 0x7e, 0x14, 0x69, 0xb0, 0x4e, 0x44, 0x8b, 0xb0, 0x38,
0x4c, 0x44, 0x83, 0x74, 0xe2, 0x46, 0x67, 0x27, 0xff, 0xd9, 0x6e, 0x33, 0x2a, 0x28, 0x34, 0x87,
0xbe, 0xed, 0xdc, 0xd8, 0xd9, 0x59, 0x5f, 0x0d, 0x68, 0x40, 0xa5, 0xb3, 0x91, 0x8f, 0x54, 0x9c,
0xfd, 0xdb, 0x1c, 0x58, 0x38, 0xc5, 0x0c, 0xc7, 0x1c, 0xee, 0x80, 0x12, 0xe9, 0xc4, 0xae, 0x4f,
0x12, 0x1a, 0xd7, 0x67, 0x37, 0x67, 0xb7, 0x4a, 0xce, 0x6a, 0x3f, 0xb3, 0xcc, 0x1e, 0x8e, 0xa3,
0x67, 0xf6, 0xd0, 0x65, 0x23, 0x83, 0x74, 0xe2, 0xc3, 0x7c, 0x08, 0x3f, 0x01, 0x4b, 0x24, 0xc1,
0xcd, 0x88, 0xb8, 0x1e, 0x23, 0x58, 0x90, 0xfa, 0xdc, 0xe6, 0xec, 0x96, 0xe1, 0xd4, 0xfb, 0x99,
0xb5, 0xaa, 0xd3, 0xc6, 0xdd, 0x36, 0xaa, 0x28, 0x7c, 0x20, 0x21, 0xfc, 0x3f, 0x28, 0x0f, 0xfc,
0x38, 0x8a, 0xea, 0x05, 0x99, 0xbc, 0xd6, 0xcf, 0x2c, 0x38, 0x99, 0x8c, 0xa3, 0xc8, 0x46, 0x40,
0xa7, 0xe2, 0x28, 0x82, 0xfb, 0x00, 0x90, 0xae, 0x60, 0xd8, 0x25, 0x61, 0x9b, 0xd7, 0x8b, 0x9b,
0x85, 0xad, 0x82, 0x63, 0x5f, 0x66, 0x56, 0xe9, 0x28, 0xb7, 0x1e, 0x1d, 0x9f, 0xf2, 0x7e, 0x66,
0x2d, 0x6b, 0x92, 0x61, 0xa0, 0x8d, 0x4a, 0x12, 0x1c, 0x85, 0x6d, 0x0e, 0xbf, 0x01, 0x15, 0xaf,
0x85, 0xc3, 0xc4, 0xf5, 0x68, 0xf2, 0x26, 0x0c, 0xea, 0xf3, 0x9b, 0xb3, 0x5b, 0xe5, 0xdd, 0x7f,
0x6f, 0x4f, 0xd7, 0x6d, 0xfb, 0x20, 0x8f, 0x3a, 0x90, 0x41, 0xce, 0x83, 0x77, 0x99, 0x35, 0xd3,
0xcf, 0xac, 0x15, 0x45, 0x3d, 0x4e, 0x60, 0xa3, 0xb2, 0x37, 0x8a, 0xb4, 0x7f, 0xa9, 0x82, 0xf2,
0x58, 0x26, 0x8c, 0x41, 0xad, 0x45, 0x63, 0xc2, 0x05, 0xc1, 0xbe, 0xdb, 0x8c, 0xa8, 0x77, 0xa1,
0x4b, 0x7c, 0xf8, 0x47, 0x66, 0xfd, 0x37, 0x08, 0x45, 0x2b, 0x6d, 0x6e, 0x7b, 0x34, 0x6e, 0x78,
0x94, 0xc7, 0x94, 0xeb, 0x9f, 0x47, 0xdc, 0xbf, 0x68, 0x88, 0x5e, 0x9b, 0xf0, 0xed, 0xe3, 0x44,
0xf4, 0x33, 0x6b, 0x4d, 0x09, 0x4f, 0x51, 0xd9, 0xa8, 0x3a, 0xb4, 0x38, 0xb9, 0x01, 0xf6, 0x40,
0xd5, 0xc7, 0xd4, 0x7d, 0x43, 0xd9, 0x85, 0x56, 0x9b, 0x93, 0x6a, 0x67, 0xff, 0x5c, 0xed, 0x32,
0xb3, 0x2a, 0x87, 0xfb, 0x5f, 0xbc, 0xa0, 0xec, 0x42, 0x72, 0xf6, 0x33, 0xeb, 0x9e, 0x52, 0x9f,
0x64, 0xb6, 0x51, 0xc5, 0xc7, 0x74, 0x18, 0x06, 0xbf, 0x02, 0xe6, 0x30, 0x80, 0xa7, 0xed, 0x36,
0x65, 0x42, 0xef, 0xec, 0xa3, 0xcb, 0xcc, 0xaa, 0x6a, 0xca, 0x33, 0xe5, 0xe9, 0x67, 0xd6, 0xbf,
0xa6, 0x48, 0x75, 0x8e, 0x8d, 0xaa, 0x9a, 0x56, 0x87, 0x42, 0x0e, 0x2a, 0x24, 0x6c, 0xef, 0xec,
0x3d, 0xd6, 0x2b, 0x2a, 0xca, 0x15, 0x9d, 0xde, 0x6a, 0x45, 0xe5, 0xa3, 0xe3, 0xd3, 0x9d, 0xbd,
0xc7, 0x83, 0x05, 0xe9, 0x7d, 0x1c, 0xa7, 0xb5, 0x51, 0x59, 0x41, 0xb5, 0x9a, 0x63, 0xa0, 0xa1,
0xdb, 0xc2, 0xbc, 0x25, 0xbb, 0xa4, 0xe4, 0x6c, 0x5d, 0x66, 0x16, 0x50, 0x4c, 0xaf, 0x30, 0x6f,
0x8d, 0xf6, 0xa5, 0xd9, 0xfb, 0x0e, 0x27, 0x22, 0x4c, 0xe3, 0x01, 0x17, 0x50, 0xc9, 0x79, 0xd4,
0x70, 0xfe, 0x7b, 0x7a, 0xfe, 0x0b, 0x77, 0x9e, 0xff, 0xde, 0x4d, 0xf3, 0xdf, 0x9b, 0x9c, 0xbf,
0x8a, 0x19, 0x8a, 0x3e, 0xd5, 0xa2, 0x8b, 0x77, 0x16, 0x7d, 0x7a, 0x93, 0xe8, 0xd3, 0x49, 0x51,
0x15, 0x93, 0x37, 0xfb, 0x54, 0x25, 0xea, 0xc6, 0xdd, 0x9b, 0xfd, 0x5a, 0x51, 0xab, 0x43, 0x8b,
0x92, 0xfb, 0x1e, 0xac, 0x7a, 0x34, 0xe1, 0x22, 0xb7, 0x25, 0xb4, 0x1d, 0x11, 0xad, 0x59, 0x92,
0x9a, 0xc7, 0xb7, 0xd2, 0x7c, 0xa0, 0x4f, 0xf6, 0x0d, 0x7c, 0x36, 0x5a, 0x99, 0x34, 0x2b, 0xf5,
0x36, 0x30, 0xdb, 0x44, 0x10, 0xc6, 0x9b, 0x29, 0x0b, 0xb4, 0x32, 0x90, 0xca, 0x47, 0xb7, 0x52,
0xd6, 0xe7, 0x60, 0x9a, 0xcb, 0x46, 0xb5, 0x91, 0x49, 0x29, 0x7e, 0x0b, 0xaa, 0x61, 0x3e, 0x8d,
0x66, 0x1a, 0x69, 0xbd, 0xb2, 0xd4, 0x3b, 0xb8, 0x95, 0x9e, 0x3e, 0xcc, 0x93, 0x4c, 0x36, 0x5a,
0x1a, 0x18, 0x94, 0x56, 0x0a, 0x60, 0x9c, 0x86, 0xcc, 0x0d, 0x22, 0xec, 0x85, 0x84, 0x69, 0xbd,
0x8a, 0xd4, 0x7b, 0x79, 0x2b, 0xbd, 0xfb, 0x4a, 0xef, 0x3a, 0x9b, 0x8d, 0xcc, 0xdc, 0xf8, 0x52,
0xd9, 0x94, 0xac, 0x0f, 0x2a, 0x4d, 0xc2, 0xa2, 0x30, 0xd1, 0x82, 0x4b, 0x52, 0x70, 0xff, 0x56,
0x82, 0xba, 0x4f, 0xc7, 0x79, 0x6c, 0x54, 0x56, 0x70, 0xa8, 0x12, 0xd1, 0xc4, 0xa7, 0x03, 0x95,
0xe5, 0xbb, 0xab, 0x8c, 0xf3, 0xd8, 0xa8, 0xac, 0xa0, 0x52, 0xe9, 0x82, 0x15, 0xcc, 0x18, 0x7d,
0x3b, 0x55, 0x43, 0x28, 0xc5, 0x5e, 0xdd, 0x4a, 0x6c, 0x5d, 0x89, 0xdd, 0x40, 0x67, 0xa3, 0x65,
0x69, 0x9d, 0xa8, 0x22, 0x05, 0x66, 0x4c, 0x58, 0x40, 0xc6, 0xef, 0x81, 0x95, 0xbb, 0xb7, 0xe6,
0x34, 0x97, 0x8d, 0xaa, 0xd2, 0x34, 0xfc, 0xf6, 0x9f, 0x14, 0x8d, 0xaa, 0x59, 0x3b, 0x29, 0x1a,
0x35, 0xd3, 0x3c, 0x29, 0x1a, 0xa6, 0xb9, 0x8c, 0x96, 0x7a, 0x34, 0xa2, 0x6e, 0xe7, 0x89, 0xca,
0x40, 0x65, 0xf2, 0x16, 0x73, 0x7d, 0x90, 0x51, 0xd5, 0xc3, 0x02, 0x47, 0x3d, 0x2e, 0x34, 0x5d,
0x03, 0xcc, 0x9f, 0x89, 0xfc, 0x5d, 0x60, 0x82, 0xc2, 0x05, 0xe9, 0xa9, 0x0b, 0x12, 0xe5, 0x43,
0xb8, 0x0a, 0xe6, 0x3b, 0x38, 0x4a, 0xd5, 0x03, 0xa3, 0x84, 0x14, 0xb0, 0x4f, 0x41, 0xed, 0x9c,
0xe1, 0x84, 0x63, 0x4f, 0x84, 0x34, 0x79, 0x4d, 0x03, 0x0e, 0x21, 0x28, 0xca, 0x0f, 0xb5, 0xca,
0x95, 0x63, 0xf8, 0x3f, 0x50, 0x8c, 0x68, 0xc0, 0xeb, 0x73, 0x9b, 0x85, 0xad, 0xf2, 0xee, 0xbd,
0xeb, 0x57, 0xfc, 0x6b, 0x1a, 0x20, 0x19, 0x62, 0xff, 0x3a, 0x07, 0x0a, 0xaf, 0x69, 0x00, 0xeb,
0x60, 0x11, 0xfb, 0x3e, 0x23, 0x9c, 0x6b, 0xa6, 0x01, 0x84, 0x6b, 0x60, 0x41, 0xd0, 0x76, 0xe8,
0x29, 0xba, 0x12, 0xd2, 0x28, 0x17, 0xf6, 0xb1, 0xc0, 0xf2, 0xaa, 0xab, 0x20, 0x39, 0x86, 0xbb,
0xa0, 0x22, 0x57, 0xe6, 0x26, 0x69, 0xdc, 0x24, 0x4c, 0xde, 0x58, 0x45, 0xa7, 0x76, 0x95, 0x59,
0x65, 0x69, 0xff, 0x5c, 0x9a, 0xd1, 0x38, 0x80, 0x0f, 0xc1, 0xa2, 0xe8, 0x8e, 0x5f, 0x36, 0x2b,
0x57, 0x99, 0x55, 0x13, 0xa3, 0x65, 0xe6, 0x77, 0x09, 0x5a, 0x10, 0x5d, 0x79, 0xa7, 0x34, 0x80,
0x21, 0xba, 0x6e, 0x98, 0xf8, 0xa4, 0x2b, 0xef, 0x93, 0xa2, 0xb3, 0x7a, 0x95, 0x59, 0xe6, 0x58,
0xf8, 0x71, 0xee, 0x43, 0x8b, 0xa2, 0x2b, 0x07, 0xf0, 0x21, 0x00, 0x6a, 0x4a, 0x52, 0x41, 0xdd,
0x06, 0x4b, 0x57, 0x99, 0x55, 0x92, 0x56, 0xc9, 0x3d, 0x1a, 0x42, 0x1b, 0xcc, 0x2b, 0x6e, 0x43,
0x72, 0x57, 0xae, 0x32, 0xcb, 0x88, 0x68, 0xa0, 0x38, 0x95, 0x2b, 0x2f, 0x15, 0x23, 0x31, 0xed,
0x10, 0x5f, 0x7e, 0x70, 0x0d, 0x34, 0x80, 0xf6, 0x8f, 0x73, 0xc0, 0x38, 0xef, 0x22, 0xc2, 0xd3,
0x48, 0xc0, 0x17, 0xc0, 0xf4, 0x68, 0x22, 0x18, 0xf6, 0x84, 0x3b, 0x51, 0x5a, 0xe7, 0xc1, 0xa8,
0xc3, 0xa6, 0x23, 0x6c, 0x54, 0x1b, 0x98, 0xf6, 0x75, 0xfd, 0x57, 0xc1, 0x7c, 0x33, 0xa2, 0x34,
0x96, 0x9d, 0x50, 0x41, 0x0a, 0x40, 0x24, 0xab, 0x26, 0x77, 0xb9, 0x20, 0x1f, 0x72, 0xff, 0xb9,
0xbe, 0xcb, 0x53, 0xad, 0xe2, 0xac, 0xe9, 0xc7, 0x5c, 0x55, 0x69, 0xeb, 0x7c, 0x3b, 0xaf, 0xad,
0x6c, 0x25, 0x13, 0x14, 0x18, 0x11, 0x72, 0xd3, 0x2a, 0x28, 0x1f, 0xc2, 0x75, 0x60, 0x30, 0xd2,
0x21, 0x4c, 0x10, 0x5f, 0x6e, 0x8e, 0x81, 0x86, 0x18, 0xde, 0x07, 0x46, 0x80, 0xb9, 0x9b, 0x72,
0xe2, 0xab, 0x9d, 0x40, 0x8b, 0x01, 0xe6, 0x5f, 0x72, 0xe2, 0x3f, 0x2b, 0xfe, 0xf0, 0xb3, 0x35,
0x63, 0x63, 0x50, 0xde, 0xf7, 0x3c, 0xc2, 0xf9, 0x79, 0xda, 0x8e, 0xc8, 0x5f, 0x74, 0xd8, 0x2e,
0xa8, 0x70, 0x41, 0x19, 0x0e, 0x88, 0x7b, 0x41, 0x7a, 0xba, 0xcf, 0x54, 0xd7, 0x68, 0xfb, 0xa7,
0xa4, 0xc7, 0xd1, 0x38, 0xd0, 0x12, 0x1f, 0x0a, 0xa0, 0x7c, 0xce, 0xb0, 0x47, 0xf4, 0xa3, 0x33,
0xef, 0xd5, 0x1c, 0x32, 0x2d, 0xa1, 0x51, 0xae, 0x2d, 0xc2, 0x98, 0xd0, 0x54, 0xe8, 0xf3, 0x34,
0x80, 0x79, 0x06, 0x23, 0xa4, 0x4b, 0x3c, 0x59, 0xc6, 0x22, 0xd2, 0x08, 0xee, 0x81, 0x25, 0x3f,
0xe4, 0xf2, 0x35, 0xce, 0x05, 0xf6, 0x2e, 0xd4, 0xf2, 0x1d, 0xf3, 0x2a, 0xb3, 0x2a, 0xda, 0x71,
0x96, 0xdb, 0xd1, 0x04, 0x82, 0xcf, 0x41, 0x6d, 0x94, 0x26, 0x67, 0x2b, 0x6b, 0x63, 0x38, 0xf0,
0x2a, 0xb3, 0xaa, 0xc3, 0x50, 0xe9, 0x41, 0x53, 0x38, 0xdf, 0x69, 0x9f, 0x34, 0xd3, 0x40, 0x36,
0x9f, 0x81, 0x14, 0xc8, 0xad, 0x51, 0x18, 0x87, 0x42, 0x36, 0xdb, 0x3c, 0x52, 0x00, 0x3e, 0x07,
0x25, 0xda, 0x21, 0x8c, 0x85, 0x3e, 0xe1, 0xf2, 0xf6, 0xfd, 0xbb, 0xa7, 0x3c, 0x1a, 0xc5, 0xe7,
0x8b, 0xd3, 0xff, 0x34, 0x62, 0x12, 0x53, 0xd6, 0x93, 0xd7, 0xa9, 0x5e, 0x9c, 0x72, 0x7c, 0x26,
0xed, 0x68, 0x02, 0x41, 0x07, 0x40, 0x9d, 0xc6, 0x88, 0x48, 0x59, 0xe2, 0xca, 0xf3, 0x5f, 0x91,
0xb9, 0xf2, 0x14, 0x2a, 0x2f, 0x92, 0xce, 0x43, 0x2c, 0x30, 0xba, 0x66, 0x39, 0x29, 0x1a, 0x45,
0x73, 0xfe, 0xa4, 0x68, 0x2c, 0x9a, 0xc6, 0x70, 0xfd, 0x7a, 0x16, 0x68, 0x65, 0x80, 0xc7, 0xe8,
0x1d, 0xe7, 0xdd, 0xe5, 0xc6, 0xec, 0xfb, 0xcb, 0x8d, 0xd9, 0x0f, 0x97, 0x1b, 0xb3, 0x3f, 0x7d,
0xdc, 0x98, 0x79, 0xff, 0x71, 0x63, 0xe6, 0xf7, 0x8f, 0x1b, 0x33, 0x5f, 0x6f, 0x8d, 0x7d, 0xce,
0x45, 0x0b, 0x33, 0x1e, 0xf2, 0xc6, 0xe8, 0x0f, 0x62, 0x57, 0xfe, 0x45, 0x94, 0x1f, 0xf5, 0xe6,
0x82, 0xfc, 0xeb, 0xf7, 0xe4, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x69, 0xef, 0x82, 0x39, 0x40,
0x0e, 0x00, 0x00,
}
func (m *Params) Marshal() (dAtA []byte, err error) {
@@ -778,16 +773,6 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
{
size := m.MinGasMultiplier.Size()
i -= size
if _, err := m.MinGasMultiplier.MarshalTo(dAtA[i:]); err != nil {
return 0, err
}
i = encodeVarintEvm(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x32
{
size, err := m.ChainConfig.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
@@ -1480,8 +1465,6 @@ func (m *Params) Size() (n int) {
}
l = m.ChainConfig.Size()
n += 1 + l + sovEvm(uint64(l))
l = m.MinGasMultiplier.Size()
n += 1 + l + sovEvm(uint64(l))
return n
}
@@ -1942,40 +1925,6 @@ func (m *Params) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 6:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field MinGasMultiplier", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowEvm
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthEvm
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthEvm
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if err := m.MinGasMultiplier.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipEvm(dAtA[iNdEx:])
+1
View File
@@ -45,6 +45,7 @@ type StakingKeeper interface {
type FeeMarketKeeper interface {
GetBaseFee(ctx sdk.Context) *big.Int
GetParams(ctx sdk.Context) feemarkettypes.Params
AddTransientGasWanted(ctx sdk.Context, gasWanted uint64) (uint64, error)
}
// Event Hooks
+16 -45
View File
@@ -23,12 +23,11 @@ var DefaultMinGasMultiplier = sdk.NewDecWithPrec(50, 2)
// Parameter keys
var (
ParamStoreKeyEVMDenom = []byte("EVMDenom")
ParamStoreKeyEnableCreate = []byte("EnableCreate")
ParamStoreKeyEnableCall = []byte("EnableCall")
ParamStoreKeyExtraEIPs = []byte("EnableExtraEIPs")
ParamStoreKeyChainConfig = []byte("ChainConfig")
ParamStoreKeyMinGasMultiplier = []byte("MinGasMultiplier")
ParamStoreKeyEVMDenom = []byte("EVMDenom")
ParamStoreKeyEnableCreate = []byte("EnableCreate")
ParamStoreKeyEnableCall = []byte("EnableCall")
ParamStoreKeyExtraEIPs = []byte("EnableExtraEIPs")
ParamStoreKeyChainConfig = []byte("ChainConfig")
// AvailableExtraEIPs define the list of all EIPs that can be enabled by the
// EVM interpreter. These EIPs are applied in order and can override the
@@ -44,14 +43,13 @@ func ParamKeyTable() paramtypes.KeyTable {
}
// NewParams creates a new Params instance
func NewParams(evmDenom string, enableCreate, enableCall bool, config ChainConfig, minGasMultiplier sdk.Dec, extraEIPs ...int64) Params {
func NewParams(evmDenom string, enableCreate, enableCall bool, config ChainConfig, extraEIPs ...int64) Params {
return Params{
EvmDenom: evmDenom,
EnableCreate: enableCreate,
EnableCall: enableCall,
ExtraEIPs: extraEIPs,
ChainConfig: config,
MinGasMultiplier: minGasMultiplier,
EvmDenom: evmDenom,
EnableCreate: enableCreate,
EnableCall: enableCall,
ExtraEIPs: extraEIPs,
ChainConfig: config,
}
}
@@ -59,12 +57,11 @@ func NewParams(evmDenom string, enableCreate, enableCall bool, config ChainConfi
// ExtraEIPs is empty to prevent overriding the latest hard fork instruction set
func DefaultParams() Params {
return Params{
EvmDenom: DefaultEVMDenom,
EnableCreate: true,
EnableCall: true,
ChainConfig: DefaultChainConfig(),
ExtraEIPs: nil,
MinGasMultiplier: DefaultMinGasMultiplier,
EvmDenom: DefaultEVMDenom,
EnableCreate: true,
EnableCall: true,
ChainConfig: DefaultChainConfig(),
ExtraEIPs: nil,
}
}
@@ -76,7 +73,6 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs {
paramtypes.NewParamSetPair(ParamStoreKeyEnableCall, &p.EnableCall, validateBool),
paramtypes.NewParamSetPair(ParamStoreKeyExtraEIPs, &p.ExtraEIPs, validateEIPs),
paramtypes.NewParamSetPair(ParamStoreKeyChainConfig, &p.ChainConfig, validateChainConfig),
paramtypes.NewParamSetPair(ParamStoreKeyMinGasMultiplier, &p.MinGasMultiplier, validateMinGasMultiplier),
}
}
@@ -90,10 +86,6 @@ func (p Params) Validate() error {
return err
}
if err := validateMinGasMultiplier(p.MinGasMultiplier); err != nil {
return err
}
return p.ChainConfig.Validate()
}
@@ -138,27 +130,6 @@ func validateEIPs(i interface{}) error {
return nil
}
func validateMinGasMultiplier(i interface{}) error {
v, ok := i.(sdk.Dec)
if !ok {
return fmt.Errorf("invalid parameter type: %T", i)
}
if v.IsNil() {
return fmt.Errorf("invalid parameter: nil")
}
if v.IsNegative() {
return fmt.Errorf("value cannot be negative: %T", i)
}
if v.GT(sdk.OneDec()) {
return fmt.Errorf("value cannot be greater than 1: %T", i)
}
return nil
}
func validateChainConfig(i interface{}) error {
cfg, ok := i.(ChainConfig)
if !ok {
+2 -9
View File
@@ -1,7 +1,6 @@
package types
import (
sdk "github.com/cosmos/cosmos-sdk/types"
"testing"
"github.com/ethereum/go-ethereum/params"
@@ -23,7 +22,7 @@ func TestParamsValidate(t *testing.T) {
{"default", DefaultParams(), false},
{
"valid",
NewParams("ara", true, true, DefaultChainConfig(), DefaultMinGasMultiplier, 2929, 1884, 1344),
NewParams("ara", true, true, DefaultChainConfig(), 2929, 1884, 1344),
false,
},
{
@@ -46,11 +45,6 @@ func TestParamsValidate(t *testing.T) {
},
true,
},
{
"invalid min gas multplier",
NewParams("ara", true, true, DefaultChainConfig(), sdk.NewDec(2), 2929, 1884, 1344),
true,
},
}
for _, tc := range testCases {
@@ -65,7 +59,7 @@ func TestParamsValidate(t *testing.T) {
}
func TestParamsEIPs(t *testing.T) {
params := NewParams("ara", true, true, DefaultChainConfig(), DefaultMinGasMultiplier, 2929, 1884, 1344)
params := NewParams("ara", true, true, DefaultChainConfig(), 2929, 1884, 1344)
actual := params.EIPs()
require.Equal(t, []int([]int{2929, 1884, 1344}), actual)
@@ -78,7 +72,6 @@ func TestParamsValidatePriv(t *testing.T) {
require.NoError(t, validateBool(true))
require.Error(t, validateEIPs(""))
require.NoError(t, validateEIPs([]int64{1884}))
require.Error(t, validateMinGasMultiplier(sdk.NewDec(-5)))
}
func TestValidateChainConfig(t *testing.T) {