From 419ce913d1d67144ac2dcad8d2469ea8ef2f6eb3 Mon Sep 17 00:00:00 2001 From: Anh Minh <1phamminh0811@gmail.com> Date: Mon, 24 Jun 2024 11:13:04 +0700 Subject: [PATCH 01/71] Add tax2gas module and move all handle fees logic to tax2gas module --- custom/auth/ante/ante.go | 4 +- custom/auth/ante/fee_test.go | 30 +- custom/auth/tx/service.go | 3 +- custom/wasm/keeper/handler_plugin.go | 2 +- proto/terra/tax2gas/v1beta1/genesis.proto | 16 + proto/terra/tax2gas/v1beta1/query.proto | 19 + proto/terra/tax2gas/v1beta1/tx.proto | 18 + scripts/protocgen.sh | 5 +- {custom/auth => x/tax2gas}/ante/fee.go | 18 +- .../auth => x/tax2gas}/ante/fee_burntax.go | 0 {custom/auth => x/tax2gas}/ante/fee_tax.go | 5 +- x/tax2gas/client/cli/query.go | 60 ++ x/tax2gas/client/cli/tx.go | 54 ++ x/tax2gas/keeper/keeper.go | 53 ++ x/tax2gas/module.go | 121 ++++ x/tax2gas/types/codec.go | 39 ++ x/tax2gas/types/errors.go | 1 + x/tax2gas/types/events.go | 5 + x/tax2gas/types/expected_keeper.go | 25 + x/tax2gas/types/genesis.go | 17 + x/tax2gas/types/genesis.pb.go | 448 +++++++++++++++ x/tax2gas/types/keys.go | 14 + x/tax2gas/types/msgs.go | 35 ++ x/tax2gas/types/params.go | 36 ++ x/tax2gas/types/query.pb.go | 532 ++++++++++++++++++ x/tax2gas/types/query.pb.gw.go | 153 +++++ x/tax2gas/types/tx.pb.go | 528 +++++++++++++++++ 27 files changed, 2209 insertions(+), 32 deletions(-) create mode 100644 proto/terra/tax2gas/v1beta1/genesis.proto create mode 100644 proto/terra/tax2gas/v1beta1/query.proto create mode 100644 proto/terra/tax2gas/v1beta1/tx.proto rename {custom/auth => x/tax2gas}/ante/fee.go (90%) rename {custom/auth => x/tax2gas}/ante/fee_burntax.go (100%) rename {custom/auth => x/tax2gas}/ante/fee_tax.go (92%) create mode 100644 x/tax2gas/client/cli/query.go create mode 100644 x/tax2gas/client/cli/tx.go create mode 100644 x/tax2gas/keeper/keeper.go create mode 100644 x/tax2gas/module.go create mode 100644 x/tax2gas/types/codec.go create mode 100644 x/tax2gas/types/errors.go create mode 100644 x/tax2gas/types/events.go create mode 100644 x/tax2gas/types/expected_keeper.go create mode 100644 x/tax2gas/types/genesis.go create mode 100644 x/tax2gas/types/genesis.pb.go create mode 100644 x/tax2gas/types/keys.go create mode 100644 x/tax2gas/types/msgs.go create mode 100644 x/tax2gas/types/params.go create mode 100644 x/tax2gas/types/query.pb.go create mode 100644 x/tax2gas/types/query.pb.gw.go create mode 100644 x/tax2gas/types/tx.pb.go diff --git a/custom/auth/ante/ante.go b/custom/auth/ante/ante.go index 7dabfce5a..b28fbeac6 100644 --- a/custom/auth/ante/ante.go +++ b/custom/auth/ante/ante.go @@ -12,6 +12,8 @@ import ( dyncommante "github.com/classic-terra/core/v3/x/dyncomm/ante" dyncommkeeper "github.com/classic-terra/core/v3/x/dyncomm/keeper" + tax2gasante "github.com/classic-terra/core/v3/x/tax2gas/ante" + "github.com/cosmos/cosmos-sdk/codec" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" ibcante "github.com/cosmos/ibc-go/v7/modules/core/ante" @@ -88,7 +90,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { // MinInitialDepositDecorator prevents submitting governance proposal low initial deposit NewMinInitialDepositDecorator(options.GovKeeper, options.TreasuryKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - NewFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TreasuryKeeper), + tax2gasante.NewFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TreasuryKeeper), dyncommante.NewDyncommDecorator(options.Cdc, options.DyncommKeeper, options.StakingKeeper), // Do not add any other decorators below this point unless explicitly explain. diff --git a/custom/auth/ante/fee_test.go b/custom/auth/ante/fee_test.go index 50dcc8c4c..529f89d5f 100644 --- a/custom/auth/ante/fee_test.go +++ b/custom/auth/ante/fee_test.go @@ -18,17 +18,17 @@ import ( wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - "github.com/classic-terra/core/v3/custom/auth/ante" core "github.com/classic-terra/core/v3/types" markettypes "github.com/classic-terra/core/v3/x/market/types" oracletypes "github.com/classic-terra/core/v3/x/oracle/types" + tax2gasante "github.com/classic-terra/core/v3/x/tax2gas/ante" ) func (s *AnteTestSuite) TestDeductFeeDecorator_ZeroGas() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(mfd) // keys and addresses @@ -62,7 +62,7 @@ func (s *AnteTestSuite) TestEnsureMempoolFees() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(mfd) // keys and addresses @@ -146,7 +146,7 @@ func (s *AnteTestSuite) TestDeductFees() { err = testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) s.Require().NoError(err) - dfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + dfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(dfd) _, err = antehandler(s.ctx, tx, false) @@ -167,7 +167,7 @@ func (s *AnteTestSuite) TestEnsureMempoolFeesSend() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(mfd) // keys and addresses @@ -221,7 +221,7 @@ func (s *AnteTestSuite) TestEnsureMempoolFeesSwapSend() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(mfd) // keys and addresses @@ -274,7 +274,7 @@ func (s *AnteTestSuite) TestEnsureMempoolFeesMultiSend() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(mfd) // keys and addresses @@ -341,7 +341,7 @@ func (s *AnteTestSuite) TestEnsureMempoolFeesInstantiateContract() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(mfd) // keys and addresses @@ -400,7 +400,7 @@ func (s *AnteTestSuite) TestEnsureMempoolFeesExecuteContract() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(mfd) // keys and addresses @@ -458,7 +458,7 @@ func (s *AnteTestSuite) TestEnsureMempoolFeesAuthzExec() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(mfd) // keys and addresses @@ -697,7 +697,7 @@ func (s *AnteTestSuite) TestTaxExemption() { tk.AddBurnTaxExemptionAddress(s.ctx, addrs[0].String()) tk.AddBurnTaxExemptionAddress(s.ctx, addrs[1].String()) - mfd := ante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) + mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) antehandler := sdk.ChainAnteDecorators(mfd) for i := 0; i < 4; i++ { @@ -747,7 +747,7 @@ func (s *AnteTestSuite) runBurnSplitTaxTest(burnSplitRate sdk.Dec) { ak := s.app.AccountKeeper bk := s.app.BankKeeper tk := s.app.TreasuryKeeper - mfd := ante.NewFeeDecorator(ak, bk, s.app.FeeGrantKeeper, tk) + mfd := tax2gasante.NewFeeDecorator(ak, bk, s.app.FeeGrantKeeper, tk) antehandler := sdk.ChainAnteDecorators(mfd) // Set burn split tax @@ -804,7 +804,7 @@ func (s *AnteTestSuite) runBurnSplitTaxTest(burnSplitRate sdk.Dec) { tk.BurnCoinsFromBurnAccount(s.ctx) feeCollectorAfter := sdk.NewDecCoinsFromCoins(bk.GetAllBalances(s.ctx, ak.GetModuleAddress(authtypes.FeeCollectorName))...) - taxes := ante.FilterMsgAndComputeTax(s.ctx, tk, msg) + taxes := tax2gasante.FilterMsgAndComputeTax(s.ctx, tk, msg) burnTax := sdk.NewDecCoinsFromCoins(taxes...) if burnSplitRate.IsPositive() { @@ -839,7 +839,7 @@ func (s *AnteTestSuite) TestEnsureIBCUntaxed() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator( + mfd := tax2gasante.NewFeeDecorator( s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, @@ -888,7 +888,7 @@ func (s *AnteTestSuite) TestOracleZeroFee() { s.SetupTest(true) // setup s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - mfd := ante.NewFeeDecorator( + mfd := tax2gasante.NewFeeDecorator( s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, diff --git a/custom/auth/tx/service.go b/custom/auth/tx/service.go index 63710d04e..4338bbba9 100644 --- a/custom/auth/tx/service.go +++ b/custom/auth/tx/service.go @@ -9,6 +9,7 @@ import ( "google.golang.org/grpc/status" customante "github.com/classic-terra/core/v3/custom/auth/ante" + tax2gasante "github.com/classic-terra/core/v3/x/tax2gas/ante" "github.com/cosmos/cosmos-sdk/client" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -52,7 +53,7 @@ func (ts txServer) ComputeTax(c context.Context, req *ComputeTaxRequest) (*Compu return nil, status.Errorf(codes.InvalidArgument, "empty txBytes is not allowed") } - taxAmount := customante.FilterMsgAndComputeTax(ctx, ts.treasuryKeeper, msgs...) + taxAmount := tax2gasante.FilterMsgAndComputeTax(ctx, ts.treasuryKeeper, msgs...) return &ComputeTaxResponse{ TaxAmount: taxAmount, }, nil diff --git a/custom/wasm/keeper/handler_plugin.go b/custom/wasm/keeper/handler_plugin.go index f3a24801b..3db8e9a00 100644 --- a/custom/wasm/keeper/handler_plugin.go +++ b/custom/wasm/keeper/handler_plugin.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/classic-terra/core/v3/custom/auth/ante" + "github.com/classic-terra/core/v3/x/tax2gas/ante" treasurykeeper "github.com/classic-terra/core/v3/x/treasury/keeper" wasmvmtypes "github.com/CosmWasm/wasmvm/types" diff --git a/proto/terra/tax2gas/v1beta1/genesis.proto b/proto/terra/tax2gas/v1beta1/genesis.proto new file mode 100644 index 000000000..8cb3703fe --- /dev/null +++ b/proto/terra/tax2gas/v1beta1/genesis.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; +package terra.tax2gas.v1beta1; + +import "gogoproto/gogo.proto"; +import "google/protobuf/any.proto"; +import "cosmos_proto/cosmos.proto"; + +option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; + +message Params {} + +// GenesisState defines the tax2gas module's genesis state. +message GenesisState { + // params is the container of tax2gas parameters. + Params params = 1 [ (gogoproto.nullable) = false ]; +} \ No newline at end of file diff --git a/proto/terra/tax2gas/v1beta1/query.proto b/proto/terra/tax2gas/v1beta1/query.proto new file mode 100644 index 000000000..6fa3165b5 --- /dev/null +++ b/proto/terra/tax2gas/v1beta1/query.proto @@ -0,0 +1,19 @@ +syntax = "proto3"; +package terra.tax2gas.v1beta1; + +import "gogoproto/gogo.proto"; +import "google/api/annotations.proto"; +import "terra/tax2gas/v1beta1/genesis.proto"; +import "terra/tax2gas/v1beta1/tx.proto"; + +option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; + +service Query { + rpc Params(ParamsRequest) returns (ParamsResponse) { + option (google.api.http).get = "/terra/tax2gas/Params"; + } +} + +//=============================== Params +message ParamsRequest {} +message ParamsResponse { Params params = 1 [ (gogoproto.nullable) = false ]; } \ No newline at end of file diff --git a/proto/terra/tax2gas/v1beta1/tx.proto b/proto/terra/tax2gas/v1beta1/tx.proto new file mode 100644 index 000000000..49fd5d14e --- /dev/null +++ b/proto/terra/tax2gas/v1beta1/tx.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; +package terra.tax2gas.v1beta1; + +import "gogoproto/gogo.proto"; +import "cosmos/base/v1beta1/coin.proto"; + +option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; + +service Msg { + rpc Test(MsgTest) returns (MsgTestResponse); +} + +// ===================== MsgTest +message MsgTest { + string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ]; +} + +message MsgTestResponse {} \ No newline at end of file diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index bfcae1a32..8d0a493b8 100755 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -1,9 +1,6 @@ #!/usr/bin/env sh -set -eo pipefail - -# get protoc executions -go get github.com/regen-network/cosmos-proto/protoc-gen-gocosmos 2>/dev/null +set -eux pipefail echo "Generating gogo proto code" cd proto diff --git a/custom/auth/ante/fee.go b/x/tax2gas/ante/fee.go similarity index 90% rename from custom/auth/ante/fee.go rename to x/tax2gas/ante/fee.go index 44acc1f4b..5408cd38e 100644 --- a/custom/auth/ante/fee.go +++ b/x/tax2gas/ante/fee.go @@ -8,7 +8,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/ante" - "github.com/cosmos/cosmos-sdk/x/auth/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + + "github.com/classic-terra/core/v3/x/tax2gas/types" ) // FeeDecorator deducts fees from the first signer of the tx @@ -17,12 +19,12 @@ import ( // CONTRACT: Tx must implement FeeTx interface to use DeductFeeDecorator type FeeDecorator struct { accountKeeper ante.AccountKeeper - bankKeeper BankKeeper + bankKeeper types.BankKeeper feegrantKeeper ante.FeegrantKeeper - treasuryKeeper TreasuryKeeper + treasuryKeeper types.TreasuryKeeper } -func NewFeeDecorator(ak ante.AccountKeeper, bk BankKeeper, fk ante.FeegrantKeeper, tk TreasuryKeeper) FeeDecorator { +func NewFeeDecorator(ak ante.AccountKeeper, bk types.BankKeeper, fk ante.FeegrantKeeper, tk types.TreasuryKeeper) FeeDecorator { return FeeDecorator{ accountKeeper: ak, bankKeeper: bk, @@ -67,8 +69,8 @@ func (fd FeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, nex } func (fd FeeDecorator) checkDeductFee(ctx sdk.Context, feeTx sdk.FeeTx, taxes sdk.Coins, simulate bool) error { - if addr := fd.accountKeeper.GetModuleAddress(types.FeeCollectorName); addr == nil { - return fmt.Errorf("fee collector module account (%s) has not been set", types.FeeCollectorName) + if addr := fd.accountKeeper.GetModuleAddress(authtypes.FeeCollectorName); addr == nil { + return fmt.Errorf("fee collector module account (%s) has not been set", authtypes.FeeCollectorName) } fee := feeTx.GetFee() @@ -127,12 +129,12 @@ func (fd FeeDecorator) checkDeductFee(ctx sdk.Context, feeTx sdk.FeeTx, taxes sd } // DeductFees deducts fees from the given account. -func DeductFees(bankKeeper types.BankKeeper, ctx sdk.Context, acc types.AccountI, fees sdk.Coins) error { +func DeductFees(bankKeeper authtypes.BankKeeper, ctx sdk.Context, acc authtypes.AccountI, fees sdk.Coins) error { if !fees.IsValid() { return errorsmod.Wrapf(sdkerrors.ErrInsufficientFee, "invalid fee amount: %s", fees) } - err := bankKeeper.SendCoinsFromAccountToModule(ctx, acc.GetAddress(), types.FeeCollectorName, fees) + err := bankKeeper.SendCoinsFromAccountToModule(ctx, acc.GetAddress(), authtypes.FeeCollectorName, fees) if err != nil { return errorsmod.Wrapf(sdkerrors.ErrInsufficientFunds, err.Error()) } diff --git a/custom/auth/ante/fee_burntax.go b/x/tax2gas/ante/fee_burntax.go similarity index 100% rename from custom/auth/ante/fee_burntax.go rename to x/tax2gas/ante/fee_burntax.go diff --git a/custom/auth/ante/fee_tax.go b/x/tax2gas/ante/fee_tax.go similarity index 92% rename from custom/auth/ante/fee_tax.go rename to x/tax2gas/ante/fee_tax.go index 96a0e48d6..9493a1c91 100644 --- a/custom/auth/ante/fee_tax.go +++ b/x/tax2gas/ante/fee_tax.go @@ -11,6 +11,7 @@ import ( marketexported "github.com/classic-terra/core/v3/x/market/exported" oracleexported "github.com/classic-terra/core/v3/x/oracle/exported" + "github.com/classic-terra/core/v3/x/tax2gas/types" ) var IBCRegexp = regexp.MustCompile("^ibc/[a-fA-F0-9]{64}$") @@ -20,7 +21,7 @@ func isIBCDenom(denom string) bool { } // FilterMsgAndComputeTax computes the stability tax on messages. -func FilterMsgAndComputeTax(ctx sdk.Context, tk TreasuryKeeper, msgs ...sdk.Msg) sdk.Coins { +func FilterMsgAndComputeTax(ctx sdk.Context, tk types.TreasuryKeeper, msgs ...sdk.Msg) sdk.Coins { taxes := sdk.Coins{} for _, msg := range msgs { @@ -77,7 +78,7 @@ func FilterMsgAndComputeTax(ctx sdk.Context, tk TreasuryKeeper, msgs ...sdk.Msg) } // computes the stability tax according to tax-rate and tax-cap -func computeTax(ctx sdk.Context, tk TreasuryKeeper, principal sdk.Coins) sdk.Coins { +func computeTax(ctx sdk.Context, tk types.TreasuryKeeper, principal sdk.Coins) sdk.Coins { taxRate := tk.GetTaxRate(ctx) if taxRate.Equal(sdk.ZeroDec()) { return sdk.Coins{} diff --git a/x/tax2gas/client/cli/query.go b/x/tax2gas/client/cli/query.go new file mode 100644 index 000000000..72cd15999 --- /dev/null +++ b/x/tax2gas/client/cli/query.go @@ -0,0 +1,60 @@ +package cli + +import ( + "context" + "fmt" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + + "github.com/classic-terra/core/v3/x/tax2gas/types" +) + +// GetQueryCmd returns the cli query commands for this module +func GetQueryCmd() *cobra.Command { + tax2gasQueryCmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + tax2gasQueryCmd.AddCommand( + GetCmdQueryParams(), + ) + + return tax2gasQueryCmd +} + + +// GetCmdQueryParams implements a command to return the current parameters. +func GetCmdQueryParams() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Short: "Query the current tax2gas module parameters", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, _ []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + params := &types.ParamsRequest{} + + res, err := queryClient.Params(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(&res.Params) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/tax2gas/client/cli/tx.go b/x/tax2gas/client/cli/tx.go new file mode 100644 index 000000000..54b4f697b --- /dev/null +++ b/x/tax2gas/client/cli/tx.go @@ -0,0 +1,54 @@ +package cli + +import ( + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + + "github.com/classic-terra/core/v3/x/tax2gas/types" +) + +// NewTxCmd returns a root CLI command handler for certain modules transaction commands. +func NewTxCmd() *cobra.Command { + txCmd := &cobra.Command{ + Use: types.ModuleName, + Short: "tax2gas subcommands", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + txCmd.AddCommand() + return txCmd +} + +// NewCmdTest broadcasts a Test message. +func NewCmdTest() *cobra.Command { + cmd := &cobra.Command{ + Use: "test [flags]", + Short: "test command", + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + sender := clientCtx.GetFromAddress() + + msg := &types.MsgTest{ + Sender: sender.String(), + } + + if err := msg.ValidateBasic(); err != nil { + return err + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + return cmd +} diff --git a/x/tax2gas/keeper/keeper.go b/x/tax2gas/keeper/keeper.go new file mode 100644 index 000000000..d1643a515 --- /dev/null +++ b/x/tax2gas/keeper/keeper.go @@ -0,0 +1,53 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + + "github.com/classic-terra/core/v3/x/tax2gas/types" +) + + +type Keeper struct { + storeKey storetypes.StoreKey + + paramSpace paramtypes.Subspace +} + +func NewKeeper(storeKey storetypes.StoreKey, paramSpace paramtypes.Subspace) *Keeper { + // set KeyTable if it has not already been set + if !paramSpace.HasKeyTable() { + paramSpace = paramSpace.WithKeyTable(types.ParamKeyTable()) + } + + return &Keeper{storeKey: storeKey, paramSpace: paramSpace} +} + +// GetParams returns the total set of testmodule parameters. +func (k Keeper) GetParams(ctx sdk.Context) (params types.Params) { + k.paramSpace.GetParamSet(ctx, ¶ms) + return params +} + +// SetParams sets the total set of testmodule parameters. +func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { + k.paramSpace.SetParamSet(ctx, ¶ms) +} + +// InitGenesis initializes the testmodule module's state from a provided genesis +// state. +func (k Keeper) InitGenesis(ctx sdk.Context, genState *types.GenesisState) { + if err := genState.Validate(); err != nil { + panic(err) + } + + k.SetParams(ctx, genState.Params) +} + +// ExportGenesis returns the testmodule module's exported genesis. +func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState { + return &types.GenesisState{ + Params: k.GetParams(ctx), + } +} diff --git a/x/tax2gas/module.go b/x/tax2gas/module.go new file mode 100644 index 000000000..e7c6e045a --- /dev/null +++ b/x/tax2gas/module.go @@ -0,0 +1,121 @@ +package module + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" + abci "github.com/cometbft/cometbft/abci/types" + + "github.com/classic-terra/core/v3/x/tax2gas/client/cli" + "github.com/classic-terra/core/v3/x/tax2gas/keeper" + "github.com/classic-terra/core/v3/x/tax2gas/types" +) + +var ( + _ module.AppModule = AppModule{} + _ module.AppModuleBasic = AppModuleBasic{} +) + +type AppModuleBasic struct{} + +func (AppModuleBasic) Name() string { return types.ModuleName } + +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + types.RegisterLegacyAminoCodec(cdc) +} + +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { + return cdc.MustMarshalJSON(types.DefaultGenesis()) +} + +// ValidateGenesis performs genesis state validation for the testmodule module. +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { + var genState types.GenesisState + if err := cdc.UnmarshalJSON(bz, &genState); err != nil { + return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) + } + return genState.Validate() +} + +// --------------------------------------- +// Interfaces. +func (b AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { + if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil { + panic(err) + } +} + +func (b AppModuleBasic) GetTxCmd() *cobra.Command { + return cli.NewTxCmd() +} + +func (b AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd() +} + +// RegisterInterfaces registers interfaces and implementations of the testmodule module. +func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) { + types.RegisterInterfaces(registry) +} + +type AppModule struct { + AppModuleBasic + + k keeper.Keeper +} + +func (am AppModule) RegisterServices(cfg module.Configurator) { + // types.RegisterMsgServer(cfg.MsgServer(), testmodule.NewMsgServerImpl(&am.k)) + // queryproto.RegisterQueryServer(cfg.QueryServer(), grpc.Querier{Q: module.NewQuerier(am.k)}) +} + + +func NewAppModule(testmoduleKeeper keeper.Keeper) AppModule { + return AppModule{ + AppModuleBasic: AppModuleBasic{}, + k: testmoduleKeeper, + } +} + +func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { +} + +// QuerierRoute returns the testmodule module's querier route name. +func (AppModule) QuerierRoute() string { return types.RouterKey } + +// InitGenesis performs genesis initialization for the testmodule module. +// no validator updates. +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate { + var genesisState types.GenesisState + + cdc.MustUnmarshalJSON(gs, &genesisState) + + am.k.InitGenesis(ctx, &genesisState) + return []abci.ValidatorUpdate{} +} + +// ExportGenesis returns the exported genesis state as raw bytes for the testmodule. +// module. +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { + genState := am.k.ExportGenesis(ctx) + return cdc.MustMarshalJSON(genState) +} + +// BeginBlock performs TODO. +func (AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} + +// EndBlock performs TODO. +func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { + return []abci.ValidatorUpdate{} +} + +// ConsensusVersion implements AppModule/ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return 1 } diff --git a/x/tax2gas/types/codec.go b/x/tax2gas/types/codec.go new file mode 100644 index 000000000..3c3402be6 --- /dev/null +++ b/x/tax2gas/types/codec.go @@ -0,0 +1,39 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" + authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec" +) + +// RegisterLegacyAminoCodec registers the necessary x/tax2gas interfaces and concrete types +// on the provided LegacyAmino codec. These types are used for Amino JSON serialization. +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&MsgTest{}, "tax2gas/MsgTest", nil) +} + +func RegisterInterfaces(registry types.InterfaceRegistry) { + registry.RegisterImplementations( + (*sdk.Msg)(nil), + &MsgTest{}, + ) + + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} + +var ( + amino = codec.NewLegacyAmino() + ModuleCdc = codec.NewAminoCodec(amino) +) + +func init() { + RegisterLegacyAminoCodec(amino) + // Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be + // used to properly serialize MsgGrant and MsgExec instances + sdk.RegisterLegacyAminoCodec(amino) + RegisterLegacyAminoCodec(authzcodec.Amino) + + amino.Seal() +} diff --git a/x/tax2gas/types/errors.go b/x/tax2gas/types/errors.go new file mode 100644 index 000000000..ab1254f4c --- /dev/null +++ b/x/tax2gas/types/errors.go @@ -0,0 +1 @@ +package types diff --git a/x/tax2gas/types/events.go b/x/tax2gas/types/events.go new file mode 100644 index 000000000..885a885a7 --- /dev/null +++ b/x/tax2gas/types/events.go @@ -0,0 +1,5 @@ +package types + +const ( + AttributeValueCategory = ModuleName +) diff --git a/x/tax2gas/types/expected_keeper.go b/x/tax2gas/types/expected_keeper.go new file mode 100644 index 000000000..945b25a72 --- /dev/null +++ b/x/tax2gas/types/expected_keeper.go @@ -0,0 +1,25 @@ +package types + +import ( + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// TreasuryKeeper for tax charging & recording +type TreasuryKeeper interface { + RecordEpochTaxProceeds(ctx sdk.Context, delta sdk.Coins) + GetTaxRate(ctx sdk.Context) (taxRate sdk.Dec) + GetTaxCap(ctx sdk.Context, denom string) (taxCap math.Int) + GetBurnSplitRate(ctx sdk.Context) sdk.Dec + HasBurnTaxExemptionAddress(ctx sdk.Context, addresses ...string) bool + HasBurnTaxExemptionContract(ctx sdk.Context, address string) bool + GetMinInitialDepositRatio(ctx sdk.Context) sdk.Dec +} + +// BankKeeper defines the contract needed for supply related APIs (noalias) +type BankKeeper interface { + IsSendEnabledCoins(ctx sdk.Context, coins ...sdk.Coin) error + SendCoins(ctx sdk.Context, from, to sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error +} diff --git a/x/tax2gas/types/genesis.go b/x/tax2gas/types/genesis.go new file mode 100644 index 000000000..964a1a3ea --- /dev/null +++ b/x/tax2gas/types/genesis.go @@ -0,0 +1,17 @@ +package types + +// DefaultGenesis returns the default tax2gas genesis state. +func DefaultGenesis() *GenesisState { + return &GenesisState{ + Params: DefaultParams(), + } +} + +// Validate performs basic genesis state validation returning an error upon any +// failure. +func (gs GenesisState) Validate() error { + if err := gs.Params.Validate(); err != nil { + return err + } + return nil +} diff --git a/x/tax2gas/types/genesis.pb.go b/x/tax2gas/types/genesis.pb.go new file mode 100644 index 000000000..5a47d4eb0 --- /dev/null +++ b/x/tax2gas/types/genesis.pb.go @@ -0,0 +1,448 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: terra/tax2gas/v1beta1/genesis.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/codec/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type Params struct { +} + +func (m *Params) Reset() { *m = Params{} } +func (m *Params) String() string { return proto.CompactTextString(m) } +func (*Params) ProtoMessage() {} +func (*Params) Descriptor() ([]byte, []int) { + return fileDescriptor_589c4ef0e5113034, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Params.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +// GenesisState defines the tax2gas module's genesis state. +type GenesisState struct { + // params is the container of tax2gas parameters. + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_589c4ef0e5113034, []int{1} +} +func (m *GenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) +} +func (m *GenesisState) XXX_Size() int { + return m.Size() +} +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_GenesisState proto.InternalMessageInfo + +func (m *GenesisState) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func init() { + proto.RegisterType((*Params)(nil), "terra.tax2gas.v1beta1.Params") + proto.RegisterType((*GenesisState)(nil), "terra.tax2gas.v1beta1.GenesisState") +} + +func init() { + proto.RegisterFile("terra/tax2gas/v1beta1/genesis.proto", fileDescriptor_589c4ef0e5113034) +} + +var fileDescriptor_589c4ef0e5113034 = []byte{ + // 241 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2e, 0x49, 0x2d, 0x2a, + 0x4a, 0xd4, 0x2f, 0x49, 0xac, 0x30, 0x4a, 0x4f, 0x2c, 0xd6, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, + 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, + 0x12, 0x05, 0x2b, 0xd2, 0x83, 0x2a, 0xd2, 0x83, 0x2a, 0x92, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, + 0xab, 0xd0, 0x07, 0xb1, 0x20, 0x8a, 0xa5, 0x24, 0xd3, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0xc1, + 0xbc, 0xa4, 0xd2, 0x34, 0xfd, 0xc4, 0xbc, 0x4a, 0x98, 0x54, 0x72, 0x7e, 0x71, 0x6e, 0x7e, 0x71, + 0x3c, 0x44, 0x0f, 0x84, 0x03, 0x91, 0x52, 0xe2, 0xe0, 0x62, 0x0b, 0x48, 0x2c, 0x4a, 0xcc, 0x2d, + 0x56, 0xf2, 0xe6, 0xe2, 0x71, 0x87, 0xd8, 0x1e, 0x5c, 0x92, 0x58, 0x92, 0x2a, 0x64, 0xcd, 0xc5, + 0x56, 0x00, 0x96, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x36, 0x92, 0xd5, 0xc3, 0xea, 0x1a, 0x3d, + 0x88, 0x76, 0x27, 0x96, 0x13, 0xf7, 0xe4, 0x19, 0x82, 0xa0, 0x5a, 0x9c, 0xbc, 0x4e, 0x3c, 0x92, + 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, + 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x20, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, + 0x39, 0x3f, 0x57, 0x3f, 0x39, 0x27, 0xb1, 0xb8, 0x38, 0x33, 0x59, 0x17, 0x12, 0x16, 0xc9, 0xf9, + 0x45, 0xa9, 0xfa, 0x65, 0xc6, 0xfa, 0x15, 0xf0, 0x50, 0x29, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, + 0x03, 0xbb, 0xd4, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x82, 0x3b, 0x6e, 0x5a, 0x33, 0x01, 0x00, + 0x00, +} + +func (m *Params) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *GenesisState) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + return n +} + +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Params) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GenesisState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenesis(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenesis + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenesis + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenesis + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tax2gas/types/keys.go b/x/tax2gas/types/keys.go new file mode 100644 index 000000000..6d701815b --- /dev/null +++ b/x/tax2gas/types/keys.go @@ -0,0 +1,14 @@ +package types + +const ( + ModuleName = "tax2gas" + + StoreKey = ModuleName + + RouterKey = ModuleName +) + +var ( + // Key defines the store key for tax2gas. + Key = []byte{0x01} +) diff --git a/x/tax2gas/types/msgs.go b/x/tax2gas/types/msgs.go new file mode 100644 index 000000000..53f1703ab --- /dev/null +++ b/x/tax2gas/types/msgs.go @@ -0,0 +1,35 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +const ( + TypeMsgTest = "test" +) + +var _ sdk.Msg = &MsgTest{} + +func (msg MsgTest) Route() string { return ModuleName } +func (msg MsgTest) Type() string { return TypeMsgTest } +func (msg MsgTest) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) + } + + return nil +} + +func (msg MsgTest) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +func (msg MsgTest) GetSigners() []sdk.AccAddress { + sender, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + panic(err) + } + return []sdk.AccAddress{sender} +} diff --git a/x/tax2gas/types/params.go b/x/tax2gas/types/params.go new file mode 100644 index 000000000..9d11dd3f4 --- /dev/null +++ b/x/tax2gas/types/params.go @@ -0,0 +1,36 @@ +package types + +import ( + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" +) + +// Parameter store keys. +var ( + KeyParamField = []byte("TODO: CHANGE ME") +) + +// ParamTable for tax2gas module. +func ParamKeyTable() paramtypes.KeyTable { + return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) +} + +func NewParams() Params { + return Params{} +} + +// DefaultParams are the default tax2gas module parameters. +func DefaultParams() Params { + return Params{} +} + +// Validate validates params. +func (p Params) Validate() error { + return nil +} + +// Implements params.ParamSet. +func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { + return paramtypes.ParamSetPairs{ + // paramtypes.NewParamSetPair(KeyParamField, &p.Field, validateFn), + } +} diff --git a/x/tax2gas/types/query.pb.go b/x/tax2gas/types/query.pb.go new file mode 100644 index 000000000..702fa660f --- /dev/null +++ b/x/tax2gas/types/query.pb.go @@ -0,0 +1,532 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: terra/tax2gas/v1beta1/query.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// =============================== Params +type ParamsRequest struct { +} + +func (m *ParamsRequest) Reset() { *m = ParamsRequest{} } +func (m *ParamsRequest) String() string { return proto.CompactTextString(m) } +func (*ParamsRequest) ProtoMessage() {} +func (*ParamsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_bfce3f3a760d419d, []int{0} +} +func (m *ParamsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ParamsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ParamsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ParamsRequest.Merge(m, src) +} +func (m *ParamsRequest) XXX_Size() int { + return m.Size() +} +func (m *ParamsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ParamsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ParamsRequest proto.InternalMessageInfo + +type ParamsResponse struct { + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *ParamsResponse) Reset() { *m = ParamsResponse{} } +func (m *ParamsResponse) String() string { return proto.CompactTextString(m) } +func (*ParamsResponse) ProtoMessage() {} +func (*ParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_bfce3f3a760d419d, []int{1} +} +func (m *ParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ParamsResponse.Merge(m, src) +} +func (m *ParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *ParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ParamsResponse proto.InternalMessageInfo + +func (m *ParamsResponse) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func init() { + proto.RegisterType((*ParamsRequest)(nil), "terra.tax2gas.v1beta1.ParamsRequest") + proto.RegisterType((*ParamsResponse)(nil), "terra.tax2gas.v1beta1.ParamsResponse") +} + +func init() { proto.RegisterFile("terra/tax2gas/v1beta1/query.proto", fileDescriptor_bfce3f3a760d419d) } + +var fileDescriptor_bfce3f3a760d419d = []byte{ + // 298 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xb1, 0x4b, 0xc3, 0x40, + 0x14, 0xc6, 0x13, 0xd1, 0x0e, 0x27, 0x2a, 0x04, 0x8b, 0x52, 0xec, 0xa9, 0x55, 0xc1, 0xc5, 0x3b, + 0x9b, 0x8e, 0x6e, 0x8e, 0x82, 0xa0, 0x1d, 0xdd, 0x2e, 0xe1, 0x38, 0x03, 0x6d, 0x5e, 0x7a, 0xf7, + 0x52, 0xd2, 0xc1, 0xc5, 0xbf, 0x40, 0xf0, 0x9f, 0xea, 0x58, 0x70, 0x71, 0x12, 0x49, 0xfc, 0x43, + 0xa4, 0xb9, 0xab, 0x20, 0x04, 0xdd, 0x8e, 0xf7, 0x7e, 0xdf, 0x77, 0xdf, 0xf7, 0xc8, 0x31, 0x4a, + 0xad, 0x05, 0x47, 0x51, 0x84, 0x4a, 0x18, 0x3e, 0xed, 0x47, 0x12, 0x45, 0x9f, 0x4f, 0x72, 0xa9, + 0x67, 0x2c, 0xd3, 0x80, 0x10, 0xb4, 0x6b, 0x84, 0x39, 0x84, 0x39, 0xa4, 0xb3, 0xab, 0x40, 0x41, + 0x4d, 0xf0, 0xe5, 0xcb, 0xc2, 0x9d, 0x03, 0x05, 0xa0, 0x46, 0x92, 0x8b, 0x2c, 0xe1, 0x22, 0x4d, + 0x01, 0x05, 0x26, 0x90, 0x1a, 0xb7, 0x3d, 0x69, 0xfe, 0x4d, 0xc9, 0x54, 0x9a, 0x64, 0x05, 0xd1, + 0x66, 0x08, 0x0b, 0xbb, 0xef, 0xed, 0x90, 0xad, 0x3b, 0xa1, 0xc5, 0xd8, 0x0c, 0xe5, 0x24, 0x97, + 0x06, 0x7b, 0xb7, 0x64, 0x7b, 0x35, 0x30, 0x19, 0xa4, 0x46, 0x06, 0x57, 0xa4, 0x95, 0xd5, 0x93, + 0x7d, 0xff, 0xc8, 0x3f, 0xdf, 0x0c, 0xbb, 0xac, 0xb1, 0x03, 0xb3, 0xb2, 0xeb, 0xf5, 0xf9, 0xc7, + 0xa1, 0x37, 0x74, 0x92, 0xf0, 0x89, 0x6c, 0xdc, 0x2f, 0xeb, 0x07, 0x48, 0x5a, 0x16, 0x08, 0x4e, + 0xff, 0xd4, 0xbb, 0x1c, 0x9d, 0xb3, 0x7f, 0x28, 0x1b, 0xae, 0xd7, 0x7d, 0x7e, 0xfb, 0x7a, 0x5d, + 0xdb, 0x0b, 0xda, 0xfc, 0x77, 0x51, 0x17, 0xe6, 0x66, 0x5e, 0x52, 0x7f, 0x51, 0x52, 0xff, 0xb3, + 0xa4, 0xfe, 0x4b, 0x45, 0xbd, 0x45, 0x45, 0xbd, 0xf7, 0x8a, 0x7a, 0x0f, 0x97, 0x2a, 0xc1, 0xc7, + 0x3c, 0x62, 0x31, 0x8c, 0x79, 0x3c, 0x12, 0xc6, 0x24, 0xf1, 0x85, 0xb5, 0x88, 0x41, 0x4b, 0x3e, + 0x1d, 0xf0, 0xe2, 0xc7, 0x0c, 0x67, 0x99, 0x34, 0x51, 0xab, 0xbe, 0xd8, 0xe0, 0x3b, 0x00, 0x00, + 0xff, 0xff, 0x96, 0xe7, 0x47, 0xe5, 0xe6, 0x01, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + Params(ctx context.Context, in *ParamsRequest, opts ...grpc.CallOption) (*ParamsResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *ParamsRequest, opts ...grpc.CallOption) (*ParamsResponse, error) { + out := new(ParamsResponse) + err := c.cc.Invoke(ctx, "/terra.tax2gas.v1beta1.Query/Params", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + Params(context.Context, *ParamsRequest) (*ParamsResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Params(ctx context.Context, req *ParamsRequest) (*ParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/terra.tax2gas.v1beta1.Query/Params", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*ParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "terra.tax2gas.v1beta1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "terra/tax2gas/v1beta1/query.proto", +} + +func (m *ParamsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *ParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *ParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *ParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tax2gas/types/query.pb.gw.go b/x/tax2gas/types/query.pb.gw.go new file mode 100644 index 000000000..3214847a9 --- /dev/null +++ b/x/tax2gas/types/query.pb.gw.go @@ -0,0 +1,153 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: terra/tax2gas/v1beta1/query.proto + +/* +Package types is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package types + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ParamsRequest + var metadata runtime.ServerMetadata + + msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ParamsRequest + var metadata runtime.ServerMetadata + + msg, err := server.Params(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". +// UnaryRPC :call QueryServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterQueryHandler(ctx, mux, conn) +} + +// RegisterQueryHandler registers the http handlers for service Query to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) +} + +// RegisterQueryHandlerClient registers the http handlers for service Query +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "QueryClient" to call the correct interceptors. +func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"terra", "tax2gas", "Params"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Query_Params_0 = runtime.ForwardResponseMessage +) diff --git a/x/tax2gas/types/tx.pb.go b/x/tax2gas/types/tx.pb.go new file mode 100644 index 000000000..1abf49490 --- /dev/null +++ b/x/tax2gas/types/tx.pb.go @@ -0,0 +1,528 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: terra/tax2gas/v1beta1/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// ===================== MsgTest +type MsgTest struct { + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` +} + +func (m *MsgTest) Reset() { *m = MsgTest{} } +func (m *MsgTest) String() string { return proto.CompactTextString(m) } +func (*MsgTest) ProtoMessage() {} +func (*MsgTest) Descriptor() ([]byte, []int) { + return fileDescriptor_a20cba19b3d258de, []int{0} +} +func (m *MsgTest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgTest) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTest.Merge(m, src) +} +func (m *MsgTest) XXX_Size() int { + return m.Size() +} +func (m *MsgTest) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTest.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgTest proto.InternalMessageInfo + +func (m *MsgTest) GetSender() string { + if m != nil { + return m.Sender + } + return "" +} + +type MsgTestResponse struct { +} + +func (m *MsgTestResponse) Reset() { *m = MsgTestResponse{} } +func (m *MsgTestResponse) String() string { return proto.CompactTextString(m) } +func (*MsgTestResponse) ProtoMessage() {} +func (*MsgTestResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_a20cba19b3d258de, []int{1} +} +func (m *MsgTestResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTestResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgTestResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTestResponse.Merge(m, src) +} +func (m *MsgTestResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgTestResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTestResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgTestResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgTest)(nil), "terra.tax2gas.v1beta1.MsgTest") + proto.RegisterType((*MsgTestResponse)(nil), "terra.tax2gas.v1beta1.MsgTestResponse") +} + +func init() { proto.RegisterFile("terra/tax2gas/v1beta1/tx.proto", fileDescriptor_a20cba19b3d258de) } + +var fileDescriptor_a20cba19b3d258de = []byte{ + // 258 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2b, 0x49, 0x2d, 0x2a, + 0x4a, 0xd4, 0x2f, 0x49, 0xac, 0x30, 0x4a, 0x4f, 0x2c, 0xd6, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, + 0x34, 0xd4, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x05, 0xcb, 0xeb, 0x41, + 0xe5, 0xf5, 0xa0, 0xf2, 0x52, 0x22, 0xe9, 0xf9, 0xe9, 0xf9, 0x60, 0x15, 0xfa, 0x20, 0x16, 0x44, + 0xb1, 0x94, 0x5c, 0x72, 0x7e, 0x71, 0x6e, 0x7e, 0xb1, 0x7e, 0x52, 0x62, 0x71, 0x2a, 0xdc, 0xa8, + 0xe4, 0xfc, 0xcc, 0x3c, 0x88, 0xbc, 0x92, 0x09, 0x17, 0xbb, 0x6f, 0x71, 0x7a, 0x48, 0x6a, 0x71, + 0x89, 0x90, 0x26, 0x17, 0x5b, 0x71, 0x6a, 0x5e, 0x4a, 0x6a, 0x91, 0x04, 0xa3, 0x02, 0xa3, 0x06, + 0xa7, 0x93, 0xe0, 0xa7, 0x7b, 0xf2, 0xbc, 0x95, 0x89, 0xb9, 0x39, 0x56, 0x4a, 0x10, 0x71, 0xa5, + 0x20, 0xa8, 0x02, 0x25, 0x41, 0x2e, 0x7e, 0xa8, 0xae, 0xa0, 0xd4, 0xe2, 0x82, 0xfc, 0xbc, 0xe2, + 0x54, 0xa3, 0x50, 0x2e, 0x66, 0xdf, 0xe2, 0x74, 0x21, 0x3f, 0x2e, 0x16, 0xb0, 0x61, 0x72, 0x7a, + 0x58, 0x5d, 0xa9, 0x07, 0xd5, 0x26, 0xa5, 0x86, 0x5f, 0x1e, 0x66, 0xac, 0x93, 0xd7, 0x89, 0x47, + 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, + 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa4, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, + 0x25, 0xe7, 0xe7, 0xea, 0x27, 0xe7, 0x24, 0x16, 0x17, 0x67, 0x26, 0xeb, 0x42, 0x42, 0x2e, 0x39, + 0xbf, 0x28, 0x55, 0xbf, 0xcc, 0x58, 0xbf, 0x02, 0x1e, 0x86, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, + 0x6c, 0x60, 0x2f, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x43, 0x24, 0x93, 0xa8, 0x61, 0x01, + 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + Test(ctx context.Context, in *MsgTest, opts ...grpc.CallOption) (*MsgTestResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) Test(ctx context.Context, in *MsgTest, opts ...grpc.CallOption) (*MsgTestResponse, error) { + out := new(MsgTestResponse) + err := c.cc.Invoke(ctx, "/terra.tax2gas.v1beta1.Msg/Test", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + Test(context.Context, *MsgTest) (*MsgTestResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) Test(ctx context.Context, req *MsgTest) (*MsgTestResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Test not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_Test_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgTest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).Test(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/terra.tax2gas.v1beta1.Msg/Test", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).Test(ctx, req.(*MsgTest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "terra.tax2gas.v1beta1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Test", + Handler: _Msg_Test_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "terra/tax2gas/v1beta1/tx.proto", +} + +func (m *MsgTest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgTest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgTestResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgTestResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTestResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgTest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgTestResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgTest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgTest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgTestResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgTestResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTestResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) From 7500c390c6ff8f1c2131cb17992893cb80f2980c Mon Sep 17 00:00:00 2001 From: Anh Minh <1phamminh0811@gmail.com> Date: Mon, 24 Jun 2024 11:18:42 +0700 Subject: [PATCH 02/71] lint --- proto/terra/tax2gas/v1beta1/genesis.proto | 2 +- proto/terra/tax2gas/v1beta1/query.proto | 4 +++- proto/terra/tax2gas/v1beta1/tx.proto | 4 ++-- x/tax2gas/client/cli/query.go | 1 - x/tax2gas/keeper/keeper.go | 3 +-- x/tax2gas/module.go | 3 +-- x/tax2gas/types/keys.go | 6 ++---- 7 files changed, 10 insertions(+), 13 deletions(-) diff --git a/proto/terra/tax2gas/v1beta1/genesis.proto b/proto/terra/tax2gas/v1beta1/genesis.proto index 8cb3703fe..5d0846fa0 100644 --- a/proto/terra/tax2gas/v1beta1/genesis.proto +++ b/proto/terra/tax2gas/v1beta1/genesis.proto @@ -12,5 +12,5 @@ message Params {} // GenesisState defines the tax2gas module's genesis state. message GenesisState { // params is the container of tax2gas parameters. - Params params = 1 [ (gogoproto.nullable) = false ]; + Params params = 1 [(gogoproto.nullable) = false]; } \ No newline at end of file diff --git a/proto/terra/tax2gas/v1beta1/query.proto b/proto/terra/tax2gas/v1beta1/query.proto index 6fa3165b5..594e07e20 100644 --- a/proto/terra/tax2gas/v1beta1/query.proto +++ b/proto/terra/tax2gas/v1beta1/query.proto @@ -16,4 +16,6 @@ service Query { //=============================== Params message ParamsRequest {} -message ParamsResponse { Params params = 1 [ (gogoproto.nullable) = false ]; } \ No newline at end of file +message ParamsResponse { + Params params = 1 [(gogoproto.nullable) = false]; +} \ No newline at end of file diff --git a/proto/terra/tax2gas/v1beta1/tx.proto b/proto/terra/tax2gas/v1beta1/tx.proto index 49fd5d14e..c667f60e2 100644 --- a/proto/terra/tax2gas/v1beta1/tx.proto +++ b/proto/terra/tax2gas/v1beta1/tx.proto @@ -7,12 +7,12 @@ import "cosmos/base/v1beta1/coin.proto"; option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; service Msg { - rpc Test(MsgTest) returns (MsgTestResponse); + rpc Test(MsgTest) returns (MsgTestResponse); } // ===================== MsgTest message MsgTest { - string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ]; + string sender = 1 [(gogoproto.moretags) = "yaml:\"sender\""]; } message MsgTestResponse {} \ No newline at end of file diff --git a/x/tax2gas/client/cli/query.go b/x/tax2gas/client/cli/query.go index 72cd15999..ffd212794 100644 --- a/x/tax2gas/client/cli/query.go +++ b/x/tax2gas/client/cli/query.go @@ -29,7 +29,6 @@ func GetQueryCmd() *cobra.Command { return tax2gasQueryCmd } - // GetCmdQueryParams implements a command to return the current parameters. func GetCmdQueryParams() *cobra.Command { cmd := &cobra.Command{ diff --git a/x/tax2gas/keeper/keeper.go b/x/tax2gas/keeper/keeper.go index d1643a515..126fc876d 100644 --- a/x/tax2gas/keeper/keeper.go +++ b/x/tax2gas/keeper/keeper.go @@ -1,14 +1,13 @@ package keeper import ( - sdk "github.com/cosmos/cosmos-sdk/types" storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/classic-terra/core/v3/x/tax2gas/types" ) - type Keeper struct { storeKey storetypes.StoreKey diff --git a/x/tax2gas/module.go b/x/tax2gas/module.go index e7c6e045a..213548bf3 100644 --- a/x/tax2gas/module.go +++ b/x/tax2gas/module.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -12,7 +13,6 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/cometbft/cometbft/abci/types" "github.com/classic-terra/core/v3/x/tax2gas/client/cli" "github.com/classic-terra/core/v3/x/tax2gas/keeper" @@ -77,7 +77,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { // queryproto.RegisterQueryServer(cfg.QueryServer(), grpc.Querier{Q: module.NewQuerier(am.k)}) } - func NewAppModule(testmoduleKeeper keeper.Keeper) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{}, diff --git a/x/tax2gas/types/keys.go b/x/tax2gas/types/keys.go index 6d701815b..ac537a231 100644 --- a/x/tax2gas/types/keys.go +++ b/x/tax2gas/types/keys.go @@ -8,7 +8,5 @@ const ( RouterKey = ModuleName ) -var ( - // Key defines the store key for tax2gas. - Key = []byte{0x01} -) +// Key defines the store key for tax2gas. +var Key = []byte{0x01} From 15999118f0e87b0f32df752b8eb85ecec73728ba Mon Sep 17 00:00:00 2001 From: Anh Minh <1phamminh0811@gmail.com> Date: Mon, 24 Jun 2024 11:51:30 +0700 Subject: [PATCH 03/71] proto lint --- proto/terra/tax2gas/v1beta1/genesis.proto | 2 -- proto/terra/tax2gas/v1beta1/query.proto | 1 - proto/terra/tax2gas/v1beta1/tx.proto | 1 - x/tax2gas/types/genesis.pb.go | 24 ++++++-------- x/tax2gas/types/query.pb.go | 40 +++++++++++------------ x/tax2gas/types/tx.pb.go | 27 +++++++-------- 6 files changed, 42 insertions(+), 53 deletions(-) diff --git a/proto/terra/tax2gas/v1beta1/genesis.proto b/proto/terra/tax2gas/v1beta1/genesis.proto index 5d0846fa0..096f0640f 100644 --- a/proto/terra/tax2gas/v1beta1/genesis.proto +++ b/proto/terra/tax2gas/v1beta1/genesis.proto @@ -2,8 +2,6 @@ syntax = "proto3"; package terra.tax2gas.v1beta1; import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "cosmos_proto/cosmos.proto"; option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; diff --git a/proto/terra/tax2gas/v1beta1/query.proto b/proto/terra/tax2gas/v1beta1/query.proto index 594e07e20..85a50c94d 100644 --- a/proto/terra/tax2gas/v1beta1/query.proto +++ b/proto/terra/tax2gas/v1beta1/query.proto @@ -4,7 +4,6 @@ package terra.tax2gas.v1beta1; import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "terra/tax2gas/v1beta1/genesis.proto"; -import "terra/tax2gas/v1beta1/tx.proto"; option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; diff --git a/proto/terra/tax2gas/v1beta1/tx.proto b/proto/terra/tax2gas/v1beta1/tx.proto index c667f60e2..cdda2f9cd 100644 --- a/proto/terra/tax2gas/v1beta1/tx.proto +++ b/proto/terra/tax2gas/v1beta1/tx.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package terra.tax2gas.v1beta1; import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; diff --git a/x/tax2gas/types/genesis.pb.go b/x/tax2gas/types/genesis.pb.go index 5a47d4eb0..fbadfca5d 100644 --- a/x/tax2gas/types/genesis.pb.go +++ b/x/tax2gas/types/genesis.pb.go @@ -5,8 +5,6 @@ package types import ( fmt "fmt" - _ "github.com/cosmos/cosmos-proto" - _ "github.com/cosmos/cosmos-sdk/codec/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -117,22 +115,20 @@ func init() { } var fileDescriptor_589c4ef0e5113034 = []byte{ - // 241 bytes of a gzipped FileDescriptorProto + // 209 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2e, 0x49, 0x2d, 0x2a, 0x4a, 0xd4, 0x2f, 0x49, 0xac, 0x30, 0x4a, 0x4f, 0x2c, 0xd6, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x05, 0x2b, 0xd2, 0x83, 0x2a, 0xd2, 0x83, 0x2a, 0x92, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, - 0xab, 0xd0, 0x07, 0xb1, 0x20, 0x8a, 0xa5, 0x24, 0xd3, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0xc1, - 0xbc, 0xa4, 0xd2, 0x34, 0xfd, 0xc4, 0xbc, 0x4a, 0x98, 0x54, 0x72, 0x7e, 0x71, 0x6e, 0x7e, 0x71, - 0x3c, 0x44, 0x0f, 0x84, 0x03, 0x91, 0x52, 0xe2, 0xe0, 0x62, 0x0b, 0x48, 0x2c, 0x4a, 0xcc, 0x2d, - 0x56, 0xf2, 0xe6, 0xe2, 0x71, 0x87, 0xd8, 0x1e, 0x5c, 0x92, 0x58, 0x92, 0x2a, 0x64, 0xcd, 0xc5, - 0x56, 0x00, 0x96, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x36, 0x92, 0xd5, 0xc3, 0xea, 0x1a, 0x3d, - 0x88, 0x76, 0x27, 0x96, 0x13, 0xf7, 0xe4, 0x19, 0x82, 0xa0, 0x5a, 0x9c, 0xbc, 0x4e, 0x3c, 0x92, - 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, - 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x20, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, - 0x39, 0x3f, 0x57, 0x3f, 0x39, 0x27, 0xb1, 0xb8, 0x38, 0x33, 0x59, 0x17, 0x12, 0x16, 0xc9, 0xf9, - 0x45, 0xa9, 0xfa, 0x65, 0xc6, 0xfa, 0x15, 0xf0, 0x50, 0x29, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, - 0x03, 0xbb, 0xd4, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x82, 0x3b, 0x6e, 0x5a, 0x33, 0x01, 0x00, + 0xab, 0xd0, 0x07, 0xb1, 0x20, 0x8a, 0x95, 0x38, 0xb8, 0xd8, 0x02, 0x12, 0x8b, 0x12, 0x73, 0x8b, + 0x95, 0xbc, 0xb9, 0x78, 0xdc, 0x21, 0xe6, 0x04, 0x97, 0x24, 0x96, 0xa4, 0x0a, 0x59, 0x73, 0xb1, + 0x15, 0x80, 0x65, 0x24, 0x18, 0x15, 0x18, 0x35, 0xb8, 0x8d, 0x64, 0xf5, 0xb0, 0x9a, 0xab, 0x07, + 0xd1, 0xee, 0xc4, 0x72, 0xe2, 0x9e, 0x3c, 0x43, 0x10, 0x54, 0x8b, 0x93, 0xd7, 0x89, 0x47, 0x72, + 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, + 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa4, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, + 0xe7, 0xe7, 0xea, 0x27, 0xe7, 0x24, 0x16, 0x17, 0x67, 0x26, 0xeb, 0x42, 0x7c, 0x95, 0x9c, 0x5f, + 0x94, 0xaa, 0x5f, 0x66, 0xac, 0x5f, 0x01, 0xf7, 0x5f, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, + 0xd8, 0xa5, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x3f, 0x48, 0x2e, 0xfd, 0x00, 0x00, 0x00, } diff --git a/x/tax2gas/types/query.pb.go b/x/tax2gas/types/query.pb.go index 702fa660f..8ebbce812 100644 --- a/x/tax2gas/types/query.pb.go +++ b/x/tax2gas/types/query.pb.go @@ -118,26 +118,26 @@ func init() { func init() { proto.RegisterFile("terra/tax2gas/v1beta1/query.proto", fileDescriptor_bfce3f3a760d419d) } var fileDescriptor_bfce3f3a760d419d = []byte{ - // 298 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xb1, 0x4b, 0xc3, 0x40, - 0x14, 0xc6, 0x13, 0xd1, 0x0e, 0x27, 0x2a, 0x04, 0x8b, 0x52, 0xec, 0xa9, 0x55, 0xc1, 0xc5, 0x3b, - 0x9b, 0x8e, 0x6e, 0x8e, 0x82, 0xa0, 0x1d, 0xdd, 0x2e, 0xe1, 0x38, 0x03, 0x6d, 0x5e, 0x7a, 0xf7, - 0x52, 0xd2, 0xc1, 0xc5, 0xbf, 0x40, 0xf0, 0x9f, 0xea, 0x58, 0x70, 0x71, 0x12, 0x49, 0xfc, 0x43, - 0xa4, 0xb9, 0xab, 0x20, 0x04, 0xdd, 0x8e, 0xf7, 0x7e, 0xdf, 0x77, 0xdf, 0xf7, 0xc8, 0x31, 0x4a, - 0xad, 0x05, 0x47, 0x51, 0x84, 0x4a, 0x18, 0x3e, 0xed, 0x47, 0x12, 0x45, 0x9f, 0x4f, 0x72, 0xa9, - 0x67, 0x2c, 0xd3, 0x80, 0x10, 0xb4, 0x6b, 0x84, 0x39, 0x84, 0x39, 0xa4, 0xb3, 0xab, 0x40, 0x41, - 0x4d, 0xf0, 0xe5, 0xcb, 0xc2, 0x9d, 0x03, 0x05, 0xa0, 0x46, 0x92, 0x8b, 0x2c, 0xe1, 0x22, 0x4d, - 0x01, 0x05, 0x26, 0x90, 0x1a, 0xb7, 0x3d, 0x69, 0xfe, 0x4d, 0xc9, 0x54, 0x9a, 0x64, 0x05, 0xd1, - 0x66, 0x08, 0x0b, 0xbb, 0xef, 0xed, 0x90, 0xad, 0x3b, 0xa1, 0xc5, 0xd8, 0x0c, 0xe5, 0x24, 0x97, - 0x06, 0x7b, 0xb7, 0x64, 0x7b, 0x35, 0x30, 0x19, 0xa4, 0x46, 0x06, 0x57, 0xa4, 0x95, 0xd5, 0x93, - 0x7d, 0xff, 0xc8, 0x3f, 0xdf, 0x0c, 0xbb, 0xac, 0xb1, 0x03, 0xb3, 0xb2, 0xeb, 0xf5, 0xf9, 0xc7, - 0xa1, 0x37, 0x74, 0x92, 0xf0, 0x89, 0x6c, 0xdc, 0x2f, 0xeb, 0x07, 0x48, 0x5a, 0x16, 0x08, 0x4e, - 0xff, 0xd4, 0xbb, 0x1c, 0x9d, 0xb3, 0x7f, 0x28, 0x1b, 0xae, 0xd7, 0x7d, 0x7e, 0xfb, 0x7a, 0x5d, - 0xdb, 0x0b, 0xda, 0xfc, 0x77, 0x51, 0x17, 0xe6, 0x66, 0x5e, 0x52, 0x7f, 0x51, 0x52, 0xff, 0xb3, - 0xa4, 0xfe, 0x4b, 0x45, 0xbd, 0x45, 0x45, 0xbd, 0xf7, 0x8a, 0x7a, 0x0f, 0x97, 0x2a, 0xc1, 0xc7, - 0x3c, 0x62, 0x31, 0x8c, 0x79, 0x3c, 0x12, 0xc6, 0x24, 0xf1, 0x85, 0xb5, 0x88, 0x41, 0x4b, 0x3e, - 0x1d, 0xf0, 0xe2, 0xc7, 0x0c, 0x67, 0x99, 0x34, 0x51, 0xab, 0xbe, 0xd8, 0xe0, 0x3b, 0x00, 0x00, - 0xff, 0xff, 0x96, 0xe7, 0x47, 0xe5, 0xe6, 0x01, 0x00, 0x00, + // 292 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2c, 0x49, 0x2d, 0x2a, + 0x4a, 0xd4, 0x2f, 0x49, 0xac, 0x30, 0x4a, 0x4f, 0x2c, 0xd6, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, + 0x34, 0xd4, 0x2f, 0x2c, 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x05, + 0x2b, 0xd1, 0x83, 0x2a, 0xd1, 0x83, 0x2a, 0x91, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0xab, 0xd0, + 0x07, 0xb1, 0x20, 0x8a, 0xa5, 0x64, 0xd2, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x13, 0x0b, 0x32, + 0xf5, 0x13, 0xf3, 0xf2, 0xf2, 0x4b, 0x12, 0x4b, 0x32, 0xf3, 0xf3, 0x8a, 0xa1, 0xb2, 0xca, 0xd8, + 0x6d, 0x4b, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x84, 0x2a, 0x52, 0xe2, 0xe7, 0xe2, 0x0d, 0x48, 0x2c, + 0x4a, 0xcc, 0x2d, 0x0e, 0x4a, 0x2d, 0x2c, 0x4d, 0x2d, 0x2e, 0x51, 0xf2, 0xe5, 0xe2, 0x83, 0x09, + 0x14, 0x17, 0xe4, 0xe7, 0x15, 0xa7, 0x0a, 0x59, 0x73, 0xb1, 0x15, 0x80, 0x45, 0x24, 0x18, 0x15, + 0x18, 0x35, 0xb8, 0x8d, 0x64, 0xf5, 0xb0, 0xba, 0x51, 0x0f, 0xa2, 0xcd, 0x89, 0xe5, 0xc4, 0x3d, + 0x79, 0x86, 0x20, 0xa8, 0x16, 0xa3, 0x5a, 0x2e, 0xd6, 0x40, 0x90, 0xf7, 0x84, 0x4a, 0xb8, 0xd8, + 0x20, 0x0a, 0x84, 0x54, 0xf0, 0xea, 0x87, 0xba, 0x43, 0x4a, 0x95, 0x80, 0x2a, 0x88, 0xe3, 0x94, + 0x64, 0x9b, 0x2e, 0x3f, 0x99, 0xcc, 0x24, 0x2e, 0x24, 0xaa, 0x8f, 0xea, 0x5b, 0xa8, 0x63, 0xbc, + 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, + 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x20, 0x3d, 0xb3, 0x24, 0xa3, + 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x39, 0x27, 0xb1, 0xb8, 0x38, 0x33, 0x59, 0x17, 0x62, + 0x44, 0x72, 0x7e, 0x51, 0xaa, 0x7e, 0x99, 0xb1, 0x7e, 0x05, 0xdc, 0xb0, 0x92, 0xca, 0x82, 0xd4, + 0xe2, 0x24, 0x36, 0x70, 0x88, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x70, 0x1a, 0xdb, + 0xc6, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/tax2gas/types/tx.pb.go b/x/tax2gas/types/tx.pb.go index 1abf49490..90b626e87 100644 --- a/x/tax2gas/types/tx.pb.go +++ b/x/tax2gas/types/tx.pb.go @@ -6,7 +6,6 @@ package types import ( context "context" fmt "fmt" - _ "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -118,24 +117,22 @@ func init() { func init() { proto.RegisterFile("terra/tax2gas/v1beta1/tx.proto", fileDescriptor_a20cba19b3d258de) } var fileDescriptor_a20cba19b3d258de = []byte{ - // 258 bytes of a gzipped FileDescriptorProto + // 237 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2b, 0x49, 0x2d, 0x2a, 0x4a, 0xd4, 0x2f, 0x49, 0xac, 0x30, 0x4a, 0x4f, 0x2c, 0xd6, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x05, 0xcb, 0xeb, 0x41, 0xe5, 0xf5, 0xa0, 0xf2, 0x52, 0x22, 0xe9, 0xf9, 0xe9, 0xf9, 0x60, 0x15, 0xfa, 0x20, 0x16, 0x44, - 0xb1, 0x94, 0x5c, 0x72, 0x7e, 0x71, 0x6e, 0x7e, 0xb1, 0x7e, 0x52, 0x62, 0x71, 0x2a, 0xdc, 0xa8, - 0xe4, 0xfc, 0xcc, 0x3c, 0x88, 0xbc, 0x92, 0x09, 0x17, 0xbb, 0x6f, 0x71, 0x7a, 0x48, 0x6a, 0x71, - 0x89, 0x90, 0x26, 0x17, 0x5b, 0x71, 0x6a, 0x5e, 0x4a, 0x6a, 0x91, 0x04, 0xa3, 0x02, 0xa3, 0x06, - 0xa7, 0x93, 0xe0, 0xa7, 0x7b, 0xf2, 0xbc, 0x95, 0x89, 0xb9, 0x39, 0x56, 0x4a, 0x10, 0x71, 0xa5, - 0x20, 0xa8, 0x02, 0x25, 0x41, 0x2e, 0x7e, 0xa8, 0xae, 0xa0, 0xd4, 0xe2, 0x82, 0xfc, 0xbc, 0xe2, - 0x54, 0xa3, 0x50, 0x2e, 0x66, 0xdf, 0xe2, 0x74, 0x21, 0x3f, 0x2e, 0x16, 0xb0, 0x61, 0x72, 0x7a, - 0x58, 0x5d, 0xa9, 0x07, 0xd5, 0x26, 0xa5, 0x86, 0x5f, 0x1e, 0x66, 0xac, 0x93, 0xd7, 0x89, 0x47, - 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, - 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa4, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, - 0x25, 0xe7, 0xe7, 0xea, 0x27, 0xe7, 0x24, 0x16, 0x17, 0x67, 0x26, 0xeb, 0x42, 0x42, 0x2e, 0x39, - 0xbf, 0x28, 0x55, 0xbf, 0xcc, 0x58, 0xbf, 0x02, 0x1e, 0x86, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, - 0x6c, 0x60, 0x2f, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x43, 0x24, 0x93, 0xa8, 0x61, 0x01, - 0x00, 0x00, + 0xb1, 0x92, 0x09, 0x17, 0xbb, 0x6f, 0x71, 0x7a, 0x48, 0x6a, 0x71, 0x89, 0x90, 0x26, 0x17, 0x5b, + 0x71, 0x6a, 0x5e, 0x4a, 0x6a, 0x91, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xa7, 0x93, 0xe0, 0xa7, 0x7b, + 0xf2, 0xbc, 0x95, 0x89, 0xb9, 0x39, 0x56, 0x4a, 0x10, 0x71, 0xa5, 0x20, 0xa8, 0x02, 0x25, 0x41, + 0x2e, 0x7e, 0xa8, 0xae, 0xa0, 0xd4, 0xe2, 0x82, 0xfc, 0xbc, 0xe2, 0x54, 0xa3, 0x50, 0x2e, 0x66, + 0xdf, 0xe2, 0x74, 0x21, 0x3f, 0x2e, 0x16, 0xb0, 0x61, 0x72, 0x7a, 0x58, 0x5d, 0xa1, 0x07, 0xd5, + 0x26, 0xa5, 0x86, 0x5f, 0x1e, 0x66, 0xac, 0x93, 0xd7, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, + 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, + 0xcb, 0x31, 0x44, 0x19, 0xa4, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x27, + 0xe7, 0x24, 0x16, 0x17, 0x67, 0x26, 0xeb, 0x42, 0x42, 0x26, 0x39, 0xbf, 0x28, 0x55, 0xbf, 0xcc, + 0x58, 0xbf, 0x02, 0x1e, 0x46, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, 0x2f, 0x1b, 0x03, + 0x02, 0x00, 0x00, 0xff, 0xff, 0x32, 0x1e, 0x7d, 0xd9, 0x41, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From 8fe545df2236d19ff89bcabba8c70b4391b7265a Mon Sep 17 00:00:00 2001 From: Anh Minh <1phamminh0811@gmail.com> Date: Mon, 24 Jun 2024 11:52:38 +0700 Subject: [PATCH 04/71] revert change in protocgen --- scripts/protocgen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index 8d0a493b8..674c4958a 100755 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -1,6 +1,6 @@ #!/usr/bin/env sh -set -eux pipefail +set -eo pipefail echo "Generating gogo proto code" cd proto From c40fa9619713d8ca19b023df54aed9c253098584 Mon Sep 17 00:00:00 2001 From: expertdicer Date: Mon, 8 Jul 2024 08:00:48 +0700 Subject: [PATCH 05/71] add tax2gas module and implementation --- a.wasm | Bin 0 -> 357462 bytes app/app.go | 7 +- app/keepers/keepers.go | 18 +- app/modules.go | 7 + custom/auth/ante/ante.go | 4 +- custom/auth/ante/expected_keeper.go | 1 + custom/auth/ante/fee_test.go | 940 ---------------------- custom/auth/post/post.go | 12 +- custom/wasm/keeper/handler_plugin.go | 200 ++++- deploy.sh | 23 + deploy2.sh | 29 + draft_metadata.json | 8 + draft_proposal.json | 17 + forwarder.wasm | Bin 0 -> 161731 bytes forwarder2.wasm | Bin 0 -> 161040 bytes forwarder3.wasm | Bin 0 -> 161082 bytes forwarder4.wasm | Bin 0 -> 161073 bytes lmao.json | 24 + lmao2.json | 20 + prop.json | 17 + proto/terra/tax2gas/v1beta1/genesis.proto | 20 +- proto/terra/tax2gas/v1beta1/query.proto | 6 +- x/tax2gas/ante/fee.go | 122 ++- x/tax2gas/client/cli/query.go | 2 +- x/tax2gas/genesis.go | 14 + x/tax2gas/keeper/expected_keeper.go | 41 + x/tax2gas/keeper/keeper.go | 38 +- x/tax2gas/keeper/params.go | 31 + x/tax2gas/keeper/querier.go | 28 + x/tax2gas/keeper/tax.go | 190 +++++ x/tax2gas/module.go | 27 +- x/tax2gas/post/post.go | 98 +++ x/tax2gas/types/errors.go | 10 + x/tax2gas/types/expected_keeper.go | 1 + x/tax2gas/types/genesis.pb.go | 182 ++++- x/tax2gas/types/keys.go | 12 +- x/tax2gas/types/params.go | 31 +- x/tax2gas/types/query.pb.go | 144 ++-- x/tax2gas/types/query.pb.gw.go | 4 +- x/wasm/keeper/testdata/test.wasm | Bin 0 -> 282151 bytes 40 files changed, 1212 insertions(+), 1116 deletions(-) create mode 100644 a.wasm delete mode 100644 custom/auth/ante/fee_test.go create mode 100755 deploy.sh create mode 100755 deploy2.sh create mode 100644 draft_metadata.json create mode 100644 draft_proposal.json create mode 100644 forwarder.wasm create mode 100644 forwarder2.wasm create mode 100644 forwarder3.wasm create mode 100644 forwarder4.wasm create mode 100644 lmao.json create mode 100644 lmao2.json create mode 100644 prop.json create mode 100644 x/tax2gas/genesis.go create mode 100644 x/tax2gas/keeper/expected_keeper.go create mode 100644 x/tax2gas/keeper/params.go create mode 100644 x/tax2gas/keeper/querier.go create mode 100644 x/tax2gas/keeper/tax.go create mode 100644 x/tax2gas/post/post.go create mode 100644 x/wasm/keeper/testdata/test.wasm diff --git a/a.wasm b/a.wasm new file mode 100644 index 0000000000000000000000000000000000000000..28fed8117c9db885894b5e7dfa2489c95ecb683e GIT binary patch literal 357462 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

-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%0A4*r%J^NH3LsM> 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

L29qTAJ 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 Xok}UwObJOSG~rYYR5_c*p8Ed*6zi1z literal 0 HcmV?d00001 diff --git a/app/app.go b/app/app.go index 73a944da7..d9da7709c 100644 --- a/app/app.go +++ b/app/app.go @@ -228,6 +228,7 @@ func NewTerraApp( TXCounterStoreKey: app.GetKey(wasmtypes.StoreKey), DyncommKeeper: app.DyncommKeeper, StakingKeeper: app.StakingKeeper, + Tax2Gaskeeper: app.Tax2gasKeeper, Cdc: app.appCodec, }, ) @@ -237,7 +238,11 @@ func NewTerraApp( postHandler, err := custompost.NewPostHandler( custompost.HandlerOptions{ - DyncommKeeper: app.DyncommKeeper, + AccountKeeper: app.AccountKeeper, + BankKeeper: app.BankKeeper, + DyncommKeeper: app.DyncommKeeper, + TreasuryKeeper: app.TreasuryKeeper, + Tax2Gaskeeper: app.Tax2gasKeeper, }, ) if err != nil { diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index 406fd28c9..829d3b944 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -66,6 +66,8 @@ import ( markettypes "github.com/classic-terra/core/v3/x/market/types" oraclekeeper "github.com/classic-terra/core/v3/x/oracle/keeper" oracletypes "github.com/classic-terra/core/v3/x/oracle/types" + tax2gasKeeper "github.com/classic-terra/core/v3/x/tax2gas/keeper" + tax2gasTypes "github.com/classic-terra/core/v3/x/tax2gas/types" treasurykeeper "github.com/classic-terra/core/v3/x/treasury/keeper" treasurytypes "github.com/classic-terra/core/v3/x/treasury/types" ) @@ -103,10 +105,10 @@ type AppKeepers struct { DyncommKeeper dyncommkeeper.Keeper IBCHooksKeeper *ibchookskeeper.Keeper ConsensusParamsKeeper consensusparamkeeper.Keeper - - Ics20WasmHooks *ibchooks.WasmHooks - IBCHooksWrapper *ibchooks.ICS4Middleware - TransferStack ibctransfer.IBCModule + Tax2gasKeeper tax2gasKeeper.Keeper + Ics20WasmHooks *ibchooks.WasmHooks + IBCHooksWrapper *ibchooks.ICS4Middleware + TransferStack ibctransfer.IBCModule // make scoped keepers public for test purposes ScopedIBCKeeper capabilitykeeper.ScopedKeeper @@ -156,6 +158,7 @@ func NewAppKeepers( treasurytypes.StoreKey, wasmtypes.StoreKey, dyncommtypes.StoreKey, + tax2gasTypes.StoreKey, ) tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey) memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) @@ -276,6 +279,12 @@ func NewAppKeepers( stakingtypes.NewMultiStakingHooks(appKeepers.DistrKeeper.Hooks(), appKeepers.SlashingKeeper.Hooks()), ) + appKeepers.Tax2gasKeeper = tax2gasKeeper.NewKeeper( + appCodec, + appKeepers.keys[tax2gasTypes.StoreKey], + appKeepers.GetSubspace(tax2gasTypes.ModuleName), + ) + // Create IBC Keeper appKeepers.IBCKeeper = ibckeeper.NewKeeper( appCodec, @@ -504,6 +513,7 @@ func initParamsKeeper( paramsKeeper.Subspace(treasurytypes.ModuleName) paramsKeeper.Subspace(wasmtypes.ModuleName).WithKeyTable(wasmtypes.ParamKeyTable()) paramsKeeper.Subspace(dyncommtypes.ModuleName) + paramsKeeper.Subspace(tax2gasTypes.ModuleName) return paramsKeeper } diff --git a/app/modules.go b/app/modules.go index a7dfb5cb2..f638fc110 100644 --- a/app/modules.go +++ b/app/modules.go @@ -25,6 +25,8 @@ import ( markettypes "github.com/classic-terra/core/v3/x/market/types" "github.com/classic-terra/core/v3/x/oracle" oracletypes "github.com/classic-terra/core/v3/x/oracle/types" + tax2gas "github.com/classic-terra/core/v3/x/tax2gas" + tax2gasTypes "github.com/classic-terra/core/v3/x/tax2gas/types" "github.com/classic-terra/core/v3/x/treasury" treasuryclient "github.com/classic-terra/core/v3/x/treasury/client" treasurytypes "github.com/classic-terra/core/v3/x/treasury/types" @@ -123,6 +125,7 @@ var ( customwasm.AppModuleBasic{}, ibcfee.AppModuleBasic{}, dyncomm.AppModuleBasic{}, + tax2gas.AppModuleBasic{}, ibchooks.AppModuleBasic{}, consensus.AppModuleBasic{}, ) @@ -184,6 +187,7 @@ func appModules( treasury.NewAppModule(appCodec, app.TreasuryKeeper), wasm.NewAppModule(appCodec, &app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasmtypes.ModuleName)), dyncomm.NewAppModule(appCodec, app.DyncommKeeper, app.StakingKeeper), + tax2gas.NewAppModule(appCodec, app.Tax2gasKeeper), ibchooks.NewAppModule(app.AccountKeeper), consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), // always be last to make sure that it checks for all invariants and not only part of them @@ -250,6 +254,7 @@ func orderBeginBlockers() []string { markettypes.ModuleName, wasmtypes.ModuleName, dyncommtypes.ModuleName, + tax2gasTypes.ModuleName, // consensus module consensusparamtypes.ModuleName, } @@ -284,6 +289,7 @@ func orderEndBlockers() []string { markettypes.ModuleName, wasmtypes.ModuleName, dyncommtypes.ModuleName, + tax2gasTypes.ModuleName, // consensus module consensusparamtypes.ModuleName, } @@ -318,6 +324,7 @@ func orderInitGenesis() []string { treasurytypes.ModuleName, wasmtypes.ModuleName, dyncommtypes.ModuleName, + tax2gasTypes.ModuleName, // consensus module consensusparamtypes.ModuleName, } diff --git a/custom/auth/ante/ante.go b/custom/auth/ante/ante.go index b28fbeac6..52610155d 100644 --- a/custom/auth/ante/ante.go +++ b/custom/auth/ante/ante.go @@ -14,6 +14,7 @@ import ( dyncommkeeper "github.com/classic-terra/core/v3/x/dyncomm/keeper" tax2gasante "github.com/classic-terra/core/v3/x/tax2gas/ante" + tax2gasKeeper "github.com/classic-terra/core/v3/x/tax2gas/keeper" "github.com/cosmos/cosmos-sdk/codec" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" ibcante "github.com/cosmos/ibc-go/v7/modules/core/ante" @@ -42,6 +43,7 @@ type HandlerOptions struct { TXCounterStoreKey storetypes.StoreKey DyncommKeeper dyncommkeeper.Keeper StakingKeeper *stakingkeeper.Keeper + Tax2Gaskeeper tax2gasKeeper.Keeper Cdc codec.BinaryCodec } @@ -90,7 +92,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { // MinInitialDepositDecorator prevents submitting governance proposal low initial deposit NewMinInitialDepositDecorator(options.GovKeeper, options.TreasuryKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - tax2gasante.NewFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TreasuryKeeper), + tax2gasante.NewFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TreasuryKeeper, options.Tax2Gaskeeper), dyncommante.NewDyncommDecorator(options.Cdc, options.DyncommKeeper, options.StakingKeeper), // Do not add any other decorators below this point unless explicitly explain. diff --git a/custom/auth/ante/expected_keeper.go b/custom/auth/ante/expected_keeper.go index 1326fb785..2bb206534 100644 --- a/custom/auth/ante/expected_keeper.go +++ b/custom/auth/ante/expected_keeper.go @@ -29,6 +29,7 @@ type BankKeeper interface { SendCoins(ctx sdk.Context, from, to sdk.AccAddress, amt sdk.Coins) error SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error + SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error } type DistrKeeper interface { diff --git a/custom/auth/ante/fee_test.go b/custom/auth/ante/fee_test.go deleted file mode 100644 index 529f89d5f..000000000 --- a/custom/auth/ante/fee_test.go +++ /dev/null @@ -1,940 +0,0 @@ -package ante_test - -import ( - "encoding/json" - "fmt" - "os" - "time" - - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - "github.com/cosmos/cosmos-sdk/testutil/testdata" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/query" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - authz "github.com/cosmos/cosmos-sdk/x/authz" - "github.com/cosmos/cosmos-sdk/x/bank/testutil" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - core "github.com/classic-terra/core/v3/types" - markettypes "github.com/classic-terra/core/v3/x/market/types" - oracletypes "github.com/classic-terra/core/v3/x/oracle/types" - tax2gasante "github.com/classic-terra/core/v3/x/tax2gas/ante" -) - -func (s *AnteTestSuite) TestDeductFeeDecorator_ZeroGas() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - coins := sdk.NewCoins(sdk.NewCoin("atom", sdk.NewInt(300))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - - // msg and signatures - msg := testdata.NewTestMsg(addr1) - s.Require().NoError(s.txBuilder.SetMsgs(msg)) - - // set zero gas - s.txBuilder.SetGasLimit(0) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - _, err = antehandler(s.ctx, tx, false) - s.Require().Error(err) - - // zero gas is accepted in simulation mode - _, err = antehandler(s.ctx, tx, true) - s.Require().NoError(err) -} - -func (s *AnteTestSuite) TestEnsureMempoolFees() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - coins := sdk.NewCoins(sdk.NewCoin("atom", sdk.NewInt(300))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - - // msg and signatures - msg := testdata.NewTestMsg(addr1) - feeAmount := testdata.NewTestFeeAmount() - gasLimit := uint64(15) - s.Require().NoError(s.txBuilder.SetMsgs(msg)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // Set high gas price so standard test fee fails - atomPrice := sdk.NewDecCoinFromDec("atom", sdk.NewDec(20)) - highGasPrice := []sdk.DecCoin{atomPrice} - s.ctx = s.ctx.WithMinGasPrices(highGasPrice) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - // antehandler errors with insufficient fees - _, err = antehandler(s.ctx, tx, false) - s.Require().NotNil(err, "Decorator should have errored on too low fee for local gasPrice") - - // antehandler should not error since we do not check minGasPrice in simulation mode - cacheCtx, _ := s.ctx.CacheContext() - _, err = antehandler(cacheCtx, tx, true) - s.Require().Nil(err, "Decorator should not have errored in simulation mode") - - // Set IsCheckTx to false - s.ctx = s.ctx.WithIsCheckTx(false) - - // antehandler should not error since we do not check minGasPrice in DeliverTx - _, err = antehandler(s.ctx, tx, false) - s.Require().Nil(err, "MempoolFeeDecorator returned error in DeliverTx") - - // Set IsCheckTx back to true for testing sufficient mempool fee - s.ctx = s.ctx.WithIsCheckTx(true) - - atomPrice = sdk.NewDecCoinFromDec("atom", sdk.NewDec(0).Quo(sdk.NewDec(100000))) - lowGasPrice := []sdk.DecCoin{atomPrice} - s.ctx = s.ctx.WithMinGasPrices(lowGasPrice) - - newCtx, err := antehandler(s.ctx, tx, false) - s.Require().Nil(err, "Decorator should not have errored on fee higher than local gasPrice") - // Priority is the smallest gas price amount in any denom. Since we have only 1 gas price - // of 10atom, the priority here is 10. - s.Require().Equal(int64(10), newCtx.Priority()) -} - -func (s *AnteTestSuite) TestDeductFees() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - - // msg and signatures - msg := testdata.NewTestMsg(addr1) - feeAmount := testdata.NewTestFeeAmount() - gasLimit := testdata.NewTestGasLimit() - s.Require().NoError(s.txBuilder.SetMsgs(msg)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // Set account with insufficient funds - acc := s.app.AccountKeeper.NewAccountWithAddress(s.ctx, addr1) - s.app.AccountKeeper.SetAccount(s.ctx, acc) - coins := sdk.NewCoins(sdk.NewCoin("atom", sdk.NewInt(10))) - err = testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - s.Require().NoError(err) - - dfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(dfd) - - _, err = antehandler(s.ctx, tx, false) - - s.Require().NotNil(err, "Tx did not error when fee payer had insufficient funds") - - // Set account with sufficient funds - s.app.AccountKeeper.SetAccount(s.ctx, acc) - err = testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, sdk.NewCoins(sdk.NewCoin("atom", sdk.NewInt(200)))) - s.Require().NoError(err) - - _, err = antehandler(s.ctx, tx, false) - - s.Require().Nil(err, "Tx errored after account has been set with sufficient funds") -} - -func (s *AnteTestSuite) TestEnsureMempoolFeesSend() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - coins := sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, sdk.NewInt(1000000))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - - // msg and signatures - sendAmount := int64(1000000) - sendCoins := sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, sendAmount)) - msg := banktypes.NewMsgSend(addr1, addr1, sendCoins) - - feeAmount := testdata.NewTestFeeAmount() - gasLimit := testdata.NewTestGasLimit() - s.Require().NoError(s.txBuilder.SetMsgs(msg)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // set zero gas prices - s.ctx = s.ctx.WithMinGasPrices(sdk.NewDecCoins()) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - // antehandler errors with insufficient fees due to tax - _, err = antehandler(s.ctx, tx, false) - s.Require().Error(err, "Decorator should errored on low fee for local gasPrice + tax") - - tk := s.app.TreasuryKeeper - expectedTax := tk.GetTaxRate(s.ctx).MulInt64(sendAmount).TruncateInt() - if taxCap := tk.GetTaxCap(s.ctx, core.MicroSDRDenom); expectedTax.GT(taxCap) { - expectedTax = taxCap - } - - // set tax amount - feeAmount = sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, expectedTax)) - s.txBuilder.SetFeeAmount(feeAmount) - tx, err = s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // must pass with tax - _, err = antehandler(s.ctx, tx, false) - s.Require().NoError(err, "Decorator should not have errored on fee higher than local gasPrice") -} - -func (s *AnteTestSuite) TestEnsureMempoolFeesSwapSend() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - coins := sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, sdk.NewInt(1000000))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - - // msg and signatures - sendAmount := int64(1000000) - sendCoin := sdk.NewInt64Coin(core.MicroSDRDenom, sendAmount) - msg := markettypes.NewMsgSwapSend(addr1, addr1, sendCoin, core.MicroKRWDenom) - - feeAmount := testdata.NewTestFeeAmount() - gasLimit := testdata.NewTestGasLimit() - s.Require().NoError(s.txBuilder.SetMsgs(msg)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // set zero gas prices - s.ctx = s.ctx.WithMinGasPrices(sdk.NewDecCoins()) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - // antehandler errors with insufficient fees due to tax - _, err = antehandler(s.ctx, tx, false) - s.Require().Error(err, "Decorator should errored on low fee for local gasPrice + tax") - - tk := s.app.TreasuryKeeper - expectedTax := tk.GetTaxRate(s.ctx).MulInt64(sendAmount).TruncateInt() - if taxCap := tk.GetTaxCap(s.ctx, core.MicroSDRDenom); expectedTax.GT(taxCap) { - expectedTax = taxCap - } - - // set tax amount - s.txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, expectedTax))) - tx, err = s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // must pass with tax - _, err = antehandler(s.ctx, tx, false) - s.Require().NoError(err, "Decorator should not have errored on fee higher than local gasPrice") -} - -func (s *AnteTestSuite) TestEnsureMempoolFeesMultiSend() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - coins := sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, sdk.NewInt(1000000))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - - // msg and signatures - sendAmount := int64(1000000) - sendCoins := sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, sendAmount)) - msg := banktypes.NewMsgMultiSend( - []banktypes.Input{ - banktypes.NewInput(addr1, sendCoins), - banktypes.NewInput(addr1, sendCoins), - }, - []banktypes.Output{ - banktypes.NewOutput(addr1, sendCoins), - banktypes.NewOutput(addr1, sendCoins), - }, - ) - - feeAmount := testdata.NewTestFeeAmount() - gasLimit := testdata.NewTestGasLimit() - s.Require().NoError(s.txBuilder.SetMsgs(msg)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // set zero gas prices - s.ctx = s.ctx.WithMinGasPrices(sdk.NewDecCoins()) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - // antehandler errors with insufficient fees due to tax - _, err = antehandler(s.ctx, tx, false) - s.Require().Error(err, "Decorator should errored on low fee for local gasPrice + tax") - - tk := s.app.TreasuryKeeper - expectedTax := tk.GetTaxRate(s.ctx).MulInt64(sendAmount).TruncateInt() - if taxCap := tk.GetTaxCap(s.ctx, core.MicroSDRDenom); expectedTax.GT(taxCap) { - expectedTax = taxCap - } - - // set tax amount - s.txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, expectedTax))) - tx, err = s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - _, err = antehandler(s.ctx, tx, false) - s.Require().Error(err, "Decorator should errored on low fee for local gasPrice + tax") - - // must pass with tax - s.txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, expectedTax.Add(expectedTax)))) - tx, err = s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - _, err = antehandler(s.ctx, tx, false) - s.Require().NoError(err, "Decorator should not have errored on fee higher than local gasPrice") -} - -func (s *AnteTestSuite) TestEnsureMempoolFeesInstantiateContract() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - coins := sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, sdk.NewInt(1000000))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - - // msg and signatures - sendAmount := int64(1000000) - sendCoins := sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, sendAmount)) - msg := &wasmtypes.MsgInstantiateContract{ - Sender: addr1.String(), - Admin: addr1.String(), - CodeID: 0, - Msg: []byte{}, - Funds: sendCoins, - } - - feeAmount := testdata.NewTestFeeAmount() - gasLimit := testdata.NewTestGasLimit() - s.Require().NoError(s.txBuilder.SetMsgs(msg)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // set zero gas prices - s.ctx = s.ctx.WithMinGasPrices(sdk.NewDecCoins()) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - // antehandler errors with insufficient fees due to tax - _, err = antehandler(s.ctx, tx, false) - s.Require().Error(err, "Decorator should errored on low fee for local gasPrice + tax") - - tk := s.app.TreasuryKeeper - expectedTax := tk.GetTaxRate(s.ctx).MulInt64(sendAmount).TruncateInt() - if taxCap := tk.GetTaxCap(s.ctx, core.MicroSDRDenom); expectedTax.GT(taxCap) { - expectedTax = taxCap - } - - // set tax amount - s.txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, expectedTax))) - tx, err = s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // must pass with tax - _, err = antehandler(s.ctx, tx, false) - s.Require().NoError(err, "Decorator should not have errored on fee higher than local gasPrice") -} - -func (s *AnteTestSuite) TestEnsureMempoolFeesExecuteContract() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - coins := sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, sdk.NewInt(1000000))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - - // msg and signatures - sendAmount := int64(1000000) - sendCoins := sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, sendAmount)) - msg := &wasmtypes.MsgExecuteContract{ - Sender: addr1.String(), - Contract: addr1.String(), - Msg: []byte{}, - Funds: sendCoins, - } - - feeAmount := testdata.NewTestFeeAmount() - gasLimit := testdata.NewTestGasLimit() - s.Require().NoError(s.txBuilder.SetMsgs(msg)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // set zero gas prices - s.ctx = s.ctx.WithMinGasPrices(sdk.NewDecCoins()) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - // antehandler errors with insufficient fees due to tax - _, err = antehandler(s.ctx, tx, false) - s.Require().Error(err, "Decorator should errored on low fee for local gasPrice + tax") - - tk := s.app.TreasuryKeeper - expectedTax := tk.GetTaxRate(s.ctx).MulInt64(sendAmount).TruncateInt() - if taxCap := tk.GetTaxCap(s.ctx, core.MicroSDRDenom); expectedTax.GT(taxCap) { - expectedTax = taxCap - } - - // set tax amount - s.txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, expectedTax))) - tx, err = s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // must pass with tax - _, err = antehandler(s.ctx, tx, false) - s.Require().NoError(err, "Decorator should not have errored on fee higher than local gasPrice") -} - -func (s *AnteTestSuite) TestEnsureMempoolFeesAuthzExec() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - coins := sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, sdk.NewInt(1000000))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - - // msg and signatures - sendAmount := int64(1000000) - sendCoins := sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, sendAmount)) - msg := authz.NewMsgExec(addr1, []sdk.Msg{banktypes.NewMsgSend(addr1, addr1, sendCoins)}) - - feeAmount := testdata.NewTestFeeAmount() - gasLimit := testdata.NewTestGasLimit() - s.Require().NoError(s.txBuilder.SetMsgs(&msg)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // set zero gas prices - s.ctx = s.ctx.WithMinGasPrices(sdk.NewDecCoins()) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - // antehandler errors with insufficient fees due to tax - _, err = antehandler(s.ctx, tx, false) - s.Require().Error(err, "Decorator should errored on low fee for local gasPrice + tax") - - tk := s.app.TreasuryKeeper - expectedTax := tk.GetTaxRate(s.ctx).MulInt64(sendAmount).TruncateInt() - if taxCap := tk.GetTaxCap(s.ctx, core.MicroSDRDenom); expectedTax.GT(taxCap) { - expectedTax = taxCap - } - - // set tax amount - s.txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, expectedTax))) - tx, err = s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // must pass with tax - _, err = antehandler(s.ctx, tx, false) - s.Require().NoError(err, "Decorator should not have errored on fee higher than local gasPrice") -} - -// go test -v -run ^TestAnteTestSuite/TestTaxExemption$ github.com/classic-terra/core/v3/custom/auth/ante -func (s *AnteTestSuite) TestTaxExemption() { - // keys and addresses - var privs []cryptotypes.PrivKey - var addrs []sdk.AccAddress - - // 0, 1: exemption - // 2, 3: normal - for i := 0; i < 4; i++ { - priv, _, addr := testdata.KeyTestPubAddr() - privs = append(privs, priv) - addrs = append(addrs, addr) - } - - // set send amount - sendAmt := int64(1000000) - sendCoin := sdk.NewInt64Coin(core.MicroSDRDenom, sendAmt) - feeAmt := int64(1000) - - cases := []struct { - name string - msgSigner cryptotypes.PrivKey - msgCreator func() []sdk.Msg - minFeeAmount int64 - expectProceeds int64 - }{ - { - name: "MsgSend(exemption -> exemption)", - msgSigner: privs[0], - msgCreator: func() []sdk.Msg { - var msgs []sdk.Msg - - msg1 := banktypes.NewMsgSend(addrs[0], addrs[1], sdk.NewCoins(sendCoin)) - msgs = append(msgs, msg1) - - return msgs - }, - minFeeAmount: 0, - expectProceeds: 0, - }, { - name: "MsgSend(normal -> normal)", - msgSigner: privs[2], - msgCreator: func() []sdk.Msg { - var msgs []sdk.Msg - - msg1 := banktypes.NewMsgSend(addrs[2], addrs[3], sdk.NewCoins(sendCoin)) - msgs = append(msgs, msg1) - - return msgs - }, - // tax this one hence burn amount is fee amount - minFeeAmount: feeAmt, - expectProceeds: feeAmt, - }, { - name: "MsgExec(MsgSend(normal -> normal))", - msgSigner: privs[2], - msgCreator: func() []sdk.Msg { - var msgs []sdk.Msg - - msg1 := authz.NewMsgExec(addrs[1], []sdk.Msg{banktypes.NewMsgSend(addrs[2], addrs[3], sdk.NewCoins(sendCoin))}) - msgs = append(msgs, &msg1) - - return msgs - }, - // tax this one hence burn amount is fee amount - minFeeAmount: feeAmt, - expectProceeds: feeAmt, - }, { - name: "MsgSend(exemption -> normal), MsgSend(exemption -> exemption)", - msgSigner: privs[0], - msgCreator: func() []sdk.Msg { - var msgs []sdk.Msg - - msg1 := banktypes.NewMsgSend(addrs[0], addrs[2], sdk.NewCoins(sendCoin)) - msgs = append(msgs, msg1) - msg2 := banktypes.NewMsgSend(addrs[0], addrs[1], sdk.NewCoins(sendCoin)) - msgs = append(msgs, msg2) - - return msgs - }, - // tax this one hence burn amount is fee amount - minFeeAmount: feeAmt, - expectProceeds: feeAmt, - }, { - name: "MsgSend(exemption -> exemption), MsgMultiSend(exemption -> normal, exemption -> exemption)", - msgSigner: privs[0], - msgCreator: func() []sdk.Msg { - var msgs []sdk.Msg - - msg1 := banktypes.NewMsgSend(addrs[0], addrs[1], sdk.NewCoins(sendCoin)) - msgs = append(msgs, msg1) - msg2 := banktypes.NewMsgMultiSend( - []banktypes.Input{ - { - Address: addrs[0].String(), - Coins: sdk.NewCoins(sendCoin), - }, - { - Address: addrs[0].String(), - Coins: sdk.NewCoins(sendCoin), - }, - }, - []banktypes.Output{ - { - Address: addrs[2].String(), - Coins: sdk.NewCoins(sendCoin), - }, - { - Address: addrs[1].String(), - Coins: sdk.NewCoins(sendCoin), - }, - }, - ) - msgs = append(msgs, msg2) - - return msgs - }, - minFeeAmount: feeAmt * 2, - expectProceeds: feeAmt * 2, - }, { - name: "MsgExecuteContract(exemption), MsgExecuteContract(normal)", - msgSigner: privs[3], - msgCreator: func() []sdk.Msg { - sendAmount := int64(1000000) - sendCoins := sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, sendAmount)) - // get wasm code for wasm contract create and instantiate - wasmCode, err := os.ReadFile("./testdata/hackatom.wasm") - s.Require().NoError(err) - per := wasmkeeper.NewDefaultPermissionKeeper(s.app.WasmKeeper) - // set wasm default params - s.app.WasmKeeper.SetParams(s.ctx, wasmtypes.DefaultParams()) - // wasm create - CodeID, _, err := per.Create(s.ctx, addrs[0], wasmCode, nil) - s.Require().NoError(err) - // params for contract init - r := wasmkeeper.HackatomExampleInitMsg{Verifier: addrs[0], Beneficiary: addrs[0]} - bz, err := json.Marshal(r) - s.Require().NoError(err) - // change block time for contract instantiate - s.ctx = s.ctx.WithBlockTime(time.Date(2020, time.April, 22, 12, 0, 0, 0, time.UTC)) - // instantiate contract then set the contract address to tax exemption - addr, _, err := per.Instantiate(s.ctx, CodeID, addrs[0], nil, bz, "my label", nil) - s.Require().NoError(err) - s.app.TreasuryKeeper.AddBurnTaxExemptionAddress(s.ctx, addr.String()) - // instantiate contract then not set to tax exemption - addr1, _, err := per.Instantiate(s.ctx, CodeID, addrs[0], nil, bz, "my label", nil) - s.Require().NoError(err) - - var msgs []sdk.Msg - // msg and signatures - msg1 := &wasmtypes.MsgExecuteContract{ - Sender: addrs[0].String(), - Contract: addr.String(), - Msg: []byte{}, - Funds: sendCoins, - } - msgs = append(msgs, msg1) - - msg2 := &wasmtypes.MsgExecuteContract{ - Sender: addrs[3].String(), - Contract: addr1.String(), - Msg: []byte{}, - Funds: sendCoins, - } - msgs = append(msgs, msg2) - return msgs - }, - minFeeAmount: feeAmt, - expectProceeds: feeAmt, - }, - } - - // there should be no coin in burn module - for _, c := range cases { - s.SetupTest(true) // setup - require := s.Require() - tk := s.app.TreasuryKeeper - ak := s.app.AccountKeeper - bk := s.app.BankKeeper - burnSplitRate := sdk.NewDecWithPrec(5, 1) - - // Set burn split rate to 50% - tk.SetBurnSplitRate(s.ctx, burnSplitRate) - - fmt.Printf("CASE = %s \n", c.name) - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - tk.AddBurnTaxExemptionAddress(s.ctx, addrs[0].String()) - tk.AddBurnTaxExemptionAddress(s.ctx, addrs[1].String()) - - mfd := tax2gasante.NewFeeDecorator(s.app.AccountKeeper, s.app.BankKeeper, s.app.FeeGrantKeeper, s.app.TreasuryKeeper) - antehandler := sdk.ChainAnteDecorators(mfd) - - for i := 0; i < 4; i++ { - coins := sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, sdk.NewInt(10000000))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addrs[i], coins) - } - - // msg and signatures - feeAmount := sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, c.minFeeAmount)) - gasLimit := testdata.NewTestGasLimit() - require.NoError(s.txBuilder.SetMsgs(c.msgCreator()...)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{c.msgSigner}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - require.NoError(err) - - _, err = antehandler(s.ctx, tx, false) - require.NoError(err) - - // check fee collector - feeCollector := ak.GetModuleAccount(s.ctx, authtypes.FeeCollectorName) - amountFee := bk.GetBalance(s.ctx, feeCollector.GetAddress(), core.MicroSDRDenom) - require.Equal(amountFee, sdk.NewCoin(core.MicroSDRDenom, sdk.NewDec(c.minFeeAmount).Mul(burnSplitRate).TruncateInt())) - - // check tax proceeds - taxProceeds := s.app.TreasuryKeeper.PeekEpochTaxProceeds(s.ctx) - require.Equal(taxProceeds, sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, sdk.NewInt(c.expectProceeds)))) - } -} - -// go test -v -run ^TestAnteTestSuite/TestBurnSplitTax$ github.com/classic-terra/core/v3/custom/auth/ante -func (s *AnteTestSuite) TestBurnSplitTax() { - s.runBurnSplitTaxTest(sdk.NewDecWithPrec(1, 0)) // 100% - s.runBurnSplitTaxTest(sdk.NewDecWithPrec(1, 1)) // 10% - s.runBurnSplitTaxTest(sdk.NewDecWithPrec(1, 2)) // 0.1% - s.runBurnSplitTaxTest(sdk.NewDecWithPrec(0, 0)) // 0% burn all taxes (old burn tax behavior) - s.runBurnSplitTaxTest(sdk.NewDecWithPrec(-1, 1)) // -10% invalid rate -} - -func (s *AnteTestSuite) runBurnSplitTaxTest(burnSplitRate sdk.Dec) { - s.SetupTest(true) // setup - require := s.Require() - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - ak := s.app.AccountKeeper - bk := s.app.BankKeeper - tk := s.app.TreasuryKeeper - mfd := tax2gasante.NewFeeDecorator(ak, bk, s.app.FeeGrantKeeper, tk) - antehandler := sdk.ChainAnteDecorators(mfd) - - // Set burn split tax - tk.SetBurnSplitRate(s.ctx, burnSplitRate) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - coins := sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, sdk.NewInt(1000000))) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, coins) - - // msg and signatures - sendAmount := int64(1000000) - sendCoins := sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, sendAmount)) - msg := banktypes.NewMsgSend(addr1, addr1, sendCoins) - - gasLimit := testdata.NewTestGasLimit() - require.NoError(s.txBuilder.SetMsgs(msg)) - s.txBuilder.SetGasLimit(gasLimit) - expectedTax := tk.GetTaxRate(s.ctx).MulInt64(sendAmount).TruncateInt() - if taxCap := tk.GetTaxCap(s.ctx, core.MicroSDRDenom); expectedTax.GT(taxCap) { - expectedTax = taxCap - } - - // set tax amount - s.txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(core.MicroSDRDenom, expectedTax))) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - require.NoError(err) - - // set zero gas prices - s.ctx = s.ctx.WithMinGasPrices(sdk.NewDecCoins()) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - feeCollector := ak.GetModuleAccount(s.ctx, authtypes.FeeCollectorName) - - amountFeeBefore := bk.GetAllBalances(s.ctx, feeCollector.GetAddress()) - - totalSupplyBefore, _, err := bk.GetPaginatedTotalSupply(s.ctx, &query.PageRequest{}) - require.NoError(err) - fmt.Printf( - "Before: TotalSupply %v, FeeCollector %v\n", - totalSupplyBefore, - amountFeeBefore, - ) - - // send tx to BurnTaxFeeDecorator antehandler - _, err = antehandler(s.ctx, tx, false) - require.NoError(err) - - // burn the burn account - tk.BurnCoinsFromBurnAccount(s.ctx) - - feeCollectorAfter := sdk.NewDecCoinsFromCoins(bk.GetAllBalances(s.ctx, ak.GetModuleAddress(authtypes.FeeCollectorName))...) - taxes := tax2gasante.FilterMsgAndComputeTax(s.ctx, tk, msg) - burnTax := sdk.NewDecCoinsFromCoins(taxes...) - - if burnSplitRate.IsPositive() { - distributionDeltaCoins := burnTax.MulDec(burnSplitRate) - - // expected: community pool 50% - fmt.Printf("BurnSplitRate %v, DistributionDeltaCoins %v\n", burnSplitRate, distributionDeltaCoins) - require.Equal(feeCollectorAfter, distributionDeltaCoins) - burnTax = burnTax.Sub(distributionDeltaCoins) - } - - totalSupplyAfter, _, err := bk.GetPaginatedTotalSupply(s.ctx, &query.PageRequest{}) - require.NoError(err) - if !burnTax.Empty() { - // expected: total supply = tax - split tax - require.Equal( - sdk.NewDecCoinsFromCoins(totalSupplyBefore.Sub(totalSupplyAfter...)...), - burnTax, - ) - } - - fmt.Printf( - "After: TotalSupply %v, FeeCollector %v\n", - totalSupplyAfter, - feeCollectorAfter, - ) -} - -// go test -v -run ^TestAnteTestSuite/TestEnsureIBCUntaxed$ github.com/classic-terra/core/v3/custom/auth/ante -// TestEnsureIBCUntaxed tests that IBC transactions are not taxed, but fee is still deducted -func (s *AnteTestSuite) TestEnsureIBCUntaxed() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator( - s.app.AccountKeeper, - s.app.BankKeeper, - s.app.FeeGrantKeeper, - s.app.TreasuryKeeper, - ) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - account := s.app.AccountKeeper.NewAccountWithAddress(s.ctx, addr1) - s.app.AccountKeeper.SetAccount(s.ctx, account) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, 1_000_000_000))) - - // msg and signatures - sendAmount := int64(1_000_000) - sendCoins := sdk.NewCoins(sdk.NewInt64Coin(core.OsmoIbcDenom, sendAmount)) - msg := banktypes.NewMsgSend(addr1, addr1, sendCoins) - - feeAmount := sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, 1_000_000)) - gasLimit := testdata.NewTestGasLimit() - s.Require().NoError(s.txBuilder.SetMsgs(msg)) - s.txBuilder.SetFeeAmount(feeAmount) - s.txBuilder.SetGasLimit(gasLimit) - - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - // set zero gas prices - s.ctx = s.ctx.WithMinGasPrices(sdk.NewDecCoins()) - - // Set IsCheckTx to true - s.ctx = s.ctx.WithIsCheckTx(true) - - // IBC must pass without burn - _, err = antehandler(s.ctx, tx, false) - s.Require().NoError(err, "Decorator should not have errored on IBC denoms") - - // check if tax proceeds are empty - taxProceeds := s.app.TreasuryKeeper.PeekEpochTaxProceeds(s.ctx) - s.Require().True(taxProceeds.Empty()) -} - -// go test -v -run ^TestAnteTestSuite/TestOracleZeroFee$ github.com/classic-terra/core/v3/custom/auth/ante -func (s *AnteTestSuite) TestOracleZeroFee() { - s.SetupTest(true) // setup - s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() - - mfd := tax2gasante.NewFeeDecorator( - s.app.AccountKeeper, - s.app.BankKeeper, - s.app.FeeGrantKeeper, - s.app.TreasuryKeeper, - ) - antehandler := sdk.ChainAnteDecorators(mfd) - - // keys and addresses - priv1, _, addr1 := testdata.KeyTestPubAddr() - account := s.app.AccountKeeper.NewAccountWithAddress(s.ctx, addr1) - s.app.AccountKeeper.SetAccount(s.ctx, account) - testutil.FundAccount(s.app.BankKeeper, s.ctx, addr1, sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, 1_000_000_000))) - - // new val - val, err := stakingtypes.NewValidator(sdk.ValAddress(addr1), priv1.PubKey(), stakingtypes.Description{}) - s.Require().NoError(err) - s.app.StakingKeeper.SetValidator(s.ctx, val) - - // msg and signatures - - // MsgAggregateExchangeRatePrevote - msg := oracletypes.NewMsgAggregateExchangeRatePrevote(oracletypes.GetAggregateVoteHash("salt", "exchange rates", val.GetOperator()), addr1, val.GetOperator()) - s.txBuilder.SetMsgs(msg) - s.txBuilder.SetGasLimit(testdata.NewTestGasLimit()) - s.txBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewInt64Coin(core.MicroSDRDenom, 0))) - privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - _, err = antehandler(s.ctx, tx, false) - s.Require().NoError(err) - - // check fee collector empty - balances := s.app.BankKeeper.GetAllBalances(s.ctx, s.app.AccountKeeper.GetModuleAddress(authtypes.FeeCollectorName)) - s.Require().Equal(sdk.Coins{}, balances) - - // MsgAggregateExchangeRateVote - msg1 := oracletypes.NewMsgAggregateExchangeRateVote("salt", "exchange rates", addr1, val.GetOperator()) - s.txBuilder.SetMsgs(msg1) - tx, err = s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) - s.Require().NoError(err) - - _, err = antehandler(s.ctx, tx, false) - s.Require().NoError(err) - - // check fee collector empty - balances = s.app.BankKeeper.GetAllBalances(s.ctx, s.app.AccountKeeper.GetModuleAddress(authtypes.FeeCollectorName)) - s.Require().Equal(sdk.Coins{}, balances) -} diff --git a/custom/auth/post/post.go b/custom/auth/post/post.go index 95f0f1867..0a5fa707b 100644 --- a/custom/auth/post/post.go +++ b/custom/auth/post/post.go @@ -3,12 +3,21 @@ package post import ( dyncommkeeper "github.com/classic-terra/core/v3/x/dyncomm/keeper" dyncommpost "github.com/classic-terra/core/v3/x/dyncomm/post" + tax2gasKeeper "github.com/classic-terra/core/v3/x/tax2gas/keeper" + tax2gasPost "github.com/classic-terra/core/v3/x/tax2gas/post" + "github.com/classic-terra/core/v3/x/tax2gas/types" + tax2gasTypes "github.com/classic-terra/core/v3/x/tax2gas/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/auth/ante" ) // HandlerOptions are the options required for constructing a default SDK AnteHandler. type HandlerOptions struct { - DyncommKeeper dyncommkeeper.Keeper + AccountKeeper ante.AccountKeeper + BankKeeper types.BankKeeper + DyncommKeeper dyncommkeeper.Keeper + TreasuryKeeper tax2gasTypes.TreasuryKeeper + Tax2Gaskeeper tax2gasKeeper.Keeper } // NewPostHandler returns an PostHandler that checks and set target @@ -16,5 +25,6 @@ type HandlerOptions struct { func NewPostHandler(options HandlerOptions) (sdk.PostHandler, error) { return sdk.ChainPostDecorators( dyncommpost.NewDyncommPostDecorator(options.DyncommKeeper), + tax2gasPost.NewTax2GasPostDecorator(options.AccountKeeper, options.BankKeeper, options.TreasuryKeeper, options.Tax2Gaskeeper), ), nil } diff --git a/custom/wasm/keeper/handler_plugin.go b/custom/wasm/keeper/handler_plugin.go index 3db8e9a00..b2e8693ce 100644 --- a/custom/wasm/keeper/handler_plugin.go +++ b/custom/wasm/keeper/handler_plugin.go @@ -1,7 +1,13 @@ package keeper import ( - "github.com/classic-terra/core/v3/x/tax2gas/ante" + "fmt" + "regexp" + "strings" + + marketexported "github.com/classic-terra/core/v3/x/market/exported" + oracleexported "github.com/classic-terra/core/v3/x/oracle/exported" + "github.com/classic-terra/core/v3/x/tax2gas/types" treasurykeeper "github.com/classic-terra/core/v3/x/treasury/keeper" wasmvmtypes "github.com/CosmWasm/wasmvm/types" @@ -11,7 +17,9 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" cosmosante "github.com/cosmos/cosmos-sdk/x/auth/ante" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authz "github.com/cosmos/cosmos-sdk/x/authz" bankKeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" @@ -78,10 +86,13 @@ func (h SDKMessageHandler) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddr for _, sdkMsg := range sdkMsgs { // Charge tax on result msg - taxes := ante.FilterMsgAndComputeTax(ctx, h.treasuryKeeper, sdkMsg) + taxes := FilterMsgAndComputeTax(ctx, h.treasuryKeeper, sdkMsg) if !taxes.IsZero() { eventManager := sdk.NewEventManager() contractAcc := h.accountKeeper.GetAccount(ctx, contractAddr) + if err := deductFromMsgs(ctx, h.treasuryKeeper, taxes, sdkMsg); err != nil { + return nil, nil, err + } if err := cosmosante.DeductFees(h.bankKeeper, ctx.WithEventManager(eventManager), contractAcc, taxes); err != nil { return nil, nil, err } @@ -129,3 +140,188 @@ func (h SDKMessageHandler) handleSdkMessage(ctx sdk.Context, contractAddr sdk.Ad // registered within the `msgServiceRouter` already. return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "can't route message %+v", msg) } + +var IBCRegexp = regexp.MustCompile("^ibc/[a-fA-F0-9]{64}$") + +func isIBCDenom(denom string) bool { + return IBCRegexp.MatchString(strings.ToLower(denom)) +} + +// FilterMsgAndComputeTax computes the stability tax on messages. +func FilterMsgAndComputeTax(ctx sdk.Context, tk types.TreasuryKeeper, msgs ...sdk.Msg) sdk.Coins { + taxes := sdk.Coins{} + + for _, msg := range msgs { + switch msg := msg.(type) { + case *banktypes.MsgSend: + if !tk.HasBurnTaxExemptionAddress(ctx, msg.FromAddress, msg.ToAddress) { + taxes = taxes.Add(computeTax(ctx, tk, msg.Amount)...) + } + + case *banktypes.MsgMultiSend: + tainted := 0 + + for _, input := range msg.Inputs { + if tk.HasBurnTaxExemptionAddress(ctx, input.Address) { + tainted++ + } + } + + for _, output := range msg.Outputs { + if tk.HasBurnTaxExemptionAddress(ctx, output.Address) { + tainted++ + } + } + + if tainted != len(msg.Inputs)+len(msg.Outputs) { + for _, input := range msg.Inputs { + taxes = taxes.Add(computeTax(ctx, tk, input.Coins)...) + } + } + + case *marketexported.MsgSwapSend: + taxes = taxes.Add(computeTax(ctx, tk, sdk.NewCoins(msg.OfferCoin))...) + + case *wasmtypes.MsgInstantiateContract: + taxes = taxes.Add(computeTax(ctx, tk, msg.Funds)...) + + case *wasmtypes.MsgInstantiateContract2: + taxes = taxes.Add(computeTax(ctx, tk, msg.Funds)...) + + case *wasmtypes.MsgExecuteContract: + if !tk.HasBurnTaxExemptionContract(ctx, msg.Contract) { + taxes = taxes.Add(computeTax(ctx, tk, msg.Funds)...) + } + + case *authz.MsgExec: + messages, err := msg.GetMessages() + if err == nil { + taxes = taxes.Add(FilterMsgAndComputeTax(ctx, tk, messages...)...) + } + } + } + + return taxes +} + +func deductFromMsgs(ctx sdk.Context, tk types.TreasuryKeeper, taxes sdk.Coins, msgs ...sdk.Msg) (err error) { + for _, msg := range msgs { + switch msg := msg.(type) { + case *banktypes.MsgSend: + if !tk.HasBurnTaxExemptionAddress(ctx, msg.FromAddress, msg.ToAddress) { + msg.Amount = msg.Amount.Sub(taxes...) + fmt.Println("msg.Amount bank send: ", msg.Amount) + } + + case *banktypes.MsgMultiSend: + tainted := 0 + + for _, input := range msg.Inputs { + if tk.HasBurnTaxExemptionAddress(ctx, input.Address) { + tainted++ + } + } + + for _, output := range msg.Outputs { + if tk.HasBurnTaxExemptionAddress(ctx, output.Address) { + tainted++ + } + } + + if tainted != len(msg.Inputs)+len(msg.Outputs) { + for _, input := range msg.Inputs { + input.Coins = input.Coins.Sub(taxes...) + } + } + + case *marketexported.MsgSwapSend: + taxes = taxes.Add(computeTax(ctx, tk, sdk.NewCoins(msg.OfferCoin))...) + if found, taxCoin := taxes.Find(msg.OfferCoin.Denom); found { + if msg.OfferCoin, err = msg.OfferCoin.SafeSub(taxCoin); err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "insufficient funds to pay tax") + } + } + + case *wasmtypes.MsgInstantiateContract: + var neg bool + if msg.Funds, neg = msg.Funds.SafeSub(taxes...); neg { + return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "insufficient funds to pay tax") + } + + case *wasmtypes.MsgInstantiateContract2: + var neg bool + if msg.Funds, neg = msg.Funds.SafeSub(taxes...); neg { + return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "insufficient funds to pay tax") + } + + case *wasmtypes.MsgExecuteContract: + if !tk.HasBurnTaxExemptionContract(ctx, msg.Contract) { + fmt.Println("msg.Funds before: ", msg.Funds) + var neg bool + if msg.Funds, neg = msg.Funds.SafeSub(taxes...); neg { + return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "insufficient funds to pay tax") + } + fmt.Println("msg.Funds after: ", msg.Funds) + } + + case *authz.MsgExec: + messages, err := msg.GetMessages() + if err == nil { + deductFromMsgs(ctx, tk, taxes, messages...) + } + } + } + + return nil +} + +// computes the stability tax according to tax-rate and tax-cap +func computeTax(ctx sdk.Context, tk types.TreasuryKeeper, principal sdk.Coins) sdk.Coins { + taxRate := tk.GetTaxRate(ctx) + if taxRate.Equal(sdk.ZeroDec()) { + return sdk.Coins{} + } + + taxes := sdk.Coins{} + + for _, coin := range principal { + if coin.Denom == sdk.DefaultBondDenom { + continue + } + + if isIBCDenom(coin.Denom) { + continue + } + + taxDue := sdk.NewDecFromInt(coin.Amount).Mul(taxRate).TruncateInt() + + // If tax due is greater than the tax cap, cap! + taxCap := tk.GetTaxCap(ctx, coin.Denom) + if taxDue.GT(taxCap) { + taxDue = taxCap + } + + if taxDue.Equal(sdk.ZeroInt()) { + continue + } + + taxes = taxes.Add(sdk.NewCoin(coin.Denom, taxDue)) + } + + return taxes +} + +func isOracleTx(msgs []sdk.Msg) bool { + for _, msg := range msgs { + switch msg.(type) { + case *oracleexported.MsgAggregateExchangeRatePrevote: + continue + case *oracleexported.MsgAggregateExchangeRateVote: + continue + default: + return false + } + } + + return true +} diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 000000000..b4d7b4834 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +terrad tx wasm store forwarder.wasm --from test0 --keyring-backend test --home mytestnet --gas 2000000 -y + +sleep 5 + +terrad tx wasm instantiate 1 {} --label test --no-admin --from test0 --keyring-backend test --home mytestnet -y + +sleep 5 + +contract_address=$(terrad q wasm list-contract-by-code 1 --output json | jq -r '.contracts[0]') + +echo "Contract_addr:" $contract_address + +recipient=$(terrad keys show test1 --keyring-backend test --home mytestnet --output json | jq -r '.address') + +echo "Recipient:" $recipient + +sleep 5 + +terrad tx wasm execute $contract_address '{"forward":{"recipient":"'$recipient'","amount":"100000"}}' --from test0 --keyring-backend test --home mytestnet --amount 100000uluna + +# terra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au \ No newline at end of file diff --git a/deploy2.sh b/deploy2.sh new file mode 100755 index 000000000..0333665f8 --- /dev/null +++ b/deploy2.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +terrad tx wasm store forwarder4.wasm --from test0 --keyring-backend test --home mytestnet --gas 2000000 -y + +sleep 5 + +terrad tx wasm instantiate 1 {} --label test --no-admin --from test0 --keyring-backend test --home mytestnet -y + +sleep 5 + +terrad tx wasm instantiate 1 {} --label test --no-admin --from test0 --keyring-backend test --home mytestnet -y + +sleep 5 + +contract_address0=$(terrad q wasm list-contract-by-code 1 --output json | jq -r '.contracts[0]') +contract_address1=$(terrad q wasm list-contract-by-code 1 --output json | jq -r '.contracts[1]') + +echo "Contract_addr0:" $contract_address0 +echo "Contract_addr1:" $contract_address1 + +recipient=$(terrad keys show test1 --keyring-backend test --home mytestnet --output json | jq -r '.address') + +echo "Recipient:" $recipient + +sleep 5 + +terrad tx wasm execute $contract_address0 '{"forward_to_contract":{"contract":"'$contract_address1'","recipient":"'$recipient'","amount":"10000"}}' --from test0 --keyring-backend test --home mytestnet --amount 10000uluna --gas 500000 + +# terra14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9ssrc8au \ No newline at end of file diff --git a/draft_metadata.json b/draft_metadata.json new file mode 100644 index 000000000..616d00a39 --- /dev/null +++ b/draft_metadata.json @@ -0,0 +1,8 @@ +{ + "title": "title", + "authors": "genuine", + "summary": "summary", + "details": "details", + "proposal_forum_url": "idkhttps://github.com/cosmos/chain-registry/blob/master/terra/chain.json", + "vote_option_context": "asd" +} \ No newline at end of file diff --git a/draft_proposal.json b/draft_proposal.json new file mode 100644 index 000000000..583ef80e3 --- /dev/null +++ b/draft_proposal.json @@ -0,0 +1,17 @@ +{ + "messages": [ + { + "@type": "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", + "authority": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n", + "plan": { + "name": "", + "time": "0001-01-01T00:00:00Z", + "height": "0", + "info": "", + "upgraded_client_state": null + } + } + ], + "metadata": "ipfs://CID", + "deposit": "100uluna" +} \ No newline at end of file diff --git a/forwarder.wasm b/forwarder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a2e7a479434eaa18459e544cca20edcd26e0f730 GIT binary patch literal 161731 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 Qg};Sw`3&Gb0DQv#0S?gMkpKVy literal 0 HcmV?d00001 diff --git a/forwarder2.wasm b/forwarder2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..cbc7cbd3716312d415e23126c77276bdcdd9dd47 GIT binary patch literal 161040 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≶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�fur*FY?iHOPV;23QmO5j%|i3uoZ5=72Ub75XtM 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

l9XgUuN|~I ztD^qo^ov5}v7#c*YHg3*rf_QBksy^{yMU7G%^ztE*a!;NsS} zhqw&&NyV&?Wc&9FaD#xm>B=!m-H5{Gy)mXBwxI5-7lj06Z=_0lMjad zjLjHoB{~&SB|f9E?vA%%ROdR)5=CQ__=HMa)2lj89Vdt3lsTf(u)1y=>R%iyzYxVx z$DR6O^LVT4UmT5JkiVuA9h25$6tV6?7^k0VIZVriF=7~t>;JW0vF62A{rsvPr?doy zkx9eP>e1HA0M<18h#qad3@~B&j2^cPm(ToX9!HkX=*8OQGxoNS8WoOnZ<_1Lmd}`( zhC#xDpP$V*N;3A7H+Pw@Fzx+&y8^)87deJ9Bo=q&Ju+xh&tXWj|#qc~9$}Uz_ zWMP)br7*R7J0VY(Bq-~sDSb)U*(>;I9O!4bT6k+K_QE@CP7cnMM#n)o{4|}*yioE4 zN?7XsUj*{Hy>nX4_^8$QvbLl1P@bi?D3D7A7pl`3(DddfvRQ48B!Fpiq=cBGzPd_w zb{WJeYcqX05X2-EbhXfkQ1~T>B!|@qm@NZl%Yd0J^!_E*Su?QnC_9+hDi%Lp`tB5n z6T^QX0zEUJFRWmjD#W_4W!^Y)1$m8!uJ1^-Dpl=U1ACU{tfUd})>N(jc(Gm4Xq-l0 z$d>CwK6?GKcc%06`3PZ;uNT{puH0pqnVOzW*6^qheVAH<7X&ejEA zp*N!~?49!Ai)rUy)lDZDO}UaTD}5C{T9WQkxX+ceD~-QX8fNcov5W}x2TjEJa?}C$ zkTlA}7V>g`4q=YY6xXgRI;EWY*w#TF6`fH|rM4)O3nZoxOGlBF);FYnoR@OJ9&|2) z_DJCF=ea94ieS+Z8$~dA1$bFo!sL(w5wZ~XchR;WLOuobc@;fX0fyw*b^VksxR;0C zmrZw6w`Q~53*XwbC|*Shr7&wr<}G<3rK&mk1UMQN+z$(^5VfevCvVdyeJSKDy4 zTIsl}abhNEM%x?V*`Hq3p$%HrYRi9F#AmH& zwqiMX(XFazR^E*j-SVO#Riar{v`J_Kp(ZNqC^Q%1!*_PVc0C^mVXN9WoGc4~(Sdq&Ns)NK69ab!V|W>2+uOEtD;&THYF2Hmy}vAeVRp25}P9*wLpNqcMT zs1~;8xIE%!5snJJe$`rUcxUI<8%Yn}$@o>x{)LrlJs0Yj1##O~Xh78X63{>+!Q*;b zM8N8#@HY?&*KavZDmZE3BV;gM_*dva)P71jc(zf=0x5O2mAiS%vr-nY7KF(x+kXq@ z%oDp*xh%*}OBQfkRb3Wjk_EO=uxe0w6Sip(>s2KSY`y7F7UV7qRMSSXKx=7ASzzJ} zlgG~ta?u3~kPLw7L>XW$Flm$t|0PSr`8mKb$^ee$jxvA+sFDGw>n;OiK!lX%R%qxr znC4DU`cY7t>t%g-khL6vUcleAr2Yew7UCWmw z+gbXcJ?(gN6(Xt;w(B?*>EYQt&KYbjTqc9u)|E=BCw2$(XJKk((5}kB#j$WaxvFSa zj+XG`uQBNTaOe?SaTZxaY|4^0lgv#bAwjv?&IW_#5<7|@1CgHW$q?W6WnU;4v7QK6 z-_OCLOw6`m({h~B>YF4~=MSdSwro`9$lK^8$}(U(Z}!J4tGg6$l}wB`X`Al^8_UaI z3#;|X=Zox;C%LFoVJTaiW(a2IC#>)a$v4w}^WMq4wc{&R(5bL}bgSZL0I zdUgilmTf>*Qdr@PJ#`Oo&IeCjdurL%8kRgAa=9E{hSq<2i!#ZN!4P z2J0DSEyLymG=04xtwy{=fobgmEFtBvh?0q&gOE&WLqCcQrgv;3kSLk3Mi)CSIyit* z3kzg_`4m%)e@59hE_{-qTpQrIbjV1!X(wca+nW^RRu*TXO&j+OvbdX3ih$5=MtUjz zDi$ZXq1j-hAqhpc82={k>`DD$6lJL}skR8GeSS+~ta$XfESj|A~?QT}> zjw*!WK|#5Y;#o~=ZA1+!VSuF9_E(CHthIR{h;9gsON7Q%c>@e)M7=?J!%xOKx*p(| z2s2MGayNzoYDyC|rz@|66g`H{%yemWAV-g}6#N+wR|L<}3vx2gpa7lf{i}pUAlC$O zf#^Amwiu)3nP6V=#BZ!JWf30dVhY>0+nlHnPoGe>HhjvYm~h8hr+hwa=4%VR50eZ> zIO~dlg0(;VAgpyC$APhbVXC&VQB!P<5k@#eTS|9+A;XgtQVTUMVXi9R%2pX(_H5q& z(6y+{a^gy{82ctw&YYVh?Kc07|Es^s74Qs2Gt$;;wFLJ+&V9Vv@~nRxWe0sYCTo=< zS*^W+5NmDwwoV!)AUsfy>+Kn|9R%$m2-eigoTF`cFb?fC;EyfSSju6oeJpLmw9c=l zX)_A9%*Mhf%pg|{4%%r2FJITtituW+lGd7k^;bHEU=6HbXY7PxyQjD0#6y6t0~D4) z$Ckz>ukBRq!w1u}VST8mZEgFTalEblYW>$HNuKlH_`h{t#VjZ5O9{{6_-bFnwJk|)>Aqr}~Jn1|7MsPBwFvLe^M>nj3+HnN#Mq{;tnhk`{-3j$Ek z+@kt9un=muieNR`1CW+v&XZs}9z_`AW?>CP$SG~BgAt;dzQD|?0(@3|2z^f){-R0P z+3v*@S5xbN=`p)cvCdts^ix_f8%ZURDUtu5A5@8ZXyg5V}$>nAp zWwf)AP{!6(HUlMTE{kQRhAF*R+|&y#Zc5VxR@_vrxVZz4&dqvpHH3C^s)o>T9&24w z#pP<9G#D*{<)DoH?!|ymMTw35%Xp8hWSkZ<(#W%Ng6)Y`j^>IJz>C5zqcmXU=&u~S zDXiT7(81jUO%97noU9p_m@TY4n6oKbnD9~ZZ^QE+glKW#$cx3AyS(3))z-FxRgGeY ztP&b>8Oz0HjWMjS{>5I?psD@KG7sUk%1m{{Vp5SZe@)l3Ta2Oah7g6_!j?r-Yt2r$``1^K&<}^Xm|me79q`)K+v&1|i&Ynh&z z?QPn;Wh;Qn!Vmv{HqK$difSI;5g*U)Zqegs9`)26-OYOZjrh2|yGf5f9Usr>_VoC@ z@$ny;N)SH&+y3p&E}L~_;V0wcMdIV^{`^~>`qjQR=GWrm#a;B!EWD?Bv^6T9{D^0M zmC4TV>+x~UqQ%26#m8BBf3xs`_}EpHQ5JqMK5kba606aUc~RTN!?W-o;^S{yuxJ)O z|C^rtTH{#Zf%y3K&Yu+S!$65HWJGh@>5EvZ=(zCLBo2e&%3!(stQcWN#`!Ddx+{;9 z6XuL8Tl%L-g&uV;#5&%SkGq@0Nj9~wKti!GZTe2@_-~*eT5A*uHL$t==~wVK8&>dt zj(KBF?%D8isurG>Yh&ZO-_?MKhPJ}ccBQM0K~7LyhLP@bHwiu+cBKELMiu^}xCJ?y ze&1d=kou`$rH$jcO!V{GhqBwdP%unJA8S=6A7W_buVEQO(*e4b|xwU9WZfP{n=dz}>V_sUlEY(lj$X+h4dMswj z!WSvW+z|C8Rdj_eA7EcIn#u>VpnNhex}GP}0YCa!53*6@6+K^-xn;mfzG z8eF6hKCg@-6Qm0O<<8epXW{9pwe_;(-64}T&-p1|`5HoNxq5989B29fMigfZ9lxiO zg?AtS?7#i<2jBD22M>0%4wD9AyE0r!IPxhCQsu+?U(FM$k&v@e6=#frB&ARSkf23r zqI5b1atJB2VAZ_wl4iAIyK-wPwVNzF`rFTb^0p@)|Icsj{0!k~LRV%{2@j%p6~*2L z=@s&tI*AV$$Nd8pj$q%t9itnu87A0Jh+1injD3K>l&7H$x6CKf{VBta3+hrqr1LlnRG*RYBk?p0i4yF+$KF|eH+p~v`sTb6t=~?4TL}_KbjPX z&c|!(8!B?i{1Ar}mCgKsf@YUqtn^T+sYsKTq~SH6wkNb%)Bf0&!x$dyTAxqSz@`T1!v0Q*&jly}kvq$sN4=7IGCB{b%_oa#bO z`Cl2;m*_N*yFhhoQ*T9r$ELN-^KYDvM#g3fTfEtcH5(j5TPmAP!^{bd9Zyef+FaC= zsm-(%>^5dRT<#8#(1b>?n}OR1yMYnd&95&2bzV}#Zda`wy9GYsMIF0&S7EpA#aL_D zExj`KJ!1C{h#VbP`2}Y~3fe*Ym+LSCikQ%e=qhTU^V&G<3Rb8&oRIYG3?Y(?XEL<^ zn-CY{fE;p|$u-p(hme3l?m;{jndu#Rn z3zg$NRuxI_H_$`5iwP72%HIsXQMRzvE{id7aVh-keF3YK`r|9spRMilwOH@7}Y@9yz{wVDy)=EWi6xlv`1O*m4#t>?C zQM$BGxw5jQ3`g%{DMLUKd6K0fzhXP+!5#BW8m->P6^BA<-uncvsU=>1)5>)*sbuHA zWN>mx`A`Ey@vzSbvBshw^U&yhnx^tqBbLS?ADnG(B{zCra*lzJ_CBK`KAvvte7c{_ zdb|sBLD3ZpfW9DZb{f#8hb1HhZA`wR$r>U+ElCDIHB?xeM-G2TU6Ka^G+OGXHueYg z5LV=f-4@Q_mXkNy2nhLd<-VOb@a93XbO7fhg{AwK!Z$HJ*w(%RcYgned?OW+Mx$u= zem~uB?$j)w&lnwn2b+R|39JAJOj&6{L;|lV!`9GRc8Uj|l8zIAVQ7U{90-klpofc+ z%UBPEcYqPY4MGh?f~o-VB5nF+x^dE$%;zlNBHrKoC~Fd*6WCjD@ONFr)X`bYPW&j1UD258iE{VXZb6lxV zaF(~8Px0P?{fHJyVHm=l8X+i2%934aqz~J`JbyfD2uyJr4puYVQY8O+p9x&XilP_{ zV*{`;t%9NYl=!MaDjXK3?B6HYt*Nz?LV&4WtMMt-Dx0B1k+O5Ox+9bvj1Zk#BFt}$ z01Z?#nAK2n2(vnJLX#D88qkKw*)rtBQUxciRo*yMGsjVDF`h3Cg}aMHSH9LpI0{_w zZ3*#o5LQ_j^lwP5SULx@Aw1lHey=GEV3?O?4f?YT!}#C)@V7?Tsb`4iP#expK1M^8A&yh4x_R9}+TMS&R^Wdd}l%1?JbCvMe2IZtUXFHOQFQ=zGJz)6NrUSi31K-KadnV$}G2ue228@-M~YPNO_*D zK4Q8WkJ5&97UKqvfVcDR_}81C@|fOnL;ev;4ApwEHW z@rWs=-(lY3I}gVqlGjs0dc`uwUEoAXdQTx4xco5_1^BW=huSzdmOE&@!E`p>Vn?*D zkR_r6npD`Z#DWgN#tppS7`qY1)~JcJ$f(;w1ck7)NE~>qZq{6M%35pRS6>_VR?nD? zl%C`T$%O4AoW!s`mvT~wD@cQxrEnI9%$6=Pu_u(9(wrmY zgm8D=pi`F55y}2$TA3(|Db_BY)`_J>RG&sz6`XOTimI%YPjb>G@9>#&o*I3)hZAVNGH@0!IX2#G*!_m zSTyaT`_pOfQ_AhqR8U8ng2l$V*i5mMrb$hj<^ibfAK20u4O_`70cKwE7|N6$trfsr z*iyn77DOZ7Dm(=(@xOy+f&_mcq*+r~RT>doHd4CKbo9h9=!t+^m9(UYmDtfrWWmgM zuU<74)GQ`ST%SNBN+pgyLgVf(qFS1g zVwy<3;gAw_BQolmh=AE2h!RR+U}^@sF(aa7OcCQWdSZ+vcO;*?O@NtWmFX8I(;Nw< z9}NU2E1~QceH9GkkyEcRVT6%XSZ7GEf04F9S+hEIKvxZbz|&f(Mr96vQ}wO=-V(rH zYl+5GV;8F~iGe9{A1+)Qeq-ZIF#t|(g7t_&ek&7W)=!DCl1JC!BaRyd8=Zl%GkV~! z)Nk<9&5xm(r)FMdSref}H`(aDMRE@ZLk95$MI zkS?SLU8|J)^l*1f(Y4CnX?epf~E=ll6zE^`JLOd8+>Kj2`qxDJSX=&*?#Ll=5u- z;n4SyqBlxesXrXigWf3RaQ)#9J?M>6Zm&Pwr3bxH$~}6xGd}2ArQD~7yJL#3RkjE8 z@cx*hYnAOGJsgcGx>ng9*29A_Mb|3ZF+Hrt6kV%qkLlr&n4)Wy?Fl_R8dG$wvK`mM z<1t0oD%;a~crvEwT4j4i4^PDuU8`)*>ET37(Y4BU2)i~s8&h*%3O_bj^=xe(E0+vRo!oivxP)m`inWh{ z{9_V-xq_t3UMOJzL;DoF+rUQg2XVlY`35$UjIiElyfq~maZpGya!~9kC1ck614V_= z6RQx_F{||6B2!^mt-UT4Yy?N7f*h4#k%~bo5VR_BZxYF1UXFvT&N5#qA?u}EnO1sb z8~_1X*s`SMMwka_qIwjS18o;2t-2vu=Ju<#x&(m~pOY&G-e@2=9GBrxbTkB|K0@z4 zVq+rvI~yuwbqi7oS+;**+xU;TH?X5kAxpIy2yCET(w{U?w7@TFtO9VG;1=Ns?zAA8 zhpt@tIG4=ZxD`06)A@GqaWuF})tzGbK%ka&8X=%MK_qz~a-i!kRw+hC+;~g`Np@Xb{yttBaJNxPDv#a ze#lQIe@f|8ks-e`+hJOo;W~Ibr&m35|61D>6T`=I(gSU84|!rJO0j=x8SSy;&W~qC zlM0oj1t=HFRJj7}5MFl$GW$S^T!ERp0<+2$2&}ZXVix^@B4ht6TRg!3tnqEyT6B62 zxH5c&^03M2W5=51Y=wd%qMnKfZP@V|&{(N``o7=L5CF2uIXKWN21WsI4ONhV(J4z* zP$^I*K-}@g(1w{*SLdz&npdTQIiQGwrvW1w;{<5xQJJ}PJ8w(72hFM}$GomC5zXwj zWsBB<98@V>g-1D35N8VDjNS+##{xiY)3zwW6Dvm%WarqA?Q>mBbdIzQnek;0Xn`m> z6U$5;svELQps8*5>B1V8spgEbOa_gzg(l82_3_KcGP8N=iA>Y0guO&0iB=9+06nC2 zhGOcp#>H4mrA}-9(p!IW##zfZ&N#8{MPcT@2NwYwEiAcY8o6W~HMnHyxL!*xD&G!T zgeWQcaU$xoqislfzm+Z_!OQB(o-%FXeuaa8MZ(KC5S73sK9V}I$v~k_MZ^gsGy_0s z+h!$ekSZH`&S6uPb5gWfiZwb~i58f*)4TDTnrML+OmwbKm}VxxHD!ME#JfI}T##tC zBdr2&Qr|B)4TnCxYFr~_iH;(1tkCnhq|ASctLQH77c4)?edPB*Hs8#=^X{x%^-Oiz z`&dhX#6F;2o2CK)Vx7<_GXe&NjCc=%+n8UYM4QGW$OlaB*|tGB5TtINEvW4xJ!^v@ z)=g^@VK#h@^R&b^tPmYyTa$>V3c}#Rc{z)+<#?eGvO@ppd~0l_SH6BIloRX{&f!YrJk5|VHX>aZVPY6e`J zpoqQVkV`IS(k#QfYIAUxBy-3*8oreaP3eVaL1`5QBVZQV9_bThh)3CDSc$bUTOOYC z>=KyjXKz!ga+`hzD^koyb}O&TlBtJ?o+V1t?41Hn8hBQd7$oIeeAD^pVw>G&M!~~|VI$zDbf1xR!<&Z@$6d)+y>rLmC%7;gBgXC^4xufVH@|F%Q4u`hk{VLI) znJ>363uG9-CQsWwUF`UE$*w>(UY9y&EBcKN_6E}2QpUkGyiV*NhsNz2-X1U*FuvBq z#m@72M#!nw{4mih*xT4gLrCsSvi5Cc=fcPSWEHs5jUA$Tl;cgLiTx0n$Dk^x)Z~Rm zwrNv%reiUXFo%ANI_8nope$3**}PWyYd<_L&2nN&Xj0o;cv^L&8qFPEhj_THu)IHmtyaUl&Q7QI40k%sg&!9rAVkjaNkJ^PhGoa) z(Jfiw7)#PUVaDtW3yHHwtPCMUx#%cv4x8{awn3>COP&B`jBXAK{;Vj}V}nMp$LP!7 ziVn;dzOE7M=T0<<yKRsJU4G_WF42?ly;n{JCa(vKC*c`;A=?-o^*J6)NBwl3PQ(%#q5u~<;)$Y-W;V|& z8$vjFz8`H>SciJT!a@GA6)+q^YmnOeSPD(hU1UU$Xo#dggX<3E#H^I}lgK?GPiXL{`ti@KmFDcM*!!n|z%SJDS^aE2dxskS@&HjLLrO*0)g)}wlvyG_FvLzB- z3Wgz4*})LCyJ1Lzx8lejttR20@XYvX^uy!4=)D{D^UYC-1@^JWl4izdD1la%yVYK9 zM6dpMJQO`H6jKV&zzy#K7xh4DWDI|#@!sD(j*U?T5xYA46zwSY{WoPWJpEZ-A=I2z zKEac1gH8>+@htzHoivG_R7{Xp#HxbsUGw{e2R=pn{&Bbm4L+`=lDA3LNtyIOm1JPhutuPuIe6px zsoGdA0B8(rD=ADPQ8Hg6u$e4L;eI*J?*y}4%@76YgeTFW)Tsu=N;|6JZYoqlE2mM$ zb!FhOy``@uFuYSP8c55+@%3`O&4&%+R6>~%*9hlAP7weLQ8d=v5o<3Cm|HiE^KitV ziXIhBW33`~o0vNV*z1KPV8Im=A~T+|T-8@u2~s$%Xj}MV^;vAc*Oz&HSvdBmHg*h| zo8rzQ#pZOUigxPGR>O!4o+JO4Smj-R_QI;XkNj5Uf7NchPHx6zz=w&!1e5#1j2;SA zdRYvz!%qs(<*p*A&KWT5iD749vpZm{Xa{Pd8UXA2W-7dT_cFgX?$+ts+>BJ&h*feetK@b~mF`ny z|7Bfl*vW+CT6cS5tg-I!GJe`b|X4$Y9=)Hj7G>ZY?m%_Jgaew9RBmvULz!_lB zhy2p*7Gts`euMoaCl4-dH6N5bK#5#1(hu}m>ZUgHCL$h{8dEcKa;~3b^E8Sq@C^ea z0M?8LHWBT`GD9W-2I_Rg0nmoVY+o{mdh!LbixVZg_y+!*|46*;{WS~L8Og89$lAL%>pT!8pUf$gx02VmxB!ujy=0+K1atKjlc%gw z1b|6DVE{6QP?1T|1T3wu+)lK}{X`2!SPFoS2SKUA40JuKvH-=Z%0oe{teV|NbyDd! zsO}<_s+IIQjO3-M&6KT`XpSb>HEx*3BQlDlv(ikbq%V}>E}R>u=irT(B#10qP`uJG zH-UtbWEU6kM3!SD~4L!r*+{b5sZAuUoYkwcW#|FU8p=8?# zgy!Y*6yRFDeBQ%GB=tr}8G(aM$tk^K5zI8`K+X+mrVGXQ2|`UMM_nd#0n#`9eiF2b z$VjrmhE~9CGI)$4wF~sEF4|1E%Vr3GK+ zzH-lCW>$>sB3q@x5<3;g4-BRnOOT@MmwA-Iz-2sqmBLC3Q3b^sd(UJ4Q@sg!i4ZZl z`azw}#CYc>T^1hwW7kd4o@g}o0N)E+tSnm`X0}0*cUZsp=x3gN*SkOcQ(ySAr1P<+ zc?+plrc6lqybT_S5$xU$mf#ItM3mvAwE@M;r@!2O`3SrdI)D~)`@`JZ34FE9MX^s1 ziP|FcAX`tQWJDmbE=1U-SUF%KU>n|{OuXZrhrUakN%jhLvz3o|y%e32#ZM%|@m^!N z3De_X5C!TKTJ$G)KaS!lX~TJ z(?Rnjy((d&#qfE!dSAHv;APX3UhCZlzj<0yX0+}cufHp;rxkA57xrF8_F+3MTW(di z)qT}nwoFm9mFhBWdRhGi(X_ePjwJ~6=KWO2y*90gqqtgcYBn5NTBq7zVFWoh?mtva z9UAV=AQd3mTwsscq9DFxedh=BjIGDy3CByVi50@GK}961?0GIt23&MM5SKt9cmFgG zbHUuqzx^kxRJlE50e-O^nADVRP(c~#HeQ6v2^-&rAL7d}mH;!8Qq+aFm`~e%4OZJD z$}T-`O$AAxNM{r~IklU0r?!|OZ``TPmRDkD=-<()&2@tD;nIWk^B$c~PHpbsNpfm8 zi;kSy&0|oF(5!GwG^CM{CUS@A? z0wZi-_0y2D^sjJxRD8B#tmuBuSm~1CfgGjhY3@{f5co>Omd}L(;9V2QcwKYKF%{(1 zxezJq+)Bet3Ro+A;5+}~)D3x2ZCFViu8!%9CqPmVI50!V)u#g)igKmATyo)k2Ir

e%=9wz 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%0DbFL;3!DKX^3mVT49IQjX#sR@Fz&X$i;0XoP8u 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 z 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

h1k+DB&nwA~*$0|VQTeZTV&rhS+|9<+#-k!O; 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 literal 0 HcmV?d00001 diff --git a/lmao.json b/lmao.json new file mode 100644 index 000000000..32aa05be8 --- /dev/null +++ b/lmao.json @@ -0,0 +1,24 @@ +{ + "messages": [ + { + "@type": "/cosmos.gov.v1.MsgExecLegacyContent", + "authority": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n", + "content": { + "@type": "/cosmos.params.v1beta1.ParameterChangeProposal", + "title": "Increase Validator Active Set to 130", + "changes": [ + { + "key": "MaxValidators", + "value": "130", + "subspace": "staking" + } + ], + "description": "This proposal raises the validator limit for Luna Classic from 100 to 130, welcoming back validators from Luna v2 after the TFL and SEC settlement. Expanding the validator set strengthens our network's decentralization and benefits the LUNC community." + } + } + ], + "metadata": "Payment for genuine labs. More detailed info here : https://hackmd.io/@O2c-4nD0Qz6e_DUjqIEGrw/rymdK8L9p", + "deposit": "100000000000uluna", + "title": "Genuine Labs's Community Spend Proposal", + "summary": "Genuine Labs's Community Spend Proposal" +} \ No newline at end of file diff --git a/lmao2.json b/lmao2.json new file mode 100644 index 000000000..7e15a1a7e --- /dev/null +++ b/lmao2.json @@ -0,0 +1,20 @@ +{ + "messages": [ + { + "@type": "/cosmos.staking.v1beta1.MsgUpdateParams", + "authority": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n", + "params": { + "unbonding_time": "1814400s", + "max_validators": "130", + "max_entries": 7, + "historical_entries": 10000, + "bond_denom": "uluna", + "min_commission_rate": "0.000000000000000000" + } + } + ], + "metadata": "AQ==", + "deposit": "100000000000uluna", + "title": "Change max vals prop", + "summary": "Change max vals prop" +} diff --git a/prop.json b/prop.json new file mode 100644 index 000000000..c3dc91685 --- /dev/null +++ b/prop.json @@ -0,0 +1,17 @@ +{ + "title": "Proposal to decrease MaxBlockSize", + "description": "Proposal to decrease MaxBlockSize from 5mb to 2mb to avoid peer-to-peer spams", + + "changes": [ + { + "subspace": "baseapp", + "key": "BlockParams", + "value": { + "max_bytes": "2000000", + "max_gas": "100000000" + } + } + ], + "metadata": "AQ==", + "deposit": "1000000000000uluna" +} diff --git a/proto/terra/tax2gas/v1beta1/genesis.proto b/proto/terra/tax2gas/v1beta1/genesis.proto index 096f0640f..d2949d4b3 100644 --- a/proto/terra/tax2gas/v1beta1/genesis.proto +++ b/proto/terra/tax2gas/v1beta1/genesis.proto @@ -2,10 +2,26 @@ syntax = "proto3"; package terra.tax2gas.v1beta1; import "gogoproto/gogo.proto"; +import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; -message Params {} +message Params { + option (gogoproto.equal) = true; + option (gogoproto.goproto_stringer) = true; + + string burn_rate = 1 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + + repeated cosmos.base.v1beta1.DecCoin gas_prices = 2 [ + (gogoproto.moretags) = "yaml:\"gas_prices\"", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", + (gogoproto.nullable) = false + ]; +} + +option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; // GenesisState defines the tax2gas module's genesis state. message GenesisState { diff --git a/proto/terra/tax2gas/v1beta1/query.proto b/proto/terra/tax2gas/v1beta1/query.proto index 85a50c94d..78bab4adb 100644 --- a/proto/terra/tax2gas/v1beta1/query.proto +++ b/proto/terra/tax2gas/v1beta1/query.proto @@ -8,13 +8,13 @@ import "terra/tax2gas/v1beta1/genesis.proto"; option go_package = "github.com/classic-terra/core/v3/x/tax2gas/types"; service Query { - rpc Params(ParamsRequest) returns (ParamsResponse) { + rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { option (google.api.http).get = "/terra/tax2gas/Params"; } } //=============================== Params -message ParamsRequest {} -message ParamsResponse { +message QueryParamsRequest {} +message QueryParamsResponse { Params params = 1 [(gogoproto.nullable) = false]; } \ No newline at end of file diff --git a/x/tax2gas/ante/fee.go b/x/tax2gas/ante/fee.go index 5408cd38e..d8c99cdbb 100644 --- a/x/tax2gas/ante/fee.go +++ b/x/tax2gas/ante/fee.go @@ -10,6 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/ante" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + tax2gasKeeper "github.com/classic-terra/core/v3/x/tax2gas/keeper" "github.com/classic-terra/core/v3/x/tax2gas/types" ) @@ -22,14 +23,16 @@ type FeeDecorator struct { bankKeeper types.BankKeeper feegrantKeeper ante.FeegrantKeeper treasuryKeeper types.TreasuryKeeper + tax2gasKeeper tax2gasKeeper.Keeper } -func NewFeeDecorator(ak ante.AccountKeeper, bk types.BankKeeper, fk ante.FeegrantKeeper, tk types.TreasuryKeeper) FeeDecorator { +func NewFeeDecorator(ak ante.AccountKeeper, bk types.BankKeeper, fk ante.FeegrantKeeper, tk types.TreasuryKeeper, taxKeeper tax2gasKeeper.Keeper) FeeDecorator { return FeeDecorator{ accountKeeper: ak, bankKeeper: bk, feegrantKeeper: fk, treasuryKeeper: tk, + tax2gasKeeper: taxKeeper, } } @@ -49,8 +52,25 @@ func (fd FeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, nex ) msgs := feeTx.GetMsgs() - // Compute taxes - taxes := FilterMsgAndComputeTax(ctx, fd.treasuryKeeper, msgs...) + + // Compute taxes based on consumed gas + gasConsumed := ctx.GasMeter().GasConsumed() + taxRequired, err := fd.tax2gasKeeper.ComputeTaxOnGasConsumed(ctx, tx, fd.treasuryKeeper, gasConsumed) + if err != nil { + return ctx, err + } + + // Compute taxes based on sent amount + taxes := tax2gasKeeper.FilterMsgAndComputeTax(ctx, fd.treasuryKeeper, msgs...) + // Convert taxes to gas + taxGas, err := fd.tax2gasKeeper.ComputeGas(ctx, tx, taxes) + if err != nil { + return ctx, err + } + + if feeTx.GetGas() < taxGas { + return ctx, errorsmod.Wrap(sdkerrors.ErrInvalidGasLimit, "must provide enough gas to cover taxes") + } if !simulate { priority, err = fd.checkTxFee(ctx, tx, taxes) @@ -59,34 +79,54 @@ func (fd FeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, nex } } - if err := fd.checkDeductFee(ctx, feeTx, taxes, simulate); err != nil { + // Try to deduct the required tax from the consumed gas + feeDenom, err := fd.checkDeductFee(ctx, feeTx, taxRequired, simulate) + if err != nil { return ctx, err } - newCtx := ctx.WithPriority(priority) - + newCtx := ctx.WithPriority(priority).WithValue(types.ConsumedGasFee, taxRequired).WithValue(types.TaxGas, taxGas) + if feeDenom != "" { + newCtx = newCtx.WithValue(types.FeeDenom, feeDenom) + } return next(newCtx, tx, simulate) } -func (fd FeeDecorator) checkDeductFee(ctx sdk.Context, feeTx sdk.FeeTx, taxes sdk.Coins, simulate bool) error { +func (fd FeeDecorator) checkDeductFee(ctx sdk.Context, feeTx sdk.FeeTx, taxes sdk.Coins, simulate bool) (string, error) { if addr := fd.accountKeeper.GetModuleAddress(authtypes.FeeCollectorName); addr == nil { - return fmt.Errorf("fee collector module account (%s) has not been set", authtypes.FeeCollectorName) + return "", fmt.Errorf("fee collector module account (%s) has not been set", authtypes.FeeCollectorName) } - fee := feeTx.GetFee() + feeCoins := feeTx.GetFee() feePayer := feeTx.FeePayer() feeGranter := feeTx.FeeGranter() deductFeesFrom := feePayer + var foundCoins sdk.Coins + + if !taxes.IsZero() { + for _, coin := range feeCoins { + found, requiredFee := taxes.Find(coin.Denom) + if !found { + continue + } + if coin.Amount.GT(requiredFee.Amount) { + foundCoins = sdk.NewCoins(requiredFee) + } + } + } else { + return "", nil + } + // if feegranter set deduct fee from feegranter account. // this works with only when feegrant enabled. if feeGranter != nil { if fd.feegrantKeeper == nil { - return sdkerrors.ErrInvalidRequest.Wrap("fee grants are not enabled") + return "", sdkerrors.ErrInvalidRequest.Wrap("fee grants are not enabled") } else if !feeGranter.Equals(feePayer) { - err := fd.feegrantKeeper.UseGrantedFees(ctx, feeGranter, feePayer, fee, feeTx.GetMsgs()) + err := fd.feegrantKeeper.UseGrantedFees(ctx, feeGranter, feePayer, foundCoins, feeTx.GetMsgs()) if err != nil { - return errorsmod.Wrapf(err, "%s does not not allow to pay fees for %s", feeGranter, feePayer) + return "", errorsmod.Wrapf(err, "%s does not not allow to pay fees for %s", feeGranter, feePayer) } } @@ -95,37 +135,39 @@ func (fd FeeDecorator) checkDeductFee(ctx sdk.Context, feeTx sdk.FeeTx, taxes sd deductFeesFromAcc := fd.accountKeeper.GetAccount(ctx, deductFeesFrom) if deductFeesFromAcc == nil { - return sdkerrors.ErrUnknownAddress.Wrapf("fee payer address: %s does not exist", deductFeesFrom) + return "", sdkerrors.ErrUnknownAddress.Wrapf("fee payer address: %s does not exist", deductFeesFrom) } // deduct the fees - if !fee.IsZero() { - err := DeductFees(fd.bankKeeper, ctx, deductFeesFromAcc, fee) + if !foundCoins.IsZero() { + err := DeductFees(fd.bankKeeper, ctx, deductFeesFromAcc, foundCoins) if err != nil { - return err + return "", err } - - if !taxes.IsZero() && !simulate { - err := fd.BurnTaxSplit(ctx, taxes) + if !foundCoins.IsZero() && !simulate { + err := fd.BurnTaxSplit(ctx, foundCoins) if err != nil { - return err + return "", err } // Record tax proceeds - fd.treasuryKeeper.RecordEpochTaxProceeds(ctx, taxes) + fd.treasuryKeeper.RecordEpochTaxProceeds(ctx, foundCoins) } - } - events := sdk.Events{ - sdk.NewEvent( - sdk.EventTypeTx, - sdk.NewAttribute(sdk.AttributeKeyFee, fee.String()), - sdk.NewAttribute(sdk.AttributeKeyFeePayer, deductFeesFrom.String()), - ), - } - ctx.EventManager().EmitEvents(events) + events := sdk.Events{ + sdk.NewEvent( + sdk.EventTypeTx, + sdk.NewAttribute(sdk.AttributeKeyFee, foundCoins.String()), + sdk.NewAttribute(sdk.AttributeKeyFeePayer, deductFeesFrom.String()), + ), + } + ctx.EventManager().EmitEvents(events) - return nil + // As there is only 1 element + return foundCoins.Denoms()[0], nil + } else { + return "", fmt.Errorf("can't find coin that matches. Expected %s, wanted %s", feeCoins, taxes) + } } // DeductFees deducts fees from the given account. @@ -156,23 +198,17 @@ func (fd FeeDecorator) checkTxFee(ctx sdk.Context, tx sdk.Tx, taxes sdk.Coins) ( gas := feeTx.GetGas() msgs := feeTx.GetMsgs() isOracleTx := isOracleTx(msgs) + gasPrices := fd.tax2gasKeeper.GetGasPrices(ctx) // Ensure that the provided fees meet a minimum threshold for the validator, // if this is a CheckTx. This is only for local mempool purposes, and thus // is only ran on check tx. + requiredGasFees := make(sdk.Coins, len(gasPrices)) if ctx.IsCheckTx() && !isOracleTx { - requiredGasFees := sdk.Coins{} - minGasPrices := ctx.MinGasPrices() - if !minGasPrices.IsZero() { - requiredGasFees = make(sdk.Coins, len(minGasPrices)) - - // Determine the required fees by multiplying each required minimum gas - // price by the gas limit, where fee = ceil(minGasPrice * gasLimit). - glDec := sdk.NewDec(int64(gas)) - for i, gp := range minGasPrices { - fee := gp.Amount.Mul(glDec) - requiredGasFees[i] = sdk.NewCoin(gp.Denom, fee.Ceil().RoundInt()) - } + glDec := sdk.NewDec(int64(gas)) + for i, gp := range gasPrices { + fee := gp.Amount.Mul(glDec) + requiredGasFees[i] = sdk.NewCoin(gp.Denom, fee.Ceil().RoundInt()) } requiredFees := requiredGasFees.Add(taxes...) diff --git a/x/tax2gas/client/cli/query.go b/x/tax2gas/client/cli/query.go index ffd212794..fffdca4c1 100644 --- a/x/tax2gas/client/cli/query.go +++ b/x/tax2gas/client/cli/query.go @@ -42,7 +42,7 @@ func GetCmdQueryParams() *cobra.Command { } queryClient := types.NewQueryClient(clientCtx) - params := &types.ParamsRequest{} + params := &types.QueryParamsRequest{} res, err := queryClient.Params(context.Background(), params) if err != nil { diff --git a/x/tax2gas/genesis.go b/x/tax2gas/genesis.go new file mode 100644 index 000000000..0ef46e9f7 --- /dev/null +++ b/x/tax2gas/genesis.go @@ -0,0 +1,14 @@ +package module + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/classic-terra/core/v3/x/tax2gas/keeper" + "github.com/classic-terra/core/v3/x/tax2gas/types" +) + +// InitGenesis initializes default parameters +// and the keeper's address to pubkey map +func InitGenesis(ctx sdk.Context, keeper keeper.Keeper, data *types.GenesisState) { + keeper.SetParams(ctx, data.Params) +} diff --git a/x/tax2gas/keeper/expected_keeper.go b/x/tax2gas/keeper/expected_keeper.go new file mode 100644 index 000000000..58af418ae --- /dev/null +++ b/x/tax2gas/keeper/expected_keeper.go @@ -0,0 +1,41 @@ +package keeper + +import ( + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" +) + +// TreasuryKeeper for tax charging & recording +type TreasuryKeeper interface { + RecordEpochTaxProceeds(ctx sdk.Context, delta sdk.Coins) + GetTaxRate(ctx sdk.Context) (taxRate sdk.Dec) + GetTaxCap(ctx sdk.Context, denom string) (taxCap math.Int) + GetBurnSplitRate(ctx sdk.Context) sdk.Dec + HasBurnTaxExemptionAddress(ctx sdk.Context, addresses ...string) bool + HasBurnTaxExemptionContract(ctx sdk.Context, address string) bool + GetMinInitialDepositRatio(ctx sdk.Context) sdk.Dec +} + +// OracleKeeper for feeder validation +type OracleKeeper interface { + ValidateFeeder(ctx sdk.Context, feederAddr sdk.AccAddress, validatorAddr sdk.ValAddress) error +} + +// BankKeeper defines the contract needed for supply related APIs (noalias) +type BankKeeper interface { + IsSendEnabledCoins(ctx sdk.Context, coins ...sdk.Coin) error + SendCoins(ctx sdk.Context, from, to sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error +} + +type DistrKeeper interface { + FundCommunityPool(ctx sdk.Context, amount sdk.Coins, sender sdk.AccAddress) error + GetFeePool(ctx sdk.Context) distributiontypes.FeePool +} + +type GovKeeper interface { + GetDepositParams(ctx sdk.Context) govv1.DepositParams +} diff --git a/x/tax2gas/keeper/keeper.go b/x/tax2gas/keeper/keeper.go index 126fc876d..b64f13f0c 100644 --- a/x/tax2gas/keeper/keeper.go +++ b/x/tax2gas/keeper/keeper.go @@ -1,6 +1,11 @@ package keeper import ( + "fmt" + + "github.com/cometbft/cometbft/libs/log" + + "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" @@ -10,31 +15,21 @@ import ( type Keeper struct { storeKey storetypes.StoreKey + cdc codec.BinaryCodec paramSpace paramtypes.Subspace } -func NewKeeper(storeKey storetypes.StoreKey, paramSpace paramtypes.Subspace) *Keeper { +func NewKeeper(cdc codec.BinaryCodec, storeKey storetypes.StoreKey, paramSpace paramtypes.Subspace) Keeper { // set KeyTable if it has not already been set if !paramSpace.HasKeyTable() { paramSpace = paramSpace.WithKeyTable(types.ParamKeyTable()) } - return &Keeper{storeKey: storeKey, paramSpace: paramSpace} -} - -// GetParams returns the total set of testmodule parameters. -func (k Keeper) GetParams(ctx sdk.Context) (params types.Params) { - k.paramSpace.GetParamSet(ctx, ¶ms) - return params -} - -// SetParams sets the total set of testmodule parameters. -func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { - k.paramSpace.SetParamSet(ctx, ¶ms) + return Keeper{cdc: cdc, storeKey: storeKey, paramSpace: paramSpace} } -// InitGenesis initializes the testmodule module's state from a provided genesis +// InitGenesis initializes the tax2gas module's state from a provided genesis // state. func (k Keeper) InitGenesis(ctx sdk.Context, genState *types.GenesisState) { if err := genState.Validate(); err != nil { @@ -44,9 +39,22 @@ func (k Keeper) InitGenesis(ctx sdk.Context, genState *types.GenesisState) { k.SetParams(ctx, genState.Params) } -// ExportGenesis returns the testmodule module's exported genesis. +// ExportGenesis returns the tax2gas module's exported genesis. func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState { return &types.GenesisState{ Params: k.GetParams(ctx), } } + +func (k Keeper) GetBurnRate(ctx sdk.Context) sdk.Dec { + return k.GetParams(ctx).BurnRate +} + +func (k Keeper) GetGasPrices(ctx sdk.Context) sdk.DecCoins { + return k.GetParams(ctx).GasPrices +} + +// Logger returns a module-specific logger. +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} diff --git a/x/tax2gas/keeper/params.go b/x/tax2gas/keeper/params.go new file mode 100644 index 000000000..ac87194f1 --- /dev/null +++ b/x/tax2gas/keeper/params.go @@ -0,0 +1,31 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/classic-terra/core/v3/x/tax2gas/types" +) + +// SetParams sets the gov module's parameters. +func (k Keeper) SetParams(ctx sdk.Context, params types.Params) error { + store := ctx.KVStore(k.storeKey) + bz, err := k.cdc.Marshal(¶ms) + if err != nil { + return err + } + store.Set(types.ParamsKey, bz) + + return nil +} + +// GetParams gets the gov module's parameters. +func (k Keeper) GetParams(clientCtx sdk.Context) (params types.Params) { + store := clientCtx.KVStore(k.storeKey) + bz := store.Get(types.ParamsKey) + if bz == nil { + return params + } + + k.cdc.MustUnmarshal(bz, ¶ms) + return params +} diff --git a/x/tax2gas/keeper/querier.go b/x/tax2gas/keeper/querier.go new file mode 100644 index 000000000..9f715830f --- /dev/null +++ b/x/tax2gas/keeper/querier.go @@ -0,0 +1,28 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/classic-terra/core/v3/x/tax2gas/types" +) + +// querier is used as Keeper will have duplicate methods if used directly, and gRPC names take precedence over q +type querier struct { + Keeper +} + +// NewQuerier returns an implementation of the market QueryServer interface +// for the provided Keeper. +func NewQuerier(keeper Keeper) types.QueryServer { + return &querier{Keeper: keeper} +} + +var _ types.QueryServer = querier{} + +// Params queries params of dyncomm module +func (q querier) Params(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + return &types.QueryParamsResponse{Params: q.GetParams(ctx)}, nil +} diff --git a/x/tax2gas/keeper/tax.go b/x/tax2gas/keeper/tax.go new file mode 100644 index 000000000..80a28d696 --- /dev/null +++ b/x/tax2gas/keeper/tax.go @@ -0,0 +1,190 @@ +package keeper + +import ( + "regexp" + "strings" + + errorsmod "cosmossdk.io/errors" + "cosmossdk.io/math" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + authz "github.com/cosmos/cosmos-sdk/x/authz" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + + marketexported "github.com/classic-terra/core/v3/x/market/exported" + oracleexported "github.com/classic-terra/core/v3/x/oracle/exported" +) + +var IBCRegexp = regexp.MustCompile("^ibc/[a-fA-F0-9]{64}$") + +func isIBCDenom(denom string) bool { + return IBCRegexp.MatchString(strings.ToLower(denom)) +} + +// FilterMsgAndComputeTax computes the stability tax on messages. +func FilterMsgAndComputeTax(ctx sdk.Context, tk TreasuryKeeper, msgs ...sdk.Msg) sdk.Coins { + taxes := sdk.Coins{} + + for _, msg := range msgs { + switch msg := msg.(type) { + case *banktypes.MsgSend: + if !tk.HasBurnTaxExemptionAddress(ctx, msg.FromAddress, msg.ToAddress) { + taxes = taxes.Add(computeTax(ctx, tk, msg.Amount)...) + } + + case *banktypes.MsgMultiSend: + tainted := 0 + + for _, input := range msg.Inputs { + if tk.HasBurnTaxExemptionAddress(ctx, input.Address) { + tainted++ + } + } + + for _, output := range msg.Outputs { + if tk.HasBurnTaxExemptionAddress(ctx, output.Address) { + tainted++ + } + } + + if tainted != len(msg.Inputs)+len(msg.Outputs) { + for _, input := range msg.Inputs { + taxes = taxes.Add(computeTax(ctx, tk, input.Coins)...) + } + } + + case *marketexported.MsgSwapSend: + taxes = taxes.Add(computeTax(ctx, tk, sdk.NewCoins(msg.OfferCoin))...) + + case *wasmtypes.MsgInstantiateContract: + taxes = taxes.Add(computeTax(ctx, tk, msg.Funds)...) + + case *wasmtypes.MsgInstantiateContract2: + taxes = taxes.Add(computeTax(ctx, tk, msg.Funds)...) + + case *wasmtypes.MsgExecuteContract: + if !tk.HasBurnTaxExemptionContract(ctx, msg.Contract) { + taxes = taxes.Add(computeTax(ctx, tk, msg.Funds)...) + } + + case *authz.MsgExec: + messages, err := msg.GetMessages() + if err == nil { + taxes = taxes.Add(FilterMsgAndComputeTax(ctx, tk, messages...)...) + } + } + } + + return taxes +} + +// computes the stability tax according to tax-rate and tax-cap +func computeTax(ctx sdk.Context, tk TreasuryKeeper, principal sdk.Coins) sdk.Coins { + taxRate := tk.GetTaxRate(ctx) + if taxRate.Equal(sdk.ZeroDec()) { + return sdk.Coins{} + } + + taxes := sdk.Coins{} + + for _, coin := range principal { + if coin.Denom == sdk.DefaultBondDenom { + continue + } + + if isIBCDenom(coin.Denom) { + continue + } + + taxDue := sdk.NewDecFromInt(coin.Amount).Mul(taxRate).TruncateInt() + + // If tax due is greater than the tax cap, cap! + taxCap := tk.GetTaxCap(ctx, coin.Denom) + if taxDue.GT(taxCap) { + taxDue = taxCap + } + + if taxDue.Equal(sdk.ZeroInt()) { + continue + } + + taxes = taxes.Add(sdk.NewCoin(coin.Denom, taxDue)) + } + + return taxes +} + +func (k Keeper) ComputeTaxOnGasConsumed(ctx sdk.Context, tx sdk.Tx, tk TreasuryKeeper, gas uint64) (sdk.Coins, error) { + feeTx, ok := tx.(sdk.FeeTx) + if !ok { + return nil, errorsmod.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") + } + + feeCoins := feeTx.GetFee() + isOracleTx := isOracleTx(feeTx.GetMsgs()) + gasPrices := k.GetGasPrices(ctx) + + gasFees := make(sdk.Coins, len(gasPrices)) + if !isOracleTx && len(gasPrices) != 0 { + // Determine the required fees by multiplying each required minimum gas + // price by the gas limit, where fee = ceil(minGasPrice * gasLimit). + glDec := sdk.NewDec(int64(gas)) + for i, gp := range gasPrices { + fee := gp.Amount.Mul(glDec) + gasFees[i] = sdk.NewCoin(gp.Denom, fee.Ceil().RoundInt()) + } + + // Check required fees + if !feeCoins.IsAnyGTE(gasFees) { + return nil, errorsmod.Wrapf(sdkerrors.ErrInsufficientFee, "insufficient gas fees; got: %q, required: %q ", feeCoins, gasFees) + } + } + + return gasFees, nil +} + +func (k Keeper) ComputeGas(ctx sdk.Context, tx sdk.Tx, taxes sdk.Coins) (uint64, error) { + feeTx, ok := tx.(sdk.FeeTx) + if !ok { + return 0, errorsmod.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") + } + + isOracleTx := isOracleTx(feeTx.GetMsgs()) + gasPrices := k.GetGasPrices(ctx).Sort() + taxes = taxes.Sort() + + var tax2gas math.Int = math.ZeroInt() + if ctx.IsCheckTx() && !isOracleTx { + // Convert to gas + var i, j int = 0, 0 + for i < len(gasPrices) && j < len(taxes) { + if gasPrices[i].Denom == taxes[j].Denom { + tax2gas = tax2gas.Add(math.Int(sdk.NewDec(taxes[j].Amount.Int64()).Quo((gasPrices[i].Amount)).Ceil().RoundInt())) + i++ + j++ + } else if gasPrices[i].Denom < taxes[j].Denom { + i++ + } else { + j++ + } + } + } + + return tax2gas.Uint64(), nil +} + +func isOracleTx(msgs []sdk.Msg) bool { + for _, msg := range msgs { + switch msg.(type) { + case *oracleexported.MsgAggregateExchangeRatePrevote: + continue + case *oracleexported.MsgAggregateExchangeRateVote: + continue + default: + return false + } + } + + return true +} diff --git a/x/tax2gas/module.go b/x/tax2gas/module.go index 213548bf3..b7dbd635f 100644 --- a/x/tax2gas/module.go +++ b/x/tax2gas/module.go @@ -24,7 +24,9 @@ var ( _ module.AppModuleBasic = AppModuleBasic{} ) -type AppModuleBasic struct{} +type AppModuleBasic struct { + cdc codec.Codec +} func (AppModuleBasic) Name() string { return types.ModuleName } @@ -36,7 +38,7 @@ func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(types.DefaultGenesis()) } -// ValidateGenesis performs genesis state validation for the testmodule module. +// ValidateGenesis performs genesis state validation for the tax2gas module. func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { var genState types.GenesisState if err := cdc.UnmarshalJSON(bz, &genState); err != nil { @@ -61,7 +63,7 @@ func (b AppModuleBasic) GetQueryCmd() *cobra.Command { return cli.GetQueryCmd() } -// RegisterInterfaces registers interfaces and implementations of the testmodule module. +// RegisterInterfaces registers interfaces and implementations of the tax2gas module. func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) { types.RegisterInterfaces(registry) } @@ -73,35 +75,36 @@ type AppModule struct { } func (am AppModule) RegisterServices(cfg module.Configurator) { - // types.RegisterMsgServer(cfg.MsgServer(), testmodule.NewMsgServerImpl(&am.k)) + // types.RegisterMsgServer(cfg.MsgServer(), tax2gas.NewMsgServerImpl(&am.k)) // queryproto.RegisterQueryServer(cfg.QueryServer(), grpc.Querier{Q: module.NewQuerier(am.k)}) + querier := keeper.NewQuerier(am.k) + types.RegisterQueryServer(cfg.QueryServer(), querier) } -func NewAppModule(testmoduleKeeper keeper.Keeper) AppModule { +func NewAppModule(cdc codec.Codec, tax2gasKeeper keeper.Keeper) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{}, - k: testmoduleKeeper, + AppModuleBasic: AppModuleBasic{cdc}, + k: tax2gasKeeper, } } func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { } -// QuerierRoute returns the testmodule module's querier route name. +// QuerierRoute returns the tax2gas module's querier route name. func (AppModule) QuerierRoute() string { return types.RouterKey } -// InitGenesis performs genesis initialization for the testmodule module. +// InitGenesis performs genesis initialization for the tax2gas module. // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(gs, &genesisState) - - am.k.InitGenesis(ctx, &genesisState) + InitGenesis(ctx, am.k, &genesisState) return []abci.ValidatorUpdate{} } -// ExportGenesis returns the exported genesis state as raw bytes for the testmodule. +// ExportGenesis returns the exported genesis state as raw bytes for the tax2gas. // module. func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { genState := am.k.ExportGenesis(ctx) diff --git a/x/tax2gas/post/post.go b/x/tax2gas/post/post.go new file mode 100644 index 000000000..430c75293 --- /dev/null +++ b/x/tax2gas/post/post.go @@ -0,0 +1,98 @@ +package post + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/x/auth/ante" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + + tax2gasKeeper "github.com/classic-terra/core/v3/x/tax2gas/keeper" + "github.com/classic-terra/core/v3/x/tax2gas/types" +) + +type Tax2gasPostDecorator struct { + accountKeeper ante.AccountKeeper + bankKeeper types.BankKeeper + treasuryKeeper types.TreasuryKeeper + tax2gasKeeper tax2gasKeeper.Keeper +} + +func NewTax2GasPostDecorator(accountKeeper ante.AccountKeeper, bankKeeper types.BankKeeper, treasuryKeeper types.TreasuryKeeper, tax2gasKeeper tax2gasKeeper.Keeper) Tax2gasPostDecorator { + return Tax2gasPostDecorator{ + accountKeeper: accountKeeper, + bankKeeper: bankKeeper, + treasuryKeeper: treasuryKeeper, + tax2gasKeeper: tax2gasKeeper, + } +} + +func (dd Tax2gasPostDecorator) PostHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, success bool, next sdk.PostHandler) (sdk.Context, error) { + feeTx, ok := tx.(sdk.FeeTx) + if !ok { + return ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") + } + + if !simulate && ctx.BlockHeight() > 0 && feeTx.GetGas() == 0 { + return ctx, errorsmod.Wrap(sdkerrors.ErrInvalidGasLimit, "must provide positive gas") + } + + feeCoins := feeTx.GetFee() + paidFees := ctx.Value(types.ConsumedGasFee) + paidFeeCoins, ok := paidFees.(sdk.Coins) + if !ok { + return ctx, errorsmod.Wrap(types.ErrParsing, "Error parsing coins") + } + + taxGas, ok := ctx.Value(types.TaxGas).(uint64) + if !ok { + // TODO + return ctx, errorsmod.Wrap(types.ErrParsing, "Error parsing tax gas") + } + // we consume the gas here as we need to calculate the tax for consumed gas + ctx.GasMeter().ConsumeGas(taxGas, "tax gas") + + gasConsumed := ctx.GasMeter().GasConsumed() + taxRequired, err := dd.tax2gasKeeper.ComputeTaxOnGasConsumed(ctx, tx, dd.treasuryKeeper, gasConsumed) + if err != nil { + return ctx, err + } + + if simulate { + return next(ctx, tx, simulate, success) + } + + var requiredFees sdk.Coins + if taxRequired != nil && feeCoins != nil { + requiredFees = taxRequired.Sub(paidFeeCoins...) + + // Check if fee coins contains at least one coin that can cover required fees + if !feeCoins.IsAnyGTE(requiredFees) { + return ctx, errorsmod.Wrapf(sdkerrors.ErrInsufficientFee, "insufficient fees; got: %q, required: %q", feeCoins, requiredFees) + } + + feeDenom, ok := ctx.Value(types.FeeDenom).(string) + if !ok { + return ctx, errorsmod.Wrap(types.ErrParsing, "Error parsing fee denom") + } + + found, requiredFee := requiredFees.Find(feeDenom) + if !found { + return ctx, errorsmod.Wrapf(types.ErrCoinNotFound, "can'f find %s in %s", feeDenom, requiredFees) + } + remainingCoins := feeCoins.Sub(requiredFee) + + if !remainingCoins.IsValid() { + return ctx, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "invalid remaining coins amount: %s", remainingCoins) + } + + feePayer := dd.accountKeeper.GetAccount(ctx, feeTx.FeePayer()) + + err := dd.bankKeeper.SendCoinsFromAccountToModule(ctx, feePayer.GetAddress(), authtypes.FeeCollectorName, sdk.NewCoins(requiredFee)) + if err != nil { + return ctx, errorsmod.Wrapf(sdkerrors.ErrInsufficientFunds, err.Error()) + } + } + + return ctx, nil +} diff --git a/x/tax2gas/types/errors.go b/x/tax2gas/types/errors.go index ab1254f4c..04e40e3f4 100644 --- a/x/tax2gas/types/errors.go +++ b/x/tax2gas/types/errors.go @@ -1 +1,11 @@ package types + +import ( + errorsmod "cosmossdk.io/errors" +) + +// Market errors +var ( + ErrParsing = errorsmod.Register(ModuleName, 1, "Parsing errors") + ErrCoinNotFound = errorsmod.Register(ModuleName, 2, "Coin not found") +) diff --git a/x/tax2gas/types/expected_keeper.go b/x/tax2gas/types/expected_keeper.go index 945b25a72..8fbab7047 100644 --- a/x/tax2gas/types/expected_keeper.go +++ b/x/tax2gas/types/expected_keeper.go @@ -22,4 +22,5 @@ type BankKeeper interface { SendCoins(ctx sdk.Context, from, to sdk.AccAddress, amt sdk.Coins) error SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error + SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error } diff --git a/x/tax2gas/types/genesis.pb.go b/x/tax2gas/types/genesis.pb.go index fbadfca5d..b45e0f446 100644 --- a/x/tax2gas/types/genesis.pb.go +++ b/x/tax2gas/types/genesis.pb.go @@ -5,6 +5,8 @@ package types import ( fmt "fmt" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -24,6 +26,8 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Params struct { + BurnRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=burn_rate,json=burnRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"burn_rate"` + GasPrices github_com_cosmos_cosmos_sdk_types.DecCoins `protobuf:"bytes,2,rep,name=gas_prices,json=gasPrices,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.DecCoins" json:"gas_prices" yaml:"gas_prices"` } func (m *Params) Reset() { *m = Params{} } @@ -59,6 +63,13 @@ func (m *Params) XXX_DiscardUnknown() { var xxx_messageInfo_Params proto.InternalMessageInfo +func (m *Params) GetGasPrices() github_com_cosmos_cosmos_sdk_types.DecCoins { + if m != nil { + return m.GasPrices + } + return nil +} + // GenesisState defines the tax2gas module's genesis state. type GenesisState struct { // params is the container of tax2gas parameters. @@ -115,23 +126,64 @@ func init() { } var fileDescriptor_589c4ef0e5113034 = []byte{ - // 209 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2e, 0x49, 0x2d, 0x2a, - 0x4a, 0xd4, 0x2f, 0x49, 0xac, 0x30, 0x4a, 0x4f, 0x2c, 0xd6, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, - 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, - 0x12, 0x05, 0x2b, 0xd2, 0x83, 0x2a, 0xd2, 0x83, 0x2a, 0x92, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, - 0xab, 0xd0, 0x07, 0xb1, 0x20, 0x8a, 0x95, 0x38, 0xb8, 0xd8, 0x02, 0x12, 0x8b, 0x12, 0x73, 0x8b, - 0x95, 0xbc, 0xb9, 0x78, 0xdc, 0x21, 0xe6, 0x04, 0x97, 0x24, 0x96, 0xa4, 0x0a, 0x59, 0x73, 0xb1, - 0x15, 0x80, 0x65, 0x24, 0x18, 0x15, 0x18, 0x35, 0xb8, 0x8d, 0x64, 0xf5, 0xb0, 0x9a, 0xab, 0x07, - 0xd1, 0xee, 0xc4, 0x72, 0xe2, 0x9e, 0x3c, 0x43, 0x10, 0x54, 0x8b, 0x93, 0xd7, 0x89, 0x47, 0x72, - 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, - 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa4, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, - 0xe7, 0xe7, 0xea, 0x27, 0xe7, 0x24, 0x16, 0x17, 0x67, 0x26, 0xeb, 0x42, 0x7c, 0x95, 0x9c, 0x5f, - 0x94, 0xaa, 0x5f, 0x66, 0xac, 0x5f, 0x01, 0xf7, 0x5f, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, - 0xd8, 0xa5, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x3f, 0x48, 0x2e, 0xfd, 0x00, 0x00, - 0x00, + // 362 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x91, 0xb1, 0x4e, 0xeb, 0x30, + 0x18, 0x85, 0xe3, 0x7b, 0xaf, 0xaa, 0x36, 0xbd, 0xcb, 0xad, 0x2e, 0x52, 0x55, 0x41, 0x52, 0x05, + 0x09, 0x55, 0x42, 0xb5, 0x69, 0xbb, 0x95, 0x2d, 0x20, 0x81, 0xe8, 0x52, 0x85, 0x8d, 0xa5, 0x72, + 0x82, 0x15, 0x22, 0x9a, 0x38, 0xf2, 0xef, 0x56, 0xed, 0x03, 0xb0, 0x33, 0x32, 0x76, 0xe6, 0x49, + 0x3a, 0x76, 0x44, 0x0c, 0x05, 0xb5, 0x03, 0xcc, 0x3c, 0x01, 0x72, 0x1c, 0x0a, 0x03, 0x03, 0x93, + 0x2d, 0xf9, 0x9c, 0xe3, 0xef, 0xff, 0x8f, 0xb9, 0x2b, 0x99, 0x10, 0x94, 0x48, 0x3a, 0x69, 0x87, + 0x14, 0xc8, 0xb8, 0xe5, 0x33, 0x49, 0x5b, 0x24, 0x64, 0x09, 0x83, 0x08, 0x70, 0x2a, 0xb8, 0xe4, + 0x95, 0xad, 0x4c, 0x84, 0x73, 0x11, 0xce, 0x45, 0xb5, 0xff, 0x21, 0x0f, 0x79, 0xa6, 0x20, 0xea, + 0xa6, 0xc5, 0x35, 0x2b, 0xe0, 0x10, 0x73, 0x20, 0x3e, 0x05, 0xb6, 0xc9, 0x0b, 0x78, 0x94, 0xe8, + 0x77, 0xe7, 0x05, 0x99, 0x85, 0x3e, 0x15, 0x34, 0x86, 0x4a, 0xcf, 0x2c, 0xf9, 0x23, 0x91, 0x0c, + 0x04, 0x95, 0xac, 0x8a, 0xea, 0xa8, 0x51, 0x72, 0xf1, 0x7c, 0x69, 0x1b, 0x8f, 0x4b, 0x7b, 0x2f, + 0x8c, 0xe4, 0xd5, 0xc8, 0xc7, 0x01, 0x8f, 0x49, 0x1e, 0xa8, 0x8f, 0x26, 0x5c, 0x5e, 0x13, 0x39, + 0x4d, 0x19, 0xe0, 0x63, 0x16, 0x78, 0x45, 0x15, 0xe0, 0x51, 0xc9, 0x2a, 0x37, 0xc8, 0x34, 0x43, + 0x0a, 0x83, 0x54, 0x44, 0x01, 0x83, 0xea, 0xaf, 0xfa, 0xef, 0x46, 0xb9, 0xbd, 0x8d, 0xb5, 0x0b, + 0x2b, 0x9a, 0x0f, 0x70, 0x65, 0x3c, 0xe2, 0x51, 0xe2, 0x9e, 0xaa, 0xcf, 0xde, 0x96, 0xf6, 0xbf, + 0x29, 0x8d, 0x87, 0x5d, 0xe7, 0xd3, 0xed, 0xdc, 0x3f, 0xd9, 0xfb, 0x3f, 0x23, 0x50, 0x41, 0xe0, + 0x95, 0x42, 0x0a, 0xfd, 0xcc, 0xda, 0x2d, 0xde, 0xcd, 0x6c, 0xf4, 0x3a, 0xb3, 0x91, 0xd3, 0x33, + 0xff, 0x9e, 0xe8, 0x3d, 0x9e, 0x4b, 0x45, 0x78, 0x68, 0x16, 0xd2, 0x6c, 0xf0, 0x6c, 0xd6, 0x72, + 0x7b, 0x07, 0x7f, 0xbb, 0x57, 0xac, 0xb7, 0xe3, 0xfe, 0x51, 0x74, 0x5e, 0x6e, 0x71, 0xcf, 0xe6, + 0x2b, 0x0b, 0x2d, 0x56, 0x16, 0x7a, 0x5e, 0x59, 0xe8, 0x76, 0x6d, 0x19, 0x8b, 0xb5, 0x65, 0x3c, + 0xac, 0x2d, 0xe3, 0xe2, 0xe0, 0x2b, 0xe8, 0x90, 0x02, 0x44, 0x41, 0x53, 0xb7, 0x1a, 0x70, 0xc1, + 0xc8, 0xb8, 0x43, 0x26, 0x9b, 0x7e, 0x33, 0x6c, 0xbf, 0x90, 0x35, 0xd1, 0x79, 0x0f, 0x00, 0x00, + 0xff, 0xff, 0x3c, 0x5f, 0xca, 0xac, 0xfd, 0x01, 0x00, 0x00, } +func (this *Params) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Params) + if !ok { + that2, ok := that.(Params) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.BurnRate.Equal(that1.BurnRate) { + return false + } + if len(this.GasPrices) != len(that1.GasPrices) { + return false + } + for i := range this.GasPrices { + if !this.GasPrices[i].Equal(&that1.GasPrices[i]) { + return false + } + } + return true +} func (m *Params) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -152,6 +204,30 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.GasPrices) > 0 { + for iNdEx := len(m.GasPrices) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.GasPrices[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.BurnRate.Size() + i -= size + if _, err := m.BurnRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa return len(dAtA) - i, nil } @@ -205,6 +281,14 @@ func (m *Params) Size() (n int) { } var l int _ = l + l = m.BurnRate.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.GasPrices) > 0 { + for _, e := range m.GasPrices { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } return n } @@ -254,6 +338,74 @@ func (m *Params) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BurnRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + 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 ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.BurnRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GasPrices", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GasPrices = append(m.GasPrices, types.DecCoin{}) + if err := m.GasPrices[len(m.GasPrices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/tax2gas/types/keys.go b/x/tax2gas/types/keys.go index ac537a231..795af6f75 100644 --- a/x/tax2gas/types/keys.go +++ b/x/tax2gas/types/keys.go @@ -6,7 +6,17 @@ const ( StoreKey = ModuleName RouterKey = ModuleName + + ConsumedGasFee = "consumedGasFee" + + TaxGas = "taxGas" + + FeeDenom = "feeDenom" ) // Key defines the store key for tax2gas. -var Key = []byte{0x01} +var ( + Key = []byte{0x01} + + ParamsKey = []byte{0x30} +) diff --git a/x/tax2gas/types/params.go b/x/tax2gas/types/params.go index 9d11dd3f4..30a40e3c6 100644 --- a/x/tax2gas/types/params.go +++ b/x/tax2gas/types/params.go @@ -1,6 +1,8 @@ package types import ( + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) @@ -20,7 +22,34 @@ func NewParams() Params { // DefaultParams are the default tax2gas module parameters. func DefaultParams() Params { - return Params{} + return Params{ + BurnRate: sdk.NewDecFromIntWithPrec(math.NewInt(1), 2), + GasPrices: sdk.NewDecCoins( + sdk.NewDecCoinFromDec("uluna", sdk.NewDecWithPrec(28325, 3)), + sdk.NewDecCoinFromDec("usdr", sdk.NewDecWithPrec(52469, 5)), + sdk.NewDecCoinFromDec("uusd", sdk.NewDecWithPrec(75, 2)), + sdk.NewDecCoinFromDec("ukrw", sdk.NewDecWithPrec(850, 0)), + sdk.NewDecCoinFromDec("umnt", sdk.NewDecWithPrec(2142855, 3)), + sdk.NewDecCoinFromDec("ueur", sdk.NewDecWithPrec(625, 3)), + sdk.NewDecCoinFromDec("ucny", sdk.NewDecWithPrec(49, 1)), + sdk.NewDecCoinFromDec("ujpy", sdk.NewDecWithPrec(8185, 2)), + sdk.NewDecCoinFromDec("ugbp", sdk.NewDecWithPrec(55, 2)), + sdk.NewDecCoinFromDec("uinr", sdk.NewDecWithPrec(544, 1)), + sdk.NewDecCoinFromDec("ucad", sdk.NewDecWithPrec(95, 2)), + sdk.NewDecCoinFromDec("uchf", sdk.NewDecWithPrec(7, 1)), + sdk.NewDecCoinFromDec("uaud", sdk.NewDecWithPrec(95, 2)), + sdk.NewDecCoinFromDec("usgd", sdk.NewDec(1)), + sdk.NewDecCoinFromDec("uthb", sdk.NewDecWithPrec(231, 1)), + sdk.NewDecCoinFromDec("usek", sdk.NewDecWithPrec(625, 2)), + sdk.NewDecCoinFromDec("unok", sdk.NewDecWithPrec(625, 2)), + sdk.NewDecCoinFromDec("udkk", sdk.NewDecWithPrec(45, 1)), + sdk.NewDecCoinFromDec("uidr", sdk.NewDecWithPrec(10900, 0)), + sdk.NewDecCoinFromDec("uphp", sdk.NewDecWithPrec(38, 0)), + sdk.NewDecCoinFromDec("uhkd", sdk.NewDecWithPrec(585, 2)), + sdk.NewDecCoinFromDec("umyr", sdk.NewDecWithPrec(3, 0)), + sdk.NewDecCoinFromDec("utwd", sdk.NewDecWithPrec(20, 0)), + ), + } } // Validate validates params. diff --git a/x/tax2gas/types/query.pb.go b/x/tax2gas/types/query.pb.go index 8ebbce812..9597dd1a5 100644 --- a/x/tax2gas/types/query.pb.go +++ b/x/tax2gas/types/query.pb.go @@ -30,21 +30,21 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // =============================== Params -type ParamsRequest struct { +type QueryParamsRequest struct { } -func (m *ParamsRequest) Reset() { *m = ParamsRequest{} } -func (m *ParamsRequest) String() string { return proto.CompactTextString(m) } -func (*ParamsRequest) ProtoMessage() {} -func (*ParamsRequest) Descriptor() ([]byte, []int) { +func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } +func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryParamsRequest) ProtoMessage() {} +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { return fileDescriptor_bfce3f3a760d419d, []int{0} } -func (m *ParamsRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *ParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_ParamsRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -54,34 +54,34 @@ func (m *ParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error return b[:n], nil } } -func (m *ParamsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ParamsRequest.Merge(m, src) +func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsRequest.Merge(m, src) } -func (m *ParamsRequest) XXX_Size() int { +func (m *QueryParamsRequest) XXX_Size() int { return m.Size() } -func (m *ParamsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ParamsRequest.DiscardUnknown(m) +func (m *QueryParamsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) } -var xxx_messageInfo_ParamsRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo -type ParamsResponse struct { +type QueryParamsResponse struct { Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` } -func (m *ParamsResponse) Reset() { *m = ParamsResponse{} } -func (m *ParamsResponse) String() string { return proto.CompactTextString(m) } -func (*ParamsResponse) ProtoMessage() {} -func (*ParamsResponse) Descriptor() ([]byte, []int) { +func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } +func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryParamsResponse) ProtoMessage() {} +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { return fileDescriptor_bfce3f3a760d419d, []int{1} } -func (m *ParamsResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *ParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_ParamsResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -91,19 +91,19 @@ func (m *ParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, erro return b[:n], nil } } -func (m *ParamsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ParamsResponse.Merge(m, src) +func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsResponse.Merge(m, src) } -func (m *ParamsResponse) XXX_Size() int { +func (m *QueryParamsResponse) XXX_Size() int { return m.Size() } -func (m *ParamsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ParamsResponse.DiscardUnknown(m) +func (m *QueryParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) } -var xxx_messageInfo_ParamsResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo -func (m *ParamsResponse) GetParams() Params { +func (m *QueryParamsResponse) GetParams() Params { if m != nil { return m.Params } @@ -111,33 +111,33 @@ func (m *ParamsResponse) GetParams() Params { } func init() { - proto.RegisterType((*ParamsRequest)(nil), "terra.tax2gas.v1beta1.ParamsRequest") - proto.RegisterType((*ParamsResponse)(nil), "terra.tax2gas.v1beta1.ParamsResponse") + proto.RegisterType((*QueryParamsRequest)(nil), "terra.tax2gas.v1beta1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "terra.tax2gas.v1beta1.QueryParamsResponse") } func init() { proto.RegisterFile("terra/tax2gas/v1beta1/query.proto", fileDescriptor_bfce3f3a760d419d) } var fileDescriptor_bfce3f3a760d419d = []byte{ - // 292 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2c, 0x49, 0x2d, 0x2a, - 0x4a, 0xd4, 0x2f, 0x49, 0xac, 0x30, 0x4a, 0x4f, 0x2c, 0xd6, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, - 0x34, 0xd4, 0x2f, 0x2c, 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x05, - 0x2b, 0xd1, 0x83, 0x2a, 0xd1, 0x83, 0x2a, 0x91, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0xab, 0xd0, - 0x07, 0xb1, 0x20, 0x8a, 0xa5, 0x64, 0xd2, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x13, 0x0b, 0x32, - 0xf5, 0x13, 0xf3, 0xf2, 0xf2, 0x4b, 0x12, 0x4b, 0x32, 0xf3, 0xf3, 0x8a, 0xa1, 0xb2, 0xca, 0xd8, - 0x6d, 0x4b, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x84, 0x2a, 0x52, 0xe2, 0xe7, 0xe2, 0x0d, 0x48, 0x2c, - 0x4a, 0xcc, 0x2d, 0x0e, 0x4a, 0x2d, 0x2c, 0x4d, 0x2d, 0x2e, 0x51, 0xf2, 0xe5, 0xe2, 0x83, 0x09, - 0x14, 0x17, 0xe4, 0xe7, 0x15, 0xa7, 0x0a, 0x59, 0x73, 0xb1, 0x15, 0x80, 0x45, 0x24, 0x18, 0x15, - 0x18, 0x35, 0xb8, 0x8d, 0x64, 0xf5, 0xb0, 0xba, 0x51, 0x0f, 0xa2, 0xcd, 0x89, 0xe5, 0xc4, 0x3d, - 0x79, 0x86, 0x20, 0xa8, 0x16, 0xa3, 0x5a, 0x2e, 0xd6, 0x40, 0x90, 0xf7, 0x84, 0x4a, 0xb8, 0xd8, - 0x20, 0x0a, 0x84, 0x54, 0xf0, 0xea, 0x87, 0xba, 0x43, 0x4a, 0x95, 0x80, 0x2a, 0x88, 0xe3, 0x94, - 0x64, 0x9b, 0x2e, 0x3f, 0x99, 0xcc, 0x24, 0x2e, 0x24, 0xaa, 0x8f, 0xea, 0x5b, 0xa8, 0x63, 0xbc, - 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, - 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x20, 0x3d, 0xb3, 0x24, 0xa3, - 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x39, 0x27, 0xb1, 0xb8, 0x38, 0x33, 0x59, 0x17, 0x62, - 0x44, 0x72, 0x7e, 0x51, 0xaa, 0x7e, 0x99, 0xb1, 0x7e, 0x05, 0xdc, 0xb0, 0x92, 0xca, 0x82, 0xd4, - 0xe2, 0x24, 0x36, 0x70, 0x88, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x70, 0x1a, 0xdb, - 0xc6, 0x01, 0x00, 0x00, + // 294 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x90, 0x31, 0x4b, 0xc3, 0x40, + 0x14, 0xc7, 0x73, 0xa2, 0x19, 0xce, 0xed, 0x6c, 0x51, 0x82, 0x3d, 0x35, 0x2e, 0x2a, 0x78, 0x67, + 0xd3, 0xd1, 0xcd, 0xd1, 0x49, 0x33, 0xba, 0x5d, 0xc2, 0x71, 0x06, 0xda, 0xbc, 0xf4, 0xee, 0x52, + 0xda, 0xc5, 0xc1, 0xc5, 0x55, 0xf0, 0x4b, 0x75, 0x2c, 0xb8, 0x38, 0x89, 0x24, 0x7e, 0x10, 0x69, + 0x72, 0x08, 0xc5, 0x0a, 0xdd, 0x8e, 0x77, 0xbf, 0xf7, 0x7f, 0x3f, 0xfe, 0xf8, 0xc4, 0x4a, 0xad, + 0x05, 0xb7, 0x62, 0x1a, 0x29, 0x61, 0xf8, 0xa4, 0x9f, 0x48, 0x2b, 0xfa, 0x7c, 0x5c, 0x4a, 0x3d, + 0x63, 0x85, 0x06, 0x0b, 0xa4, 0xdb, 0x20, 0xcc, 0x21, 0xcc, 0x21, 0x41, 0x47, 0x81, 0x82, 0x86, + 0xe0, 0xcb, 0x57, 0x0b, 0x07, 0x87, 0x0a, 0x40, 0x0d, 0x25, 0x17, 0x45, 0xc6, 0x45, 0x9e, 0x83, + 0x15, 0x36, 0x83, 0xdc, 0xb8, 0xdf, 0xd3, 0xf5, 0xd7, 0x94, 0xcc, 0xa5, 0xc9, 0x1c, 0x14, 0x76, + 0x30, 0xb9, 0x5f, 0x9e, 0xbf, 0x13, 0x5a, 0x8c, 0x4c, 0x2c, 0xc7, 0xa5, 0x34, 0x36, 0x8c, 0xf1, + 0xde, 0xca, 0xd4, 0x14, 0x90, 0x1b, 0x49, 0xae, 0xb1, 0x5f, 0x34, 0x93, 0x03, 0x74, 0x8c, 0xce, + 0x76, 0xa3, 0x1e, 0x5b, 0x6b, 0xcb, 0xda, 0xb5, 0x9b, 0xed, 0xf9, 0xe7, 0x91, 0x17, 0xbb, 0x95, + 0xe8, 0x05, 0xe1, 0x9d, 0x26, 0x94, 0x3c, 0x61, 0xbf, 0x25, 0xc8, 0xf9, 0x3f, 0x01, 0x7f, 0x95, + 0x82, 0x8b, 0x4d, 0xd0, 0xd6, 0x33, 0xec, 0x3d, 0xbf, 0x7f, 0xbf, 0x6d, 0xed, 0x93, 0x2e, 0x5f, + 0xad, 0xc0, 0x79, 0xdd, 0xce, 0x2b, 0x8a, 0x16, 0x15, 0x45, 0x5f, 0x15, 0x45, 0xaf, 0x35, 0xf5, + 0x16, 0x35, 0xf5, 0x3e, 0x6a, 0xea, 0x3d, 0x5c, 0xa9, 0xcc, 0x3e, 0x96, 0x09, 0x4b, 0x61, 0xc4, + 0xd3, 0xa1, 0x30, 0x26, 0x4b, 0x2f, 0xdb, 0x88, 0x14, 0xb4, 0xe4, 0x93, 0x01, 0x9f, 0xfe, 0x86, + 0xd9, 0x59, 0x21, 0x4d, 0xe2, 0x37, 0x35, 0x0e, 0x7e, 0x02, 0x00, 0x00, 0xff, 0xff, 0x08, 0x41, + 0xa4, 0x16, 0xdb, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -152,7 +152,7 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type QueryClient interface { - Params(ctx context.Context, in *ParamsRequest, opts ...grpc.CallOption) (*ParamsResponse, error) + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) } type queryClient struct { @@ -163,8 +163,8 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { return &queryClient{cc} } -func (c *queryClient) Params(ctx context.Context, in *ParamsRequest, opts ...grpc.CallOption) (*ParamsResponse, error) { - out := new(ParamsResponse) +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) err := c.cc.Invoke(ctx, "/terra.tax2gas.v1beta1.Query/Params", in, out, opts...) if err != nil { return nil, err @@ -174,14 +174,14 @@ func (c *queryClient) Params(ctx context.Context, in *ParamsRequest, opts ...grp // QueryServer is the server API for Query service. type QueryServer interface { - Params(context.Context, *ParamsRequest) (*ParamsResponse, error) + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. type UnimplementedQueryServer struct { } -func (*UnimplementedQueryServer) Params(ctx context.Context, req *ParamsRequest) (*ParamsResponse, error) { +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") } @@ -190,7 +190,7 @@ func RegisterQueryServer(s grpc1.Server, srv QueryServer) { } func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ParamsRequest) + in := new(QueryParamsRequest) if err := dec(in); err != nil { return nil, err } @@ -202,7 +202,7 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf FullMethod: "/terra.tax2gas.v1beta1.Query/Params", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*ParamsRequest)) + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) } return interceptor(ctx, in, info, handler) } @@ -220,7 +220,7 @@ var _Query_serviceDesc = grpc.ServiceDesc{ Metadata: "terra/tax2gas/v1beta1/query.proto", } -func (m *ParamsRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -230,12 +230,12 @@ func (m *ParamsRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ParamsRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -243,7 +243,7 @@ func (m *ParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *ParamsResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -253,12 +253,12 @@ func (m *ParamsResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ParamsResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -287,7 +287,7 @@ func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *ParamsRequest) Size() (n int) { +func (m *QueryParamsRequest) Size() (n int) { if m == nil { return 0 } @@ -296,7 +296,7 @@ func (m *ParamsRequest) Size() (n int) { return n } -func (m *ParamsResponse) Size() (n int) { +func (m *QueryParamsResponse) Size() (n int) { if m == nil { return 0 } @@ -313,7 +313,7 @@ func sovQuery(x uint64) (n int) { func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *ParamsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -336,10 +336,10 @@ func (m *ParamsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ParamsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -363,7 +363,7 @@ func (m *ParamsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *ParamsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -386,10 +386,10 @@ func (m *ParamsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ParamsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: diff --git a/x/tax2gas/types/query.pb.gw.go b/x/tax2gas/types/query.pb.gw.go index 3214847a9..27f6ee6cf 100644 --- a/x/tax2gas/types/query.pb.gw.go +++ b/x/tax2gas/types/query.pb.gw.go @@ -34,7 +34,7 @@ var _ = descriptor.ForMessage var _ = metadata.Join func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ParamsRequest + var protoReq QueryParamsRequest var metadata runtime.ServerMetadata msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -43,7 +43,7 @@ func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, cl } func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ParamsRequest + var protoReq QueryParamsRequest var metadata runtime.ServerMetadata msg, err := server.Params(ctx, &protoReq) diff --git a/x/wasm/keeper/testdata/test.wasm b/x/wasm/keeper/testdata/test.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8194957c7c79745d3dab6d15875622b8f2ee5cef GIT binary patch literal 282151 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