diff --git a/CHANGELOG.md b/CHANGELOG.md index 1696a995a36..da2b6842568 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * [#6991](https://github.com/osmosis-labs/osmosis/pull/6991) Fix: total liquidity poolmanager grpc gateway query * [#7149](https://github.com/osmosis-labs/osmosis/pull/7149) Fix double emitting CacheCtx events (e.g. Epoch, Superfluid, CL) * [#7237](https://github.com/osmosis-labs/osmosis/pull/7237) Removes tx_fee_tracker from the proto rev tracker, no longer tracks in state. +* [#7240](https://github.com/osmosis-labs/osmosis/pull/7240) Protorev tracker now tracks a coin array to improve gas efficiency. ### Features diff --git a/app/upgrades/v21/upgrades_test.go b/app/upgrades/v21/upgrades_test.go index ce9097ad3e7..68071abf2c9 100644 --- a/app/upgrades/v21/upgrades_test.go +++ b/app/upgrades/v21/upgrades_test.go @@ -52,10 +52,10 @@ func (s *UpgradeTestSuite) TestUpgrade() { s.Require().Equal(v21UpgradeHeight, allProtocolRevenue.TakerFeesTracker.HeightAccountingStartsFrom) // s.Require().Equal(v21UpgradeHeight, allProtocolRevenue.TxFeesTracker.HeightAccountingStartsFrom) // All values should be nill except for the cyclic arb profits, which should start at the value it was at time of upgrade - s.Require().Equal(sdk.Coins(nil), allProtocolRevenue.TakerFeesTracker.TakerFeesToCommunityPool) - s.Require().Equal(sdk.Coins(nil), allProtocolRevenue.TakerFeesTracker.TakerFeesToStakers) + s.Require().Equal([]sdk.Coin{}, allProtocolRevenue.TakerFeesTracker.TakerFeesToCommunityPool) + s.Require().Equal([]sdk.Coin{}, allProtocolRevenue.TakerFeesTracker.TakerFeesToStakers) // s.Require().Equal(sdk.Coins(nil), allProtocolRevenue.TxFeesTracker.TxFees) - s.Require().Equal(cyclicArbProfits, allProtocolRevenue.CyclicArbTracker.CyclicArb) + s.Require().Equal([]sdk.Coin(cyclicArbProfits), allProtocolRevenue.CyclicArbTracker.CyclicArb) } diff --git a/app/upgrades/v22/upgrades.go b/app/upgrades/v22/upgrades.go index e6a841fca92..cb26d6a063e 100644 --- a/app/upgrades/v22/upgrades.go +++ b/app/upgrades/v22/upgrades.go @@ -25,6 +25,23 @@ func CreateUpgradeHandler( return nil, err } + // Migrate legacy taker fee tracker to new taker fee tracker (for performance reasons) + oldTakerFeeTrackerForStakers := keepers.PoolManagerKeeper.GetLegacyTakerFeeTrackerForStakers(ctx) + for _, coin := range oldTakerFeeTrackerForStakers { + err := keepers.PoolManagerKeeper.UpdateTakerFeeTrackerForStakersByDenom(ctx, coin.Denom, coin.Amount) + if err != nil { + return nil, err + } + } + + oldTakerFeeTrackerForCommunityPool := keepers.PoolManagerKeeper.GetLegacyTakerFeeTrackerForCommunityPool(ctx) + for _, coin := range oldTakerFeeTrackerForCommunityPool { + err := keepers.PoolManagerKeeper.UpdateTakerFeeTrackerForCommunityPoolByDenom(ctx, coin.Denom, coin.Amount) + if err != nil { + return nil, err + } + } + // Properly register consensus params. In the process, change params as per: // https://www.mintscan.io/osmosis/proposals/705 defaultConsensusParams := tmtypes.DefaultConsensusParams().ToProto() diff --git a/app/upgrades/v22/upgrades_test.go b/app/upgrades/v22/upgrades_test.go new file mode 100644 index 00000000000..b3f2373bc65 --- /dev/null +++ b/app/upgrades/v22/upgrades_test.go @@ -0,0 +1,84 @@ +package v22_test + +import ( + "testing" + + "github.com/stretchr/testify/suite" + + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + + abci "github.com/cometbft/cometbft/abci/types" + + "github.com/osmosis-labs/osmosis/osmomath" + "github.com/osmosis-labs/osmosis/osmoutils" + "github.com/osmosis-labs/osmosis/v21/app/apptesting" + "github.com/osmosis-labs/osmosis/v21/x/protorev/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + + poolmanagertypes "github.com/osmosis-labs/osmosis/v21/x/poolmanager/types" +) + +const ( + v22UpgradeHeight = int64(10) +) + +type UpgradeTestSuite struct { + apptesting.KeeperTestHelper +} + +func TestUpgradeTestSuite(t *testing.T) { + suite.Run(t, new(UpgradeTestSuite)) +} + +func (s *UpgradeTestSuite) TestUpgrade() { + s.Setup() + + expectedTakerFeeForStakers := []sdk.Coin{sdk.NewCoin("uakt", osmomath.NewInt(3000)), sdk.NewCoin("uatom", osmomath.NewInt(1000)), sdk.NewCoin("uosmo", osmomath.NewInt(2000))} + expectedTakerFeeForCommunityPool := []sdk.Coin{sdk.NewCoin("uakt", osmomath.NewInt(2000)), sdk.NewCoin("uatom", osmomath.NewInt(3000)), sdk.NewCoin("uosmo", osmomath.NewInt(1000))} + expectedTrackerStartHeight := int64(3) + + // Set up old protorev tracker prior to upgrade + s.App.PoolManagerKeeper.SetTakerFeeTrackerStartHeight(s.Ctx, expectedTrackerStartHeight) + newTakerFeeForStakers := poolmanagertypes.TrackedVolume{ + Amount: expectedTakerFeeForStakers, + } + osmoutils.MustSet(s.Ctx.KVStore(s.App.GetKey(poolmanagertypes.StoreKey)), poolmanagertypes.KeyTakerFeeStakersProtoRev, &newTakerFeeForStakers) + + newTakerFeeForCommunityPool := poolmanagertypes.TrackedVolume{ + Amount: expectedTakerFeeForCommunityPool, + } + osmoutils.MustSet(s.Ctx.KVStore(s.App.GetKey(poolmanagertypes.StoreKey)), poolmanagertypes.KeyTakerFeeCommunityPoolProtoRev, &newTakerFeeForCommunityPool) + + // Set up cyclic arb tracker just to double check that it is not affected by the upgrade + s.App.ProtoRevKeeper.SetCyclicArbProfitTrackerStartHeight(s.Ctx, expectedTrackerStartHeight) + cyclicArbProfits := sdk.NewCoins(sdk.NewCoin(types.OsmosisDenomination, osmomath.NewInt(9000)), sdk.NewCoin("Atom", osmomath.NewInt(3000))) + err := s.App.AppKeepers.ProtoRevKeeper.UpdateStatistics(s.Ctx, poolmanagertypes.SwapAmountInRoutes{}, cyclicArbProfits[0].Denom, cyclicArbProfits[0].Amount) + s.Require().NoError(err) + err = s.App.AppKeepers.ProtoRevKeeper.UpdateStatistics(s.Ctx, poolmanagertypes.SwapAmountInRoutes{}, cyclicArbProfits[1].Denom, cyclicArbProfits[1].Amount) + s.Require().NoError(err) + + dummyUpgrade(s) + s.Require().NotPanics(func() { + s.App.BeginBlocker(s.Ctx, abci.RequestBeginBlock{}) + }) + + allProtocolRevenue := s.App.ProtoRevKeeper.GetAllProtocolRevenue(s.Ctx) + + // Check that the taker fee tracker for stakers has been migrated correctly + s.Require().Equal(expectedTakerFeeForStakers, allProtocolRevenue.TakerFeesTracker.TakerFeesToStakers) + s.Require().Equal(expectedTakerFeeForCommunityPool, allProtocolRevenue.TakerFeesTracker.TakerFeesToCommunityPool) + s.Require().Equal(expectedTrackerStartHeight, allProtocolRevenue.TakerFeesTracker.HeightAccountingStartsFrom) + s.Require().Equal(expectedTrackerStartHeight, allProtocolRevenue.CyclicArbTracker.HeightAccountingStartsFrom) +} + +func dummyUpgrade(s *UpgradeTestSuite) { + s.Ctx = s.Ctx.WithBlockHeight(v22UpgradeHeight - 1) + plan := upgradetypes.Plan{Name: "v22", Height: v22UpgradeHeight} + err := s.App.UpgradeKeeper.ScheduleUpgrade(s.Ctx, plan) + s.Require().NoError(err) + _, exists := s.App.UpgradeKeeper.GetUpgradePlan(s.Ctx) + s.Require().True(exists) + + s.Ctx = s.Ctx.WithBlockHeight(v22UpgradeHeight) +} diff --git a/go.mod b/go.mod index 57b7d7b0815..299902549a6 100644 --- a/go.mod +++ b/go.mod @@ -19,17 +19,17 @@ require ( github.com/cosmos/ibc-go/v7 v7.3.1 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.3 - github.com/golangci/golangci-lint v1.54.2 + github.com/golangci/golangci-lint v1.55.2 github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/iancoleman/orderedmap v0.3.0 github.com/mattn/go-sqlite3 v1.14.17 github.com/ory/dockertest/v3 v3.10.0 github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 - github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18 - github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109065741-1aea8952d330 - github.com/osmosis-labs/osmosis/x/epochs v0.0.3-0.20240109034818-d2a4cb704d18 - github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109034818-d2a4cb704d18 + github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403 + github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403 + github.com/osmosis-labs/osmosis/x/epochs v0.0.3-0.20240109211933-17cb7c095403 + github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109211933-17cb7c095403 github.com/osmosis-labs/sqs v0.0.0-20240108192026-6ccc0a29f77d github.com/osmosis-labs/sqs/sqsdomain v0.0.0-20240108192026-6ccc0a29f77d github.com/pkg/errors v0.9.1 @@ -63,12 +63,14 @@ require ( cosmossdk.io/core v0.5.1 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect cosmossdk.io/log v1.2.1 // indirect - github.com/4meepo/tagalign v1.3.2 // indirect - github.com/Abirdcfly/dupword v0.0.12 // indirect + github.com/4meepo/tagalign v1.3.3 // indirect + github.com/Abirdcfly/dupword v0.0.13 // indirect + github.com/Antonboom/testifylint v0.2.3 // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/Djarvur/go-err113 v0.1.0 // indirect github.com/GaijinEntertainment/go-exhaustruct/v3 v3.1.0 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.1.0 // indirect + github.com/alecthomas/go-check-sumtype v0.1.3 // indirect github.com/alexkohler/nakedret/v2 v2.0.2 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect @@ -76,6 +78,7 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/btcutil v1.1.3 // indirect github.com/butuzov/mirror v1.1.0 // indirect + github.com/catenacyber/perfsprint v0.2.0 // indirect github.com/ccojocar/zxcvbn-go v1.0.1 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect @@ -96,6 +99,7 @@ require ( github.com/docker/distribution v2.8.2+incompatible // indirect github.com/felixge/httpsnoop v1.0.2 // indirect github.com/getsentry/sentry-go v0.23.0 // indirect + github.com/ghostiam/protogetter v0.2.3 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/google/btree v1.1.2 // indirect @@ -116,6 +120,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.2.4 // indirect github.com/linxGnu/grocksdb v1.7.16 // indirect + github.com/macabu/inamedparam v0.1.2 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect @@ -123,8 +128,7 @@ require ( github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/nunnatsa/ginkgolinter v0.13.5 // indirect - github.com/otiai10/copy v1.11.0 // indirect + github.com/nunnatsa/ginkgolinter v0.14.1 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect @@ -137,10 +141,11 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/timonwong/loggercheck v0.9.4 // indirect github.com/ulikunitz/xz v0.5.11 // indirect - github.com/xen0n/gosmopolitan v1.2.1 // indirect + github.com/xen0n/gosmopolitan v1.2.2 // indirect github.com/ykadowak/zerologlint v0.1.3 // indirect github.com/zimmski/go-mutesting v0.0.0-20210610104036-6d9217011a00 // indirect github.com/zondax/ledger-go v0.14.3 // indirect + go-simpler.org/sloglint v0.1.2 // indirect go.tmz.dev/musttag v0.7.2 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/oauth2 v0.15.0 // indirect @@ -176,19 +181,19 @@ require ( github.com/bkielbasa/cyclop v1.2.1 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bombsimon/wsl/v3 v3.4.0 // indirect - github.com/breml/bidichk v0.2.4 // indirect - github.com/breml/errchkjson v0.3.1 // indirect - github.com/butuzov/ireturn v0.2.0 // indirect + github.com/breml/bidichk v0.2.7 // indirect + github.com/breml/errchkjson v0.3.6 // indirect + github.com/butuzov/ireturn v0.2.2 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/charithe/durationcheck v0.0.10 // indirect - github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 // indirect + github.com/chavacava/garif v0.1.0 // indirect github.com/confio/ics23/go v0.9.1 // indirect github.com/containerd/continuity v0.3.0 // indirect github.com/cosmos/btcutil v1.0.5 github.com/cosmos/ledger-cosmos-go v0.12.4 // indirect - github.com/daixiang0/gci v0.11.0 // indirect + github.com/daixiang0/gci v0.11.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/denis-tingaikin/go-header v0.4.3 // indirect @@ -229,11 +234,11 @@ require ( github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect - github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 // indirect + github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e // indirect github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect github.com/golangci/misspell v0.4.1 // indirect - github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 // indirect + github.com/golangci/revgrep v0.5.2 // indirect github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect @@ -260,7 +265,7 @@ require ( github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jessevdk/go-flags v1.5.0 // indirect - github.com/jgautheron/goconst v1.5.1 // indirect + github.com/jgautheron/goconst v1.6.0 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect github.com/jmhodges/levigo v1.0.0 // indirect @@ -285,7 +290,7 @@ require ( github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mbilski/exhaustivestruct v1.2.0 // indirect - github.com/mgechev/revive v1.3.2 // indirect + github.com/mgechev/revive v1.3.4 // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -302,7 +307,7 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/polyfloyd/go-errorlint v1.4.4 // indirect + github.com/polyfloyd/go-errorlint v1.4.5 // indirect github.com/prometheus/client_golang v1.18.0 github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.45.0 // indirect @@ -316,10 +321,10 @@ require ( github.com/rs/cors v1.9.0 // indirect github.com/rs/zerolog v1.30.0 // indirect github.com/ryancurrah/gomodguard v1.3.0 // indirect - github.com/ryanrolds/sqlclosecheck v0.4.0 // indirect + github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/securego/gosec/v2 v2.17.0 // indirect + github.com/securego/gosec/v2 v2.18.2 // indirect github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect @@ -334,13 +339,13 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d github.com/tdakkota/asciicheck v0.2.0 // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tetafro/godot v1.4.14 // indirect + github.com/tetafro/godot v1.4.15 // indirect github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect github.com/tomarrell/wrapcheck/v2 v2.8.1 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/ultraware/funlen v0.1.0 // indirect github.com/ultraware/whitespace v0.0.5 // indirect - github.com/uudashr/gocognit v1.0.7 // indirect + github.com/uudashr/gocognit v1.1.2 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect @@ -349,20 +354,20 @@ require ( github.com/zimmski/go-tool v0.0.0-20150119110811-2dfdc9ac8439 // indirect github.com/zimmski/osutil v0.0.0-20190128123334-0d0b3ca231ac // indirect github.com/zondax/hid v0.9.2 // indirect - gitlab.com/bosi/decorder v0.4.0 // indirect + gitlab.com/bosi/decorder v0.4.1 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 // indirect - golang.org/x/mod v0.12.0 // indirect + golang.org/x/mod v0.13.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sync v0.5.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/term v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.13.0 // indirect + golang.org/x/tools v0.14.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - honnef.co/go/tools v0.4.5 // indirect + honnef.co/go/tools v0.4.6 // indirect mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect mvdan.cc/unparam v0.0.0-20230312165513-e84e2d14e3b8 // indirect diff --git a/go.sum b/go.sum index 32286ff7b1e..1a54f373029 100644 --- a/go.sum +++ b/go.sum @@ -539,18 +539,20 @@ filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/4meepo/tagalign v1.3.2 h1:1idD3yxlRGV18VjqtDbqYvQ5pXqQS0wO2dn6M3XstvI= -github.com/4meepo/tagalign v1.3.2/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE= +github.com/4meepo/tagalign v1.3.3 h1:ZsOxcwGD/jP4U/aw7qeWu58i7dwYemfy5Y+IF1ACoNw= +github.com/4meepo/tagalign v1.3.3/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= -github.com/Abirdcfly/dupword v0.0.12 h1:56NnOyrXzChj07BDFjeRA+IUzSz01jmzEq+G4kEgFhc= -github.com/Abirdcfly/dupword v0.0.12/go.mod h1:+us/TGct/nI9Ndcbcp3rgNcQzctTj68pq7TcgNpLfdI= +github.com/Abirdcfly/dupword v0.0.13 h1:SMS17YXypwP000fA7Lr+kfyBQyW14tTT+nRv9ASwUUo= +github.com/Abirdcfly/dupword v0.0.13/go.mod h1:Ut6Ue2KgF/kCOawpW4LnExT+xZLQviJPE4klBPMK/5Y= github.com/Antonboom/errname v0.1.12 h1:oh9ak2zUtsLp5oaEd/erjB4GPu9w19NyoIskZClDcQY= github.com/Antonboom/errname v0.1.12/go.mod h1:bK7todrzvlaZoQagP1orKzWXv59X/x0W0Io2XT1Ssro= github.com/Antonboom/nilnil v0.1.7 h1:ofgL+BA7vlA1K2wNQOsHzLJ2Pw5B5DpWRLdDAVvvTow= github.com/Antonboom/nilnil v0.1.7/go.mod h1:TP+ScQWVEq0eSIxqU8CbdT5DFWoHp0MbP+KMUO1BKYQ= +github.com/Antonboom/testifylint v0.2.3 h1:MFq9zyL+rIVpsvLX4vDPLojgN7qODzWsrnftNX2Qh60= +github.com/Antonboom/testifylint v0.2.3/go.mod h1:IYaXaOX9NbfAyO+Y04nfjGI8wDemC1rUyM/cYolz018= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -590,6 +592,12 @@ github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= +github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= +github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= +github.com/alecthomas/go-check-sumtype v0.1.3 h1:M+tqMxB68hcgccRXBMVCPI4UJ+QUfdSx0xdbypKCqA8= +github.com/alecthomas/go-check-sumtype v0.1.3/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= +github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk= +github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -642,10 +650,10 @@ github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aN github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/breml/bidichk v0.2.4 h1:i3yedFWWQ7YzjdZJHnPo9d/xURinSq3OM+gyM43K4/8= -github.com/breml/bidichk v0.2.4/go.mod h1:7Zk0kRFt1LIZxtQdl9W9JwGAcLTTkOs+tN7wuEYGJ3s= -github.com/breml/errchkjson v0.3.1 h1:hlIeXuspTyt8Y/UmP5qy1JocGNR00KQHgfaNtRAjoxQ= -github.com/breml/errchkjson v0.3.1/go.mod h1:XroxrzKjdiutFyW3nWhw34VGg7kiMsDQox73yWCGI2U= +github.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY= +github.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ= +github.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA= +github.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= @@ -677,13 +685,15 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= -github.com/butuzov/ireturn v0.2.0 h1:kCHi+YzC150GE98WFuZQu9yrTn6GEydO2AuPLbTgnO4= -github.com/butuzov/ireturn v0.2.0/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= +github.com/butuzov/ireturn v0.2.2 h1:jWI36dxXwVrI+RnXDwux2IZOewpmfv930OuIRfaBUJ0= +github.com/butuzov/ireturn v0.2.2/go.mod h1:RfGHUvvAuFFxoHKf4Z8Yxuh6OjlCw1KvR2zM1NFHeBk= github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI= github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE= github.com/bytedance/sonic v1.10.0-rc h1:3S5HeWxjX08CUqNrXtEittExpJsEKBNzrV5UnrzHxVQ= github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/catenacyber/perfsprint v0.2.0 h1:azOocHLscPjqXVJ7Mf14Zjlkn4uNua0+Hcg1wTR6vUo= +github.com/catenacyber/perfsprint v0.2.0/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= github.com/ccojocar/zxcvbn-go v1.0.1 h1:+sxrANSCj6CdadkcMnvde/GWU1vZiiXRbqYSCalV4/4= github.com/ccojocar/zxcvbn-go v1.0.1/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= @@ -702,8 +712,8 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= -github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 h1:W9o46d2kbNL06lq7UNDPV0zYLzkrde/bjIqO02eoll0= -github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8/go.mod h1:gakxgyXaaPkxvLw1XQxNGK4I37ys9iBRzNUx/B7pUCo= +github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= +github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0= github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA= @@ -795,8 +805,8 @@ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= -github.com/daixiang0/gci v0.11.0 h1:XeQbFKkCRxvVyn06EOuNY6LPGBLVuB/W130c8FrnX6A= -github.com/daixiang0/gci v0.11.0/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= +github.com/daixiang0/gci v0.11.2 h1:Oji+oPsp3bQ6bNNgX30NBAVT18P4uBH4sRZnlOlTj7Y= +github.com/daixiang0/gci v0.11.2/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -896,6 +906,8 @@ github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcP github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghostiam/protogetter v0.2.3 h1:qdv2pzo3BpLqezwqfGDLZ+nHEYmc5bUpIdsMbBVwMjw= +github.com/ghostiam/protogetter v0.2.3/go.mod h1:KmNLOsy1v04hKbvZs8EfGI1fk39AgTdRDxWNYPfXVc4= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= @@ -940,8 +952,8 @@ github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GO github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= -github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= @@ -1037,18 +1049,18 @@ github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9 github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo= github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= -github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY= -github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= -github.com/golangci/golangci-lint v1.54.2 h1:oR9zxfWYxt7hFqk6+fw6Enr+E7F0SN2nqHhJYyIb0yo= -github.com/golangci/golangci-lint v1.54.2/go.mod h1:vnsaCTPKCI2wreL9tv7RkHDwUrz3htLjed6+6UsvcwU= +github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e h1:ULcKCDV1LOZPFxGZaA6TlQbiM3J2GCPnkx/bGF6sX/g= +github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e/go.mod h1:Pm5KhLPA8gSnQwrQ6ukebRcapGb/BG9iUkdaiCcGHJM= +github.com/golangci/golangci-lint v1.55.2 h1:yllEIsSJ7MtlDBwDJ9IMBkyEUz2fYE0b5B8IUgO1oP8= +github.com/golangci/golangci-lint v1.55.2/go.mod h1:H60CZ0fuqoTwlTvnbyjhpZPWp7KmsjwV2yupIMiMXbM= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= github.com/golangci/misspell v0.4.1 h1:+y73iSicVy2PqyX7kmUefHusENlrP9YwuHZHPLGQj/g= github.com/golangci/misspell v0.4.1/go.mod h1:9mAN1quEo3DlpbaIKKyEvRxK1pwqR9s/Sea1bJCtlNI= -github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ= -github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= +github.com/golangci/revgrep v0.5.2 h1:EndcWoRhcnfj2NHQ+28hyuXpLMF+dQmCN+YaeeIl4FU= +github.com/golangci/revgrep v0.5.2/go.mod h1:bjAMA+Sh/QUfTDcHzxfyHxr4xKvllVr/0sCv2e7jJHA= github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -1246,8 +1258,8 @@ github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM= -github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= +github.com/jgautheron/goconst v1.6.0 h1:gbMLWKRMkzAc6kYsQL6/TxaoBUg3Jm9LSF/Ih1ADWGA= +github.com/jgautheron/goconst v1.6.0/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= @@ -1346,6 +1358,8 @@ github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuz github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/macabu/inamedparam v0.1.2 h1:RR5cnayM6Q7cDhQol32DE2BGAPGMnffJ31LFE+UklaU= +github.com/macabu/inamedparam v0.1.2/go.mod h1:Xg25QvY7IBRl1KLPV9Rbml8JOMZtF/iAkNkmV7eQgjw= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= @@ -1384,8 +1398,8 @@ github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvls github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= -github.com/mgechev/revive v1.3.2 h1:Wb8NQKBaALBJ3xrrj4zpwJwqwNA6nDpyJSEQWcCka6U= -github.com/mgechev/revive v1.3.2/go.mod h1:UCLtc7o5vg5aXCwdUTU1kEBQ1v+YXPAkYDIDXbrs5I0= +github.com/mgechev/revive v1.3.4 h1:k/tO3XTaWY4DEHal9tWBkkUMJYO/dLDVyMmAQxmIMDc= +github.com/mgechev/revive v1.3.4/go.mod h1:W+pZCMu9qj8Uhfs1iJMQsEFLRozUfvwFwqVvRbSNLVw= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= @@ -1439,8 +1453,8 @@ github.com/nishanths/exhaustive v0.11.0 h1:T3I8nUGhl/Cwu5Z2hfc92l0e04D2GEW6e0l8p github.com/nishanths/exhaustive v0.11.0/go.mod h1:RqwDsZ1xY0dNdqHho2z6X+bgzizwbLYOWnZbbl2wLB4= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.13.5 h1:fOsPB4CEZOPkyMqF4B9hoqOpooFWU7vWSVkCSscVpgU= -github.com/nunnatsa/ginkgolinter v0.13.5/go.mod h1:OBHy4536xtuX3102NM63XRtOyxqZOO02chsaeDWXVO8= +github.com/nunnatsa/ginkgolinter v0.14.1 h1:khx0CqR5U4ghsscjJ+lZVthp3zjIFytRXPTaQ/TMiyA= +github.com/nunnatsa/ginkgolinter v0.14.1/go.mod h1:nY0pafUSst7v7F637e7fymaMlQqI9c0Wka2fGsDkzWg= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -1456,14 +1470,14 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= -github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= +github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/gomega v1.28.1 h1:MijcGUbfYuznzK/5R4CPNoUP/9Xvuo20sXfEm6XxoTA= +github.com/onsi/gomega v1.28.1/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= @@ -1489,14 +1503,14 @@ github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6 h1:80nco4oGzcrS5XGdg6UoAKn github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6/go.mod h1:4BNXIoS9XecywMSdPr/DIwCgH2/Qjyr2+qhrHu8YSEo= github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 h1:YlmchqTmlwdWSmrRmXKR+PcU96ntOd8u10vTaTZdcNY= github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3/go.mod h1:lV6KnqXYD/ayTe7310MHtM3I2q8Z6bBfMAi+bhwPYtI= -github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18 h1:yK4tv3+4C+SebP1LeTkle4EuLAOSKsqpaXenlDwysrU= -github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18/go.mod h1:qhaCO81Ur3+qyO/jZ5qeiLsB0qlCLB2GiAEkUOzf1Jk= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109065741-1aea8952d330 h1:EKLwhlS2gUTE5RtmUS2VB6fkuazy4sIdJ7rx3c1adL4= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109065741-1aea8952d330/go.mod h1:g6QOo3cvOHn0lZtzX1c+qiHUIx4d79hvhGSAhWDa4DQ= -github.com/osmosis-labs/osmosis/x/epochs v0.0.3-0.20240109034818-d2a4cb704d18 h1:wGgEPQXXeCH+l7QBFSs9VpY+nUOEyShcaI8oL5DYnYo= -github.com/osmosis-labs/osmosis/x/epochs v0.0.3-0.20240109034818-d2a4cb704d18/go.mod h1:YgoPyLVFXeY/ekpmAHUeydkhRFR+TW2f2zIapeFIGjQ= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109034818-d2a4cb704d18 h1:QYAC/o4u1UXBJiqo0UqM/38osA/78pXREQCnYR3KQ7Q= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109034818-d2a4cb704d18/go.mod h1:pWfpsLxKo9HFIiO8hd2hEunMf3rsiln8Ayz479togLo= +github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403 h1:W7MrdlDaTerE4Me2FJzkBgRpRgeTtz3fWphCvhosZrQ= +github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403/go.mod h1:WVI8bFbAXhiNr2nUkKGUCqZGVE3dEpSxRLQ7lWJppm8= +github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403 h1:SS50/mI1rYZzVhKiUjXXmGfokPpnyEZBif1Na3KS6Fo= +github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403/go.mod h1:nlJvDKEyuZRhsSEBG7/58mxmQqt+SHhZ21su13N2Vt4= +github.com/osmosis-labs/osmosis/x/epochs v0.0.3-0.20240109211933-17cb7c095403 h1:ZKiD3QsPsNAHd1ljO4+xMEcV8pIIEjWTsbKKltb1Isc= +github.com/osmosis-labs/osmosis/x/epochs v0.0.3-0.20240109211933-17cb7c095403/go.mod h1:yhkqP7gCFx7g8U2NSPVZO9t5BHGpsK2EKuEBdrsleJA= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109211933-17cb7c095403 h1:9FOb9eQ7vgOD/0yY644DTq5fBC8vXsFYpKML19maPMw= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109211933-17cb7c095403/go.mod h1:bjpoigyf4GzRUEwDrUP4bz/FrqkiCiEefNbgmqhYmLA= github.com/osmosis-labs/sqs v0.0.0-20240108192026-6ccc0a29f77d h1:J650EirkcVLQuc6B2fiVmM4kNQqntYioxd6v/D0RfLw= github.com/osmosis-labs/sqs v0.0.0-20240108192026-6ccc0a29f77d/go.mod h1:mWCacHuCAOXS9TqOuGtSPVcO8rsfieHCaQjDE/wijZY= github.com/osmosis-labs/sqs/sqsdomain v0.0.0-20240108192026-6ccc0a29f77d h1:udZMOAqOYdBaYdkFMmylbuOGJBlCG70qehW9QR3cOdQ= @@ -1541,8 +1555,8 @@ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qR github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.4.4 h1:A9gytp+p6TYqeALTYRoxJESYP8wJRETRX2xzGWFsEBU= -github.com/polyfloyd/go-errorlint v1.4.4/go.mod h1:ry5NqF7l9Q77V+XqAfUg1zfryrEtyac3G5+WVpIK0xU= +github.com/polyfloyd/go-errorlint v1.4.5 h1:70YWmMy4FgRHehGNOUask3HtSFSOLKgmDn7ryNe7LqI= +github.com/polyfloyd/go-errorlint v1.4.5/go.mod h1:sIZEbFoDOCnTYYZoVkjc4hTnM459tuWA9H/EkdXwsKk= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -1624,8 +1638,8 @@ github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfF github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw= github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= -github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI= -github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ= +github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= +github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= @@ -1641,8 +1655,8 @@ github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84d github.com/sashamelentyev/usestdlibvars v1.24.0 h1:MKNzmXtGh5N0y74Z/CIaJh4GlB364l0K1RUT08WSWAc= github.com/sashamelentyev/usestdlibvars v1.24.0/go.mod h1:9cYkq+gYJ+a5W2RPdhfaSCnTVUC1OQP/bSiiBhq3OZE= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/securego/gosec/v2 v2.17.0 h1:ZpAStTDKY39insEG9OH6kV3IkhQZPTq9a9eGOLOjcdI= -github.com/securego/gosec/v2 v2.17.0/go.mod h1:lt+mgC91VSmriVoJLentrMkRCYs+HLTBnUFUBuhV2hc= +github.com/securego/gosec/v2 v2.18.2 h1:DkDt3wCiOtAHf1XkiXZBhQ6m6mK/b9T/wD257R3/c+I= +github.com/securego/gosec/v2 v2.18.2/go.mod h1:xUuqSF6i0So56Y2wwohWAmB07EdBkUN6crbLlHwbyJs= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= @@ -1732,8 +1746,8 @@ github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.4.14 h1:ScO641OHpf9UpHPk8fCknSuXNMpi4iFlwuWoBs3L+1s= -github.com/tetafro/godot v1.4.14/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/tetafro/godot v1.4.15 h1:QzdIs+XB8q+U1WmQEWKHQbKmCw06QuQM7gLx/dky2RM= +github.com/tetafro/godot v1.4.15/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/tidwall/gjson v1.16.0 h1:SyXa+dsSPpUlcwEDuKuEBJEz5vzTvOea+9rjyYodQFg= @@ -1769,8 +1783,8 @@ github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqz github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/uudashr/gocognit v1.0.7 h1:e9aFXgKgUJrQ5+bs61zBigmj7bFJ/5cC6HmMahVzuDo= -github.com/uudashr/gocognit v1.0.7/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= +github.com/uudashr/gocognit v1.1.2 h1:l6BAEKJqQH2UpKAPKdMfZf5kE4W/2xk8pfU1OVLvniI= +github.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -1778,8 +1792,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xen0n/gosmopolitan v1.2.1 h1:3pttnTuFumELBRSh+KQs1zcz4fN6Zy7aB0xlnQSn1Iw= -github.com/xen0n/gosmopolitan v1.2.1/go.mod h1:JsHq/Brs1o050OOdmzHeOr0N7OtlnKRAGAsElF8xBQA= +github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= +github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= @@ -1807,10 +1821,12 @@ github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= -gitlab.com/bosi/decorder v0.4.0 h1:HWuxAhSxIvsITcXeP+iIRg9d1cVfvVkmlF7M68GaoDY= -gitlab.com/bosi/decorder v0.4.0/go.mod h1:xarnteyUoJiOTEldDysquWKTVDCKo2TOIOIibSuWqOg= +gitlab.com/bosi/decorder v0.4.1 h1:VdsdfxhstabyhZovHafFw+9eJ6eU0d2CkFNJcZz/NU4= +gitlab.com/bosi/decorder v0.4.1/go.mod h1:jecSqWUew6Yle1pCr2eLWTensJMmsxHsBwt+PVbkAqA= go-simpler.org/assert v0.6.0 h1:QxSrXa4oRuo/1eHMXSBFHKvJIpWABayzKldqZyugG7E= go-simpler.org/assert v0.6.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= +go-simpler.org/sloglint v0.1.2 h1:IjdhF8NPxyn0Ckn2+fuIof7ntSnVUAqBFcQRrnG9AiM= +go-simpler.org/sloglint v0.1.2/go.mod h1:2LL+QImPfTslD5muNPydAEYmpXIj6o/WYcqnJjLi4o4= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= @@ -1917,8 +1933,8 @@ golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2273,8 +2289,8 @@ golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2609,8 +2625,8 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -honnef.co/go/tools v0.4.5 h1:YGD4H+SuIOOqsyoLOpZDWcieM28W47/zRO7f+9V3nvo= -honnef.co/go/tools v0.4.5/go.mod h1:GUV+uIBCLpdf0/v6UhHHG/yzI/z6qPskBeQCjcNB96k= +honnef.co/go/tools v0.4.6 h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8= +honnef.co/go/tools v0.4.6/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= diff --git a/osmomath/go.mod b/osmomath/go.mod index 557bcdc93f5..19705965c19 100644 --- a/osmomath/go.mod +++ b/osmomath/go.mod @@ -5,7 +5,7 @@ go 1.21 require ( cosmossdk.io/math v1.1.3-rc.1 github.com/cosmos/cosmos-sdk v0.47.5 - github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109034818-d2a4cb704d18 + github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403 github.com/stretchr/testify v1.8.4 gopkg.in/yaml.v2 v2.4.0 diff --git a/osmomath/go.sum b/osmomath/go.sum index 16a13f23737..f3cd3ea81c9 100644 --- a/osmomath/go.sum +++ b/osmomath/go.sum @@ -241,10 +241,10 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= -github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-5 h1:yNtKKl4wVbYcX3vW79GbKNsB0Gb670ihBrnD5+qWtek= -github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-5/go.mod h1:4BNXIoS9XecywMSdPr/DIwCgH2/Qjyr2+qhrHu8YSEo= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109034818-d2a4cb704d18 h1:gLVliRJfS5obrBtc90bUcxuCM9agyX8ASuEq9xW9YcE= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109034818-d2a4cb704d18/go.mod h1:YwgF7dbNF/toLe0TcL3EruyuDzugRDtISFed40Z/95g= +github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6 h1:80nco4oGzcrS5XGdg6UoAKn961Ra9UpE+W9YvBJ2h2E= +github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6/go.mod h1:4BNXIoS9XecywMSdPr/DIwCgH2/Qjyr2+qhrHu8YSEo= +github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403 h1:SS50/mI1rYZzVhKiUjXXmGfokPpnyEZBif1Na3KS6Fo= +github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403/go.mod h1:nlJvDKEyuZRhsSEBG7/58mxmQqt+SHhZ21su13N2Vt4= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= diff --git a/osmoutils/go.mod b/osmoutils/go.mod index 0e221b379f5..28b15f2c805 100644 --- a/osmoutils/go.mod +++ b/osmoutils/go.mod @@ -11,7 +11,7 @@ require ( github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/iavl v0.20.1 github.com/cosmos/ibc-go/v7 v7.3.1 - github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18 + github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403 github.com/osmosis-labs/osmosis/v21 v21.2.1 github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 diff --git a/osmoutils/go.sum b/osmoutils/go.sum index 4f891b153f3..2ba72472ac0 100644 --- a/osmoutils/go.sum +++ b/osmoutils/go.sum @@ -1227,10 +1227,10 @@ github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4 github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/osmosis-labs/cometbft v0.37.2-v21-osmo-1 h1:dAPp/n4+qqbJgPkMXcU+M0xUWWywHiOrW9RF3zLBbsI= github.com/osmosis-labs/cometbft v0.37.2-v21-osmo-1/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= -github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-5 h1:yNtKKl4wVbYcX3vW79GbKNsB0Gb670ihBrnD5+qWtek= -github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-5/go.mod h1:4BNXIoS9XecywMSdPr/DIwCgH2/Qjyr2+qhrHu8YSEo= -github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18 h1:yK4tv3+4C+SebP1LeTkle4EuLAOSKsqpaXenlDwysrU= -github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18/go.mod h1:qhaCO81Ur3+qyO/jZ5qeiLsB0qlCLB2GiAEkUOzf1Jk= +github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6 h1:80nco4oGzcrS5XGdg6UoAKn961Ra9UpE+W9YvBJ2h2E= +github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6/go.mod h1:4BNXIoS9XecywMSdPr/DIwCgH2/Qjyr2+qhrHu8YSEo= +github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403 h1:W7MrdlDaTerE4Me2FJzkBgRpRgeTtz3fWphCvhosZrQ= +github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403/go.mod h1:WVI8bFbAXhiNr2nUkKGUCqZGVE3dEpSxRLQ7lWJppm8= github.com/osmosis-labs/osmosis/v21 v21.2.1 h1:C6bNyfhhwGmHtrb0ZzzwN8VdbV3zrgkiYwmiEg/a+QY= github.com/osmosis-labs/osmosis/v21 v21.2.1/go.mod h1:Tnl0TMjv9U7CfIx2ikXYyv986bSgEu6wZL5TMxAz6rA= github.com/osmosis-labs/osmosis/x/epochs v0.0.3-0.20231220185444-78d2c6fefe94 h1:zMLkDwk0GkaeuA9WLV7YghfJ5GvV90ll4chOf7xzV6I= diff --git a/osmoutils/store_helper.go b/osmoutils/store_helper.go index aa1aa20a8aa..839b4ebb5bf 100644 --- a/osmoutils/store_helper.go +++ b/osmoutils/store_helper.go @@ -1,6 +1,7 @@ package osmoutils import ( + "bytes" "errors" "fmt" @@ -8,6 +9,8 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + "github.com/osmosis-labs/osmosis/osmomath" "github.com/cosmos/cosmos-sdk/store" @@ -222,3 +225,62 @@ func DeleteAllKeysFromPrefix(store store.KVStore, prefixKey []byte) { prefixStore.Delete(iter.Key()) } } + +// GetCoinArrayFromPrefix returns all coins from the store that has the given prefix. +func GetCoinArrayFromPrefix(ctx sdk.Context, storeKey storetypes.StoreKey, storePrefix []byte) []sdk.Coin { + coinArray := make([]sdk.Coin, 0) + + store := ctx.KVStore(storeKey) + iterator := sdk.KVStorePrefixIterator(store, storePrefix) + + defer iterator.Close() + for ; iterator.Valid(); iterator.Next() { + bz := iterator.Value() + sdkInt := osmomath.Int{} + if err := sdkInt.Unmarshal(bz); err == nil { + denom := bytes.TrimPrefix(iterator.Key(), storePrefix) + coinArray = append(coinArray, sdk.NewCoin(string(denom), sdkInt)) + } + } + + return coinArray +} + +// GetCoinByDenomFromPrefix returns the coin from the store that has the given prefix and denom. +// If the denom is not found, a zero coin is returned. +func GetCoinByDenomFromPrefix(ctx sdk.Context, storeKey storetypes.StoreKey, storePrefix []byte, denom string) (sdk.Coin, error) { + store := prefix.NewStore(ctx.KVStore(storeKey), storePrefix) + key := []byte(denom) + + bz := store.Get(key) + if len(bz) == 0 { + return sdk.NewCoin(denom, osmomath.ZeroInt()), nil + } + + sdkInt := osmomath.Int{} + if err := sdkInt.Unmarshal(bz); err != nil { + return sdk.NewCoin(denom, osmomath.ZeroInt()), err + } + + return sdk.NewCoin(denom, sdkInt), nil +} + +// IncreaseCoinByDenomFromPrefix increases the coin from the store that has the given prefix and denom by the specified amount. +func IncreaseCoinByDenomFromPrefix(ctx sdk.Context, storeKey storetypes.StoreKey, storePrefix []byte, denom string, increasedAmt osmomath.Int) error { + store := prefix.NewStore(ctx.KVStore(storeKey), storePrefix) + key := []byte(denom) + + coin, err := GetCoinByDenomFromPrefix(ctx, storeKey, storePrefix, denom) + if err != nil { + return err + } + + coin.Amount = coin.Amount.Add(increasedAmt) + bz, err := coin.Amount.Marshal() + if err != nil { + return err + } + + store.Set(key, bz) + return nil +} diff --git a/proto/osmosis/poolmanager/v1beta1/genesis.proto b/proto/osmosis/poolmanager/v1beta1/genesis.proto index 89a2e7f8971..8644ea8ccca 100644 --- a/proto/osmosis/poolmanager/v1beta1/genesis.proto +++ b/proto/osmosis/poolmanager/v1beta1/genesis.proto @@ -126,14 +126,10 @@ message TakerFeeDistributionPercentage { } message TakerFeesTracker { - repeated cosmos.base.v1beta1.Coin taker_fees_to_stakers = 1 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" - ]; - repeated cosmos.base.v1beta1.Coin taker_fees_to_community_pool = 2 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" - ]; + repeated cosmos.base.v1beta1.Coin taker_fees_to_stakers = 1 + [ (gogoproto.nullable) = false ]; + repeated cosmos.base.v1beta1.Coin taker_fees_to_community_pool = 2 + [ (gogoproto.nullable) = false ]; int64 height_accounting_starts_from = 3 [ (gogoproto.moretags) = "yaml:\"height_accounting_starts_from\"" ]; } diff --git a/proto/osmosis/protorev/v1beta1/protorev.proto b/proto/osmosis/protorev/v1beta1/protorev.proto index c54bd01376e..5a15a012c0a 100644 --- a/proto/osmosis/protorev/v1beta1/protorev.proto +++ b/proto/osmosis/protorev/v1beta1/protorev.proto @@ -202,10 +202,8 @@ message AllProtocolRevenue { } message CyclicArbTracker { - repeated cosmos.base.v1beta1.Coin cyclic_arb = 1 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" - ]; + repeated cosmos.base.v1beta1.Coin cyclic_arb = 1 + [ (gogoproto.nullable) = false ]; int64 height_accounting_starts_from = 2 [ (gogoproto.moretags) = "yaml:\"height_accounting_starts_from\"" ]; } diff --git a/scripts/makefiles/e2e.mk b/scripts/makefiles/e2e.mk index 30e3d763dcd..127d73277d4 100644 --- a/scripts/makefiles/e2e.mk +++ b/scripts/makefiles/e2e.mk @@ -26,10 +26,10 @@ e2e-docker-build-debug: @DOCKER_BUILDKIT=1 docker tag osmosis:${COMMIT} osmosis:debug e2e-docker-build-e2e-init-chain: - @DOCKER_BUILDKIT=1 docker build -t osmolabs/osmosis-e2e-init-chain:debug --build-arg E2E_SCRIPT_NAME=chain --platform=linux/x86_64 -f tests/e2e/initialization/init.Dockerfile . + @DOCKER_BUILDKIT=1 docker build --build-arg BUILD_TAGS="netgo,muslc,excludeIncrement" -t osmolabs/osmosis-e2e-init-chain:debug --build-arg E2E_SCRIPT_NAME=chain --platform=linux/x86_64 -f tests/e2e/initialization/init.Dockerfile . e2e-docker-build-e2e-init-node: - @DOCKER_BUILDKIT=1 docker build -t osmosis-e2e-init-node:debug --build-arg E2E_SCRIPT_NAME=node --platform=linux/x86_64 -f tests/e2e/initialization/init.Dockerfile . + @DOCKER_BUILDKIT=1 docker build --build-arg BUILD_TAGS="netgo,muslc,excludeIncrement" -t osmosis-e2e-init-node:debug --build-arg E2E_SCRIPT_NAME=node --platform=linux/x86_64 -f tests/e2e/initialization/init.Dockerfile . e2e-setup: e2e-check-image-sha e2e-remove-resources @echo Finished e2e environment setup, ready to start the test diff --git a/x/epochs/go.mod b/x/epochs/go.mod index 5f49a5694f3..18ed06842b2 100644 --- a/x/epochs/go.mod +++ b/x/epochs/go.mod @@ -8,7 +8,7 @@ require ( github.com/cosmos/gogoproto v1.4.11 github.com/golang/protobuf v1.5.3 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109034818-d2a4cb704d18 + github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403 github.com/osmosis-labs/osmosis/v21 v21.2.1 github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.8.4 @@ -144,8 +144,8 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18 // indirect - github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109034818-d2a4cb704d18 // indirect + github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403 // indirect + github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109211933-17cb7c095403 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pkg/errors v0.9.1 // indirect diff --git a/x/epochs/go.sum b/x/epochs/go.sum index 6a0ba12b00b..8638e352c5b 100644 --- a/x/epochs/go.sum +++ b/x/epochs/go.sum @@ -1243,16 +1243,16 @@ github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4 github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/osmosis-labs/cometbft v0.37.2-v21-osmo-1 h1:dAPp/n4+qqbJgPkMXcU+M0xUWWywHiOrW9RF3zLBbsI= github.com/osmosis-labs/cometbft v0.37.2-v21-osmo-1/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= -github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-5 h1:yNtKKl4wVbYcX3vW79GbKNsB0Gb670ihBrnD5+qWtek= -github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-5/go.mod h1:4BNXIoS9XecywMSdPr/DIwCgH2/Qjyr2+qhrHu8YSEo= -github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18 h1:yK4tv3+4C+SebP1LeTkle4EuLAOSKsqpaXenlDwysrU= -github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18/go.mod h1:qhaCO81Ur3+qyO/jZ5qeiLsB0qlCLB2GiAEkUOzf1Jk= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109034818-d2a4cb704d18 h1:gLVliRJfS5obrBtc90bUcxuCM9agyX8ASuEq9xW9YcE= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109034818-d2a4cb704d18/go.mod h1:YwgF7dbNF/toLe0TcL3EruyuDzugRDtISFed40Z/95g= +github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6 h1:80nco4oGzcrS5XGdg6UoAKn961Ra9UpE+W9YvBJ2h2E= +github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6/go.mod h1:4BNXIoS9XecywMSdPr/DIwCgH2/Qjyr2+qhrHu8YSEo= +github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403 h1:W7MrdlDaTerE4Me2FJzkBgRpRgeTtz3fWphCvhosZrQ= +github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403/go.mod h1:WVI8bFbAXhiNr2nUkKGUCqZGVE3dEpSxRLQ7lWJppm8= +github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403 h1:SS50/mI1rYZzVhKiUjXXmGfokPpnyEZBif1Na3KS6Fo= +github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403/go.mod h1:nlJvDKEyuZRhsSEBG7/58mxmQqt+SHhZ21su13N2Vt4= github.com/osmosis-labs/osmosis/v21 v21.2.1 h1:C6bNyfhhwGmHtrb0ZzzwN8VdbV3zrgkiYwmiEg/a+QY= github.com/osmosis-labs/osmosis/v21 v21.2.1/go.mod h1:Tnl0TMjv9U7CfIx2ikXYyv986bSgEu6wZL5TMxAz6rA= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109034818-d2a4cb704d18 h1:QYAC/o4u1UXBJiqo0UqM/38osA/78pXREQCnYR3KQ7Q= -github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109034818-d2a4cb704d18/go.mod h1:pWfpsLxKo9HFIiO8hd2hEunMf3rsiln8Ayz479togLo= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109211933-17cb7c095403 h1:9FOb9eQ7vgOD/0yY644DTq5fBC8vXsFYpKML19maPMw= +github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20240109211933-17cb7c095403/go.mod h1:bjpoigyf4GzRUEwDrUP4bz/FrqkiCiEefNbgmqhYmLA= github.com/osmosis-labs/wasmd v0.45.0-osmo h1:NIp7pvJV5HuBN1HwPgEmXKQM2TjVIVdJErIHnB9IMO8= github.com/osmosis-labs/wasmd v0.45.0-osmo/go.mod h1:J6eRvwii5T1WxhetZkBg1kOJS3GTn1Bw2OLyZBb8EVU= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= diff --git a/x/gamm/keeper/msg_server_test.go b/x/gamm/keeper/msg_server_test.go index e665c28bab8..d31038046d6 100644 --- a/x/gamm/keeper/msg_server_test.go +++ b/x/gamm/keeper/msg_server_test.go @@ -78,7 +78,7 @@ func (s *KeeperTestSuite) TestSwapExactAmountIn_Events() { }, tokenIn: sdk.NewCoin(doesNotExistDenom, osmomath.NewInt(tokenIn)), tokenOutMinAmount: osmomath.NewInt(tokenInMinAmount), - expectedMessageEvents: 2, // 2 event gets triggered prior to failure. + expectedMessageEvents: 1, expectError: true, }, } @@ -88,6 +88,10 @@ func (s *KeeperTestSuite) TestSwapExactAmountIn_Events() { s.Setup() ctx := s.Ctx + poolManagerParams := s.App.PoolManagerKeeper.GetParams(ctx) + poolManagerParams.TakerFeeParams.DefaultTakerFee = sdk.MustNewDecFromStr("0.01") + s.App.PoolManagerKeeper.SetParams(ctx, poolManagerParams) + s.PrepareBalancerPool() s.PrepareBalancerPool() @@ -187,6 +191,10 @@ func (s *KeeperTestSuite) TestSwapExactAmountOut_Events() { s.Reset() ctx := s.Ctx + poolManagerParams := s.App.PoolManagerKeeper.GetParams(ctx) + poolManagerParams.TakerFeeParams.DefaultTakerFee = sdk.MustNewDecFromStr("0.01") + s.App.PoolManagerKeeper.SetParams(ctx, poolManagerParams) + s.PrepareBalancerPool() s.PrepareBalancerPool() diff --git a/x/ibc-hooks/go.mod b/x/ibc-hooks/go.mod index 02163514658..5cc241c9140 100644 --- a/x/ibc-hooks/go.mod +++ b/x/ibc-hooks/go.mod @@ -11,8 +11,8 @@ require ( github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/ibc-go/v7 v7.3.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18 - github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109034818-d2a4cb704d18 + github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403 + github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403 github.com/spf13/cobra v1.8.0 google.golang.org/grpc v1.59.0 google.golang.org/protobuf v1.31.0 diff --git a/x/ibc-hooks/go.sum b/x/ibc-hooks/go.sum index b5d7a3492e0..20dbb202c97 100644 --- a/x/ibc-hooks/go.sum +++ b/x/ibc-hooks/go.sum @@ -1236,12 +1236,12 @@ github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4 github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/osmosis-labs/cometbft v0.37.2-v21-osmo-1 h1:dAPp/n4+qqbJgPkMXcU+M0xUWWywHiOrW9RF3zLBbsI= github.com/osmosis-labs/cometbft v0.37.2-v21-osmo-1/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= -github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-5 h1:yNtKKl4wVbYcX3vW79GbKNsB0Gb670ihBrnD5+qWtek= -github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-5/go.mod h1:4BNXIoS9XecywMSdPr/DIwCgH2/Qjyr2+qhrHu8YSEo= -github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18 h1:yK4tv3+4C+SebP1LeTkle4EuLAOSKsqpaXenlDwysrU= -github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109034818-d2a4cb704d18/go.mod h1:qhaCO81Ur3+qyO/jZ5qeiLsB0qlCLB2GiAEkUOzf1Jk= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109034818-d2a4cb704d18 h1:gLVliRJfS5obrBtc90bUcxuCM9agyX8ASuEq9xW9YcE= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109034818-d2a4cb704d18/go.mod h1:YwgF7dbNF/toLe0TcL3EruyuDzugRDtISFed40Z/95g= +github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6 h1:80nco4oGzcrS5XGdg6UoAKn961Ra9UpE+W9YvBJ2h2E= +github.com/osmosis-labs/cosmos-sdk v0.47.5-v21-osmo-6/go.mod h1:4BNXIoS9XecywMSdPr/DIwCgH2/Qjyr2+qhrHu8YSEo= +github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403 h1:W7MrdlDaTerE4Me2FJzkBgRpRgeTtz3fWphCvhosZrQ= +github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20240109211933-17cb7c095403/go.mod h1:WVI8bFbAXhiNr2nUkKGUCqZGVE3dEpSxRLQ7lWJppm8= +github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403 h1:SS50/mI1rYZzVhKiUjXXmGfokPpnyEZBif1Na3KS6Fo= +github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20240109211933-17cb7c095403/go.mod h1:nlJvDKEyuZRhsSEBG7/58mxmQqt+SHhZ21su13N2Vt4= github.com/osmosis-labs/wasmd v0.45.0-osmo h1:NIp7pvJV5HuBN1HwPgEmXKQM2TjVIVdJErIHnB9IMO8= github.com/osmosis-labs/wasmd v0.45.0-osmo/go.mod h1:J6eRvwii5T1WxhetZkBg1kOJS3GTn1Bw2OLyZBb8EVU= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= diff --git a/x/poolmanager/keeper.go b/x/poolmanager/keeper.go index fb245566c7b..5548b4b8843 100644 --- a/x/poolmanager/keeper.go +++ b/x/poolmanager/keeper.go @@ -100,23 +100,17 @@ func (k Keeper) InitGenesis(ctx sdk.Context, genState *types.GenesisState) { } // We track taker fees generated in the module's KVStore. - // If the values were exported, we set them here. - // If the values were not exported, we initialize the tracker to zero and set the accounting height to the current height. - if !genState.TakerFeesTracker.TakerFeesToStakers.Empty() { - k.SetTakerFeeTrackerForStakers(ctx, genState.TakerFeesTracker.TakerFeesToStakers) - } else { - k.SetTakerFeeTrackerForStakers(ctx, sdk.NewCoins()) - } - if !genState.TakerFeesTracker.TakerFeesToCommunityPool.Empty() { - k.SetTakerFeeTrackerForCommunityPool(ctx, genState.TakerFeesTracker.TakerFeesToCommunityPool) - } else { - k.SetTakerFeeTrackerForCommunityPool(ctx, sdk.NewCoins()) + for _, coin := range genState.TakerFeesTracker.TakerFeesToStakers { + if err := k.UpdateTakerFeeTrackerForStakersByDenom(ctx, coin.Denom, coin.Amount); err != nil { + panic(err) + } } - if genState.TakerFeesTracker.HeightAccountingStartsFrom != 0 { - k.SetTakerFeeTrackerStartHeight(ctx, genState.TakerFeesTracker.HeightAccountingStartsFrom) - } else { - k.SetTakerFeeTrackerStartHeight(ctx, ctx.BlockHeight()) + for _, coin := range genState.TakerFeesTracker.TakerFeesToCommunityPool { + if err := k.UpdateTakerFeeTrackerForCommunityPoolByDenom(ctx, coin.Denom, coin.Amount); err != nil { + panic(err) + } } + k.SetTakerFeeTrackerStartHeight(ctx, genState.TakerFeesTracker.HeightAccountingStartsFrom) // Set the pool volumes KVStore. for _, poolVolume := range genState.PoolVolumes { diff --git a/x/poolmanager/msg_server_test.go b/x/poolmanager/msg_server_test.go index f4ffd3358cf..f108c18c4d0 100644 --- a/x/poolmanager/msg_server_test.go +++ b/x/poolmanager/msg_server_test.go @@ -80,6 +80,10 @@ func (s *KeeperTestSuite) TestSplitRouteSwapExactAmountIn() { s.Setup() ctx := s.Ctx + poolManagerParams := s.App.PoolManagerKeeper.GetParams(ctx) + poolManagerParams.TakerFeeParams.DefaultTakerFee = sdk.MustNewDecFromStr("0.01") + s.App.PoolManagerKeeper.SetParams(ctx, poolManagerParams) + s.PrepareBalancerPool() s.PrepareBalancerPool() s.PrepareBalancerPool() @@ -167,6 +171,10 @@ func (s *KeeperTestSuite) TestSplitRouteSwapExactAmountOut() { s.Setup() ctx := s.Ctx + poolManagerParams := s.App.PoolManagerKeeper.GetParams(ctx) + poolManagerParams.TakerFeeParams.DefaultTakerFee = sdk.MustNewDecFromStr("0.01") + s.App.PoolManagerKeeper.SetParams(ctx, poolManagerParams) + s.PrepareBalancerPool() s.PrepareBalancerPool() s.PrepareBalancerPool() diff --git a/x/poolmanager/protorev.go b/x/poolmanager/protorev.go index 8c2bfe07c45..d68fa1e5c1e 100644 --- a/x/poolmanager/protorev.go +++ b/x/poolmanager/protorev.go @@ -4,49 +4,59 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" gogotypes "github.com/cosmos/gogoproto/types" + "github.com/osmosis-labs/osmosis/osmomath" "github.com/osmosis-labs/osmosis/osmoutils" "github.com/osmosis-labs/osmosis/v21/x/poolmanager/types" ) -// IncreaseTakerFeeTrackerForStakers gets the current value of the taker fee tracker for stakers, adds the given amount to it, and sets the new value. -func (k Keeper) IncreaseTakerFeeTrackerForStakers(ctx sdk.Context, takerFeeForStakers sdk.Coin) { - currentTakerFeeForStakers := k.GetTakerFeeTrackerForStakers(ctx) - if !takerFeeForStakers.IsZero() { - newTakerFeeForStakersCoins := currentTakerFeeForStakers.Add(takerFeeForStakers) - newTakerFeeForStakers := types.TrackedVolume{ - Amount: newTakerFeeForStakersCoins, - } - osmoutils.MustSet(ctx.KVStore(k.storeKey), types.KeyTakerFeeStakersProtoRev, &newTakerFeeForStakers) - } +// GetTakerFeeTrackerForStakers returns the taker fee for stakers tracker for all denoms that has been +// collected since the accounting height. +func (k Keeper) GetTakerFeeTrackerForStakers(ctx sdk.Context) []sdk.Coin { + return osmoutils.GetCoinArrayFromPrefix(ctx, k.storeKey, types.KeyTakerFeeStakersProtoRevArray) } -// IncreaseTakerFeeTrackerForCommunityPool gets the current value of the taker fee tracker for the community pool, adds the given amount to it, and sets the new value. -func (k Keeper) IncreaseTakerFeeTrackerForCommunityPool(ctx sdk.Context, takerFeeForCommunityPool sdk.Coin) { - currentTakerFeeForCommunityPool := k.GetTakerFeeTrackerForCommunityPool(ctx) - if !takerFeeForCommunityPool.IsZero() { - newTakerFeeForCommunityPoolCoins := currentTakerFeeForCommunityPool.Add(takerFeeForCommunityPool) - newTakerFeeForCommunityPool := types.TrackedVolume{ - Amount: newTakerFeeForCommunityPoolCoins, - } - osmoutils.MustSet(ctx.KVStore(k.storeKey), types.KeyTakerFeeCommunityPoolProtoRev, &newTakerFeeForCommunityPool) - } +// GetTakerFeeTrackerForStakersByDenom returns the taker fee for stakers tracker for the specified denom that has been +// collected since the accounting height. If the denom is not found, a zero coin is returned. +func (k Keeper) GetTakerFeeTrackerForStakersByDenom(ctx sdk.Context, denom string) (sdk.Coin, error) { + return osmoutils.GetCoinByDenomFromPrefix(ctx, k.storeKey, types.KeyTakerFeeStakersProtoRevArray, denom) } -func (k Keeper) SetTakerFeeTrackerForStakers(ctx sdk.Context, takerFeeForStakers sdk.Coins) { - newTakerFeeForStakers := types.TrackedVolume{ - Amount: takerFeeForStakers, - } - osmoutils.MustSet(ctx.KVStore(k.storeKey), types.KeyTakerFeeStakersProtoRev, &newTakerFeeForStakers) +// UpdateTakerFeeTrackerForStakersByDenom increases the take fee for stakers tracker for the specified denom by the specified amount. +func (k Keeper) UpdateTakerFeeTrackerForStakersByDenom(ctx sdk.Context, denom string, increasedAmt osmomath.Int) error { + return osmoutils.IncreaseCoinByDenomFromPrefix(ctx, k.storeKey, types.KeyTakerFeeStakersProtoRevArray, denom, increasedAmt) } -func (k Keeper) SetTakerFeeTrackerForCommunityPool(ctx sdk.Context, takerFeeForCommunityPool sdk.Coins) { - newTakerFeeForCommunityPool := types.TrackedVolume{ - Amount: takerFeeForCommunityPool, - } - osmoutils.MustSet(ctx.KVStore(k.storeKey), types.KeyTakerFeeCommunityPoolProtoRev, &newTakerFeeForCommunityPool) +// GetTakerFeeTrackerForCommunityPool returns the taker fee for community pool tracker for all denoms that has been +// collected since the accounting height. +func (k Keeper) GetTakerFeeTrackerForCommunityPool(ctx sdk.Context) []sdk.Coin { + return osmoutils.GetCoinArrayFromPrefix(ctx, k.storeKey, types.KeyTakerFeeCommunityPoolProtoRevArray) +} + +// GetTakerFeeTrackerForCommunityPoolByDenom returns the taker fee for community pool tracker for the specified denom that has been +// collected since the accounting height. If the denom is not found, a zero coin is returned. +func (k Keeper) GetTakerFeeTrackerForCommunityPoolByDenom(ctx sdk.Context, denom string) (sdk.Coin, error) { + return osmoutils.GetCoinByDenomFromPrefix(ctx, k.storeKey, types.KeyTakerFeeCommunityPoolProtoRevArray, denom) +} + +// UpdateTakerFeeTrackerForCommunityPoolByDenom increases the take fee for community pool tracker for the specified denom by the specified amount. +func (k Keeper) UpdateTakerFeeTrackerForCommunityPoolByDenom(ctx sdk.Context, denom string, increasedAmt osmomath.Int) error { + return osmoutils.IncreaseCoinByDenomFromPrefix(ctx, k.storeKey, types.KeyTakerFeeCommunityPoolProtoRevArray, denom, increasedAmt) +} + +// GetTakerFeeTrackerStartHeight gets the height from which we started accounting for taker fees. +func (k Keeper) GetTakerFeeTrackerStartHeight(ctx sdk.Context) int64 { + startHeight := gogotypes.Int64Value{} + osmoutils.MustGet(ctx.KVStore(k.storeKey), types.KeyTakerFeeProtoRevAccountingHeight, &startHeight) + return startHeight.Value +} + +// SetTakerFeeTrackerStartHeight sets the height from which we started accounting for taker fees. +func (k Keeper) SetTakerFeeTrackerStartHeight(ctx sdk.Context, startHeight int64) { + osmoutils.MustSet(ctx.KVStore(k.storeKey), types.KeyTakerFeeProtoRevAccountingHeight, &gogotypes.Int64Value{Value: startHeight}) } -func (k Keeper) GetTakerFeeTrackerForStakers(ctx sdk.Context) (currentTakerFeeForStakers sdk.Coins) { +// GetLegacyTakerFeeTrackerForStakers is the legacy getter, to be used in the v22 upgrade handler and removed in v23. +func (k Keeper) GetLegacyTakerFeeTrackerForStakers(ctx sdk.Context) (currentTakerFeeForStakers sdk.Coins) { var takerFeeForStakers types.TrackedVolume takerFeeFound, err := osmoutils.Get(ctx.KVStore(k.storeKey), types.KeyTakerFeeStakersProtoRev, &takerFeeForStakers) if err != nil { @@ -67,7 +77,8 @@ func (k Keeper) GetTakerFeeTrackerForStakers(ctx sdk.Context) (currentTakerFeeFo return currentTakerFeeForStakers } -func (k Keeper) GetTakerFeeTrackerForCommunityPool(ctx sdk.Context) (currentTakerFeeForCommunityPool sdk.Coins) { +// GetLegacyTakerFeeTrackerForCommunityPool is the legacy getter, to be used in the v22 upgrade handler and removed in v23. +func (k Keeper) GetLegacyTakerFeeTrackerForCommunityPool(ctx sdk.Context) (currentTakerFeeForCommunityPool sdk.Coins) { var takerFeeForCommunityPool types.TrackedVolume takerFeeFound, err := osmoutils.Get(ctx.KVStore(k.storeKey), types.KeyTakerFeeCommunityPoolProtoRev, &takerFeeForCommunityPool) if err != nil { @@ -87,15 +98,3 @@ func (k Keeper) GetTakerFeeTrackerForCommunityPool(ctx sdk.Context) (currentTake return currentTakerFeeForCommunityPool } - -// GetTakerFeeTrackerStartHeight gets the height from which we started accounting for taker fees. -func (k Keeper) GetTakerFeeTrackerStartHeight(ctx sdk.Context) int64 { - startHeight := gogotypes.Int64Value{} - osmoutils.MustGet(ctx.KVStore(k.storeKey), types.KeyTakerFeeProtoRevAccountingHeight, &startHeight) - return startHeight.Value -} - -// SetTakerFeeTrackerStartHeight sets the height from which we started accounting for taker fees. -func (k Keeper) SetTakerFeeTrackerStartHeight(ctx sdk.Context, startHeight int64) { - osmoutils.MustSet(ctx.KVStore(k.storeKey), types.KeyTakerFeeProtoRevAccountingHeight, &gogotypes.Int64Value{Value: startHeight}) -} diff --git a/x/poolmanager/protorev_test.go b/x/poolmanager/protorev_test.go index a7f828f4774..ce0a762dfee 100644 --- a/x/poolmanager/protorev_test.go +++ b/x/poolmanager/protorev_test.go @@ -2,49 +2,30 @@ package poolmanager_test import ( sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/osmosis-labs/osmosis/osmoutils" ) -func (s *KeeperTestSuite) TestGetSetTakerFeeTrackerForStakersAndCommunityPool() { +func (s *KeeperTestSuite) TestGetTakerFeeTrackerForStakersAndCommunityPool() { tests := map[string]struct { - firstTakerFeeForStakers sdk.Coins - secondTakerFeeForStakers sdk.Coins - firstTakerFeeForCommunityPool sdk.Coins - secondTakerFeeForCommunityPool sdk.Coins + firstTakerFeeForStakers []sdk.Coin + secondTakerFeeForStakers []sdk.Coin + firstTakerFeeForCommunityPool []sdk.Coin + secondTakerFeeForCommunityPool []sdk.Coin }{ - "happy path: replace single coin with increased single coin": { + "happy path: get updated coin with same denom coin coin": { firstTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(100))), secondTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(200))), firstTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(100))), secondTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(200))), }, - "replace single coin with decreased single coin": { - firstTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(100))), - secondTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(50))), - - firstTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(100))), - secondTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(50))), - }, - "replace single coin with different denom": { - firstTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(100))), - secondTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(100))), - - firstTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(100))), - secondTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(100))), - }, - "replace single coin with multiple coins": { + "get updated coin with different denom coins": { firstTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(100))), - secondTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(100)), sdk.NewCoin("usdc", sdk.NewInt(200))), + secondTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(200))), firstTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(100))), - secondTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(100)), sdk.NewCoin("eth", sdk.NewInt(200))), - }, - "replace multiple coins with single coin": { - firstTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(100)), sdk.NewCoin("usdc", sdk.NewInt(200))), - secondTakerFeeForStakers: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(200))), - - firstTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(100)), sdk.NewCoin("eth", sdk.NewInt(200))), - secondTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("usdc", sdk.NewInt(50))), + secondTakerFeeForCommunityPool: sdk.NewCoins(sdk.NewCoin("eth", sdk.NewInt(200))), }, } @@ -55,8 +36,14 @@ func (s *KeeperTestSuite) TestGetSetTakerFeeTrackerForStakersAndCommunityPool() s.Require().Empty(s.App.PoolManagerKeeper.GetTakerFeeTrackerStartHeight(s.Ctx)) s.Require().Empty(s.App.PoolManagerKeeper.GetTakerFeeTrackerForStakers(s.Ctx)) - s.App.PoolManagerKeeper.SetTakerFeeTrackerForStakers(s.Ctx, tc.firstTakerFeeForStakers) - s.App.PoolManagerKeeper.SetTakerFeeTrackerForCommunityPool(s.Ctx, tc.firstTakerFeeForCommunityPool) + for _, coin := range tc.firstTakerFeeForStakers { + err := s.App.PoolManagerKeeper.UpdateTakerFeeTrackerForStakersByDenom(s.Ctx, coin.Denom, coin.Amount) + s.Require().NoError(err) + } + for _, coin := range tc.firstTakerFeeForCommunityPool { + err := s.App.PoolManagerKeeper.UpdateTakerFeeTrackerForCommunityPoolByDenom(s.Ctx, coin.Denom, coin.Amount) + s.Require().NoError(err) + } actualFirstTakerFeeForStakers := s.App.PoolManagerKeeper.GetTakerFeeTrackerForStakers(s.Ctx) actualFirstTakerFeeForCommunityPool := s.App.PoolManagerKeeper.GetTakerFeeTrackerForCommunityPool(s.Ctx) @@ -64,14 +51,30 @@ func (s *KeeperTestSuite) TestGetSetTakerFeeTrackerForStakersAndCommunityPool() s.Require().Equal(tc.firstTakerFeeForStakers, actualFirstTakerFeeForStakers) s.Require().Equal(tc.firstTakerFeeForCommunityPool, actualFirstTakerFeeForCommunityPool) - s.App.PoolManagerKeeper.SetTakerFeeTrackerForStakers(s.Ctx, tc.secondTakerFeeForStakers) - s.App.PoolManagerKeeper.SetTakerFeeTrackerForCommunityPool(s.Ctx, tc.secondTakerFeeForCommunityPool) + for _, coin := range tc.secondTakerFeeForStakers { + err := s.App.PoolManagerKeeper.UpdateTakerFeeTrackerForStakersByDenom(s.Ctx, coin.Denom, coin.Amount) + s.Require().NoError(err) + } + for _, coin := range tc.secondTakerFeeForCommunityPool { + err := s.App.PoolManagerKeeper.UpdateTakerFeeTrackerForCommunityPoolByDenom(s.Ctx, coin.Denom, coin.Amount) + s.Require().NoError(err) + } + + expectedFinalTakerFeeForStakers := []sdk.Coin{} + expectedFinalTakerFeeForCommunityPool := []sdk.Coin{} + firstTakerFeeForStakersCoins := osmoutils.ConvertCoinArrayToCoins(actualFirstTakerFeeForStakers) + firstTakerFeeForCommunityPoolCoins := osmoutils.ConvertCoinArrayToCoins(actualFirstTakerFeeForCommunityPool) + secondTakerFeeForStakersCoins := osmoutils.ConvertCoinArrayToCoins(tc.secondTakerFeeForStakers) + secondTakerFeeForCommunityPoolCoins := osmoutils.ConvertCoinArrayToCoins(tc.secondTakerFeeForCommunityPool) + + expectedFinalTakerFeeForStakers = firstTakerFeeForStakersCoins.Add(secondTakerFeeForStakersCoins...) + expectedFinalTakerFeeForCommunityPool = firstTakerFeeForCommunityPoolCoins.Add(secondTakerFeeForCommunityPoolCoins...) actualSecondTakerFeeForStakers := s.App.PoolManagerKeeper.GetTakerFeeTrackerForStakers(s.Ctx) actualSecondTakerFeeForCommunityPool := s.App.PoolManagerKeeper.GetTakerFeeTrackerForCommunityPool(s.Ctx) - s.Require().Equal(tc.secondTakerFeeForStakers, actualSecondTakerFeeForStakers) - s.Require().Equal(tc.secondTakerFeeForCommunityPool, actualSecondTakerFeeForCommunityPool) + s.Require().Equal(expectedFinalTakerFeeForStakers, actualSecondTakerFeeForStakers) + s.Require().Equal(expectedFinalTakerFeeForCommunityPool, actualSecondTakerFeeForCommunityPool) }) } } @@ -112,10 +115,10 @@ func (s *KeeperTestSuite) TestGetSetTakerFeeTrackerStartHeight() { } } -func (s *KeeperTestSuite) TestIncreaseTakerFeeTrackerForStakersAndCommunityPool() { +func (s *KeeperTestSuite) TestUpdateTakerFeeTrackerForStakersAndCommunityPool() { tests := map[string]struct { - initialTakerFeeForStakers sdk.Coins - initialTakerFeeForCommunityPool sdk.Coins + initialTakerFeeForStakers []sdk.Coin + initialTakerFeeForCommunityPool []sdk.Coin increaseTakerFeeForStakersBy sdk.Coin increaseTakerFeeForCommunityPoolBy sdk.Coin @@ -143,8 +146,14 @@ func (s *KeeperTestSuite) TestIncreaseTakerFeeTrackerForStakersAndCommunityPool( s.Require().Empty(s.App.PoolManagerKeeper.GetTakerFeeTrackerStartHeight(s.Ctx)) s.Require().Empty(s.App.PoolManagerKeeper.GetTakerFeeTrackerForStakers(s.Ctx)) - s.App.PoolManagerKeeper.SetTakerFeeTrackerForStakers(s.Ctx, tc.initialTakerFeeForStakers) - s.App.PoolManagerKeeper.SetTakerFeeTrackerForCommunityPool(s.Ctx, tc.initialTakerFeeForCommunityPool) + for _, coin := range tc.initialTakerFeeForStakers { + err := s.App.PoolManagerKeeper.UpdateTakerFeeTrackerForStakersByDenom(s.Ctx, coin.Denom, coin.Amount) + s.Require().NoError(err) + } + for _, coin := range tc.initialTakerFeeForCommunityPool { + err := s.App.PoolManagerKeeper.UpdateTakerFeeTrackerForCommunityPoolByDenom(s.Ctx, coin.Denom, coin.Amount) + s.Require().NoError(err) + } actualInitialTakerFeeForStakers := s.App.PoolManagerKeeper.GetTakerFeeTrackerForStakers(s.Ctx) actualInitialTakerFeeForCommunityPool := s.App.PoolManagerKeeper.GetTakerFeeTrackerForCommunityPool(s.Ctx) @@ -152,14 +161,24 @@ func (s *KeeperTestSuite) TestIncreaseTakerFeeTrackerForStakersAndCommunityPool( s.Require().Equal(tc.initialTakerFeeForStakers, actualInitialTakerFeeForStakers) s.Require().Equal(tc.initialTakerFeeForCommunityPool, actualInitialTakerFeeForCommunityPool) - s.App.PoolManagerKeeper.IncreaseTakerFeeTrackerForStakers(s.Ctx, tc.increaseTakerFeeForStakersBy) - s.App.PoolManagerKeeper.IncreaseTakerFeeTrackerForCommunityPool(s.Ctx, tc.increaseTakerFeeForCommunityPoolBy) + err := s.App.PoolManagerKeeper.UpdateTakerFeeTrackerForStakersByDenom(s.Ctx, tc.increaseTakerFeeForStakersBy.Denom, tc.increaseTakerFeeForStakersBy.Amount) + s.Require().NoError(err) + err = s.App.PoolManagerKeeper.UpdateTakerFeeTrackerForCommunityPoolByDenom(s.Ctx, tc.increaseTakerFeeForCommunityPoolBy.Denom, tc.increaseTakerFeeForCommunityPoolBy.Amount) + s.Require().NoError(err) + + expectedFinalTakerFeeForStakers := []sdk.Coin{} + expectedFinalTakerFeeForCommunityPool := []sdk.Coin{} + initialTakerFeeForStakersCoins := osmoutils.ConvertCoinArrayToCoins(tc.initialTakerFeeForStakers) + initialTakerFeeForCommunityPoolCoins := osmoutils.ConvertCoinArrayToCoins(tc.initialTakerFeeForCommunityPool) + + expectedFinalTakerFeeForStakers = initialTakerFeeForStakersCoins.Add(sdk.NewCoins(tc.increaseTakerFeeForStakersBy)...) + expectedFinalTakerFeeForCommunityPool = initialTakerFeeForCommunityPoolCoins.Add(sdk.NewCoins(tc.increaseTakerFeeForCommunityPoolBy)...) takerFeeForStakersAfterIncrease := s.App.PoolManagerKeeper.GetTakerFeeTrackerForStakers(s.Ctx) takerFeeForCommunityPoolAfterIncrease := s.App.PoolManagerKeeper.GetTakerFeeTrackerForCommunityPool(s.Ctx) - s.Require().Equal(tc.initialTakerFeeForStakers.Add(sdk.NewCoins(tc.increaseTakerFeeForStakersBy)...), takerFeeForStakersAfterIncrease) - s.Require().Equal(tc.initialTakerFeeForCommunityPool.Add(sdk.NewCoins(tc.increaseTakerFeeForCommunityPoolBy)...), takerFeeForCommunityPoolAfterIncrease) + s.Require().Equal(expectedFinalTakerFeeForStakers, takerFeeForStakersAfterIncrease) + s.Require().Equal(expectedFinalTakerFeeForCommunityPool, takerFeeForCommunityPoolAfterIncrease) }) } } diff --git a/x/poolmanager/taker_fee.go b/x/poolmanager/taker_fee.go index b9e6a42a45c..bf310264eba 100644 --- a/x/poolmanager/taker_fee.go +++ b/x/poolmanager/taker_fee.go @@ -152,7 +152,7 @@ func (k Keeper) chargeTakerFee(ctx sdk.Context, tokenIn sdk.Coin, tokenOutDenom k.paramSpace.Get(ctx, types.KeyOsmoTakerFeeDistribution, &osmoTakerFeeDistribution) // Community Pool: - if osmoTakerFeeDistribution.CommunityPool.GT(zeroDec) { + if osmoTakerFeeDistribution.CommunityPool.GT(zeroDec) && takerFeeAmtRemaining.GT(osmomath.ZeroInt()) { // Osmo community pool funds is a direct send osmoTakerFeeToCommunityPoolDec := takerFeeAmtRemaining.ToLegacyDec().Mul(osmoTakerFeeDistribution.CommunityPool) osmoTakerFeeToCommunityPoolCoin := sdk.NewCoin(defaultTakerFeeDenom, osmoTakerFeeToCommunityPoolDec.TruncateInt()) @@ -160,11 +160,14 @@ func (k Keeper) chargeTakerFee(ctx sdk.Context, tokenIn sdk.Coin, tokenOutDenom if err != nil { return sdk.Coin{}, err } - k.IncreaseTakerFeeTrackerForCommunityPool(ctx, osmoTakerFeeToCommunityPoolCoin) + err = k.UpdateTakerFeeTrackerForCommunityPoolByDenom(ctx, osmoTakerFeeToCommunityPoolCoin.Denom, osmoTakerFeeToCommunityPoolCoin.Amount) + if err != nil { + ctx.Logger().Error("Error updating taker fee tracker for community pool by denom", "error", err) + } takerFeeAmtRemaining = takerFeeAmtRemaining.Sub(osmoTakerFeeToCommunityPoolCoin.Amount) } // Staking Rewards: - if osmoTakerFeeDistribution.StakingRewards.GT(zeroDec) { + if osmoTakerFeeDistribution.StakingRewards.GT(zeroDec) && takerFeeAmtRemaining.GT(osmomath.ZeroInt()) { // Osmo staking rewards funds are sent to the non native fee pool module account (even though its native, we want to distribute at the same time as the non native fee tokens) // We could stream these rewards via the fee collector account, but this is decision to be made by governance. osmoTakerFeeToStakingRewardsCoin := sdk.NewCoin(defaultTakerFeeDenom, takerFeeAmtRemaining) @@ -172,7 +175,10 @@ func (k Keeper) chargeTakerFee(ctx sdk.Context, tokenIn sdk.Coin, tokenOutDenom if err != nil { return sdk.Coin{}, err } - k.IncreaseTakerFeeTrackerForStakers(ctx, osmoTakerFeeToStakingRewardsCoin) + err = k.UpdateTakerFeeTrackerForStakersByDenom(ctx, osmoTakerFeeToStakingRewardsCoin.Denom, osmoTakerFeeToStakingRewardsCoin.Amount) + if err != nil { + ctx.Logger().Error("Error updating taker fee tracker for stakers by denom", "error", err) + } } // If the denom is not the base denom: @@ -183,7 +189,7 @@ func (k Keeper) chargeTakerFee(ctx sdk.Context, tokenIn sdk.Coin, tokenOutDenom k.paramSpace.Get(ctx, types.KeyAuthorizedQuoteDenoms, &authorizedQuoteDenoms) // Community Pool: - if nonOsmoTakerFeeDistribution.CommunityPool.GT(zeroDec) { + if nonOsmoTakerFeeDistribution.CommunityPool.GT(zeroDec) && takerFeeAmtRemaining.GT(osmomath.ZeroInt()) { denomIsWhitelisted := isDenomWhitelisted(takerFeeCoin.Denom, authorizedQuoteDenoms) // If the non osmo denom is a whitelisted quote asset, we send to the community pool if denomIsWhitelisted { @@ -193,7 +199,10 @@ func (k Keeper) chargeTakerFee(ctx sdk.Context, tokenIn sdk.Coin, tokenOutDenom if err != nil { return sdk.Coin{}, err } - k.IncreaseTakerFeeTrackerForCommunityPool(ctx, nonOsmoTakerFeeToCommunityPoolCoin) + err = k.UpdateTakerFeeTrackerForCommunityPoolByDenom(ctx, nonOsmoTakerFeeToCommunityPoolCoin.Denom, nonOsmoTakerFeeToCommunityPoolCoin.Amount) + if err != nil { + ctx.Logger().Error("Error updating taker fee tracker for community pool by denom", "error", err) + } takerFeeAmtRemaining = takerFeeAmtRemaining.Sub(nonOsmoTakerFeeToCommunityPoolCoin.Amount) } else { // If the non osmo denom is not a whitelisted asset, we send to the non native fee pool for community pool module account. @@ -204,19 +213,25 @@ func (k Keeper) chargeTakerFee(ctx sdk.Context, tokenIn sdk.Coin, tokenOutDenom if err != nil { return sdk.Coin{}, err } - k.IncreaseTakerFeeTrackerForCommunityPool(ctx, nonOsmoTakerFeeToCommunityPoolCoin) + err = k.UpdateTakerFeeTrackerForCommunityPoolByDenom(ctx, nonOsmoTakerFeeToCommunityPoolCoin.Denom, nonOsmoTakerFeeToCommunityPoolCoin.Amount) + if err != nil { + ctx.Logger().Error("Error updating taker fee tracker for community pool by denom", "error", err) + } takerFeeAmtRemaining = takerFeeAmtRemaining.Sub(nonOsmoTakerFeeToCommunityPoolCoin.Amount) } } // Staking Rewards: - if nonOsmoTakerFeeDistribution.StakingRewards.GT(zeroDec) { + if nonOsmoTakerFeeDistribution.StakingRewards.GT(zeroDec) && takerFeeAmtRemaining.GT(osmomath.ZeroInt()) { // Non Osmo staking rewards are sent to the non native fee pool module account nonOsmoTakerFeeToStakingRewardsCoin := sdk.NewCoin(takerFeeCoin.Denom, takerFeeAmtRemaining) err := k.bankKeeper.SendCoinsFromAccountToModule(ctx, sender, feeCollectorForStakingRewardsName, sdk.NewCoins(nonOsmoTakerFeeToStakingRewardsCoin)) if err != nil { return sdk.Coin{}, err } - k.IncreaseTakerFeeTrackerForStakers(ctx, nonOsmoTakerFeeToStakingRewardsCoin) + err = k.UpdateTakerFeeTrackerForStakersByDenom(ctx, nonOsmoTakerFeeToStakingRewardsCoin.Denom, nonOsmoTakerFeeToStakingRewardsCoin.Amount) + if err != nil { + ctx.Logger().Error("Error updating taker fee tracker for stakers by denom", "error", err) + } } } diff --git a/x/poolmanager/taker_fee_test.go b/x/poolmanager/taker_fee_test.go index a8ebcbe0e30..a4bb40e8189 100644 --- a/x/poolmanager/taker_fee_test.go +++ b/x/poolmanager/taker_fee_test.go @@ -157,19 +157,19 @@ func (s *KeeperTestSuite) TestChargeTakerFee() { } return d.TruncateInt() } - expectedTakerFeeToStakers := sdk.NewCoin(tc.expectedResult.Denom, roundup(expectedTakerFeeToStakersAmount)) - expectedTakerFeeToCommunityPool := sdk.NewCoin(tc.expectedResult.Denom, expectedTakerFeeToCommunityPoolAmount.TruncateInt()) + expectedTakerFeeToStakers := []sdk.Coin{sdk.NewCoin(tc.expectedResult.Denom, roundup(expectedTakerFeeToStakersAmount))} + expectedTakerFeeToCommunityPool := []sdk.Coin{sdk.NewCoin(tc.expectedResult.Denom, expectedTakerFeeToCommunityPoolAmount.TruncateInt())} // Validate results. s.Require().Equal(tc.expectedResult.String(), tokenInAfterTakerFee.String()) - expectedTakerFeeTrackerForStakersAfter := takerFeeTrackerForStakersBefore.Add(expectedTakerFeeToStakers) - if expectedTakerFeeTrackerForStakersAfter.Empty() { - expectedTakerFeeTrackerForStakersAfter = sdk.Coins(nil) + expectedTakerFeeTrackerForStakersAfter := []sdk.Coin{} + if !expectedTakerFeeToStakers[0].IsZero() { + expectedTakerFeeTrackerForStakersAfter = expectedTakerFeeToStakers } s.Require().Equal(expectedTakerFeeTrackerForStakersAfter, takerFeeTrackerForStakersAfter) - expectedTakerFeeTrackerForCommunityPoolAfter := takerFeeTrackerForCommunityPoolBefore.Add(expectedTakerFeeToCommunityPool) - if expectedTakerFeeTrackerForCommunityPoolAfter.Empty() { - expectedTakerFeeTrackerForCommunityPoolAfter = sdk.Coins(nil) + expectedTakerFeeTrackerForCommunityPoolAfter := []sdk.Coin{} + if !expectedTakerFeeToCommunityPool[0].IsZero() { + expectedTakerFeeTrackerForCommunityPoolAfter = expectedTakerFeeToCommunityPool } s.Require().Equal(expectedTakerFeeTrackerForCommunityPoolAfter, takerFeeTrackerForCommunityPoolAfter) }) diff --git a/x/poolmanager/types/genesis.pb.go b/x/poolmanager/types/genesis.pb.go index 7608eade946..da54d9c33cd 100644 --- a/x/poolmanager/types/genesis.pb.go +++ b/x/poolmanager/types/genesis.pb.go @@ -338,9 +338,9 @@ func (m *TakerFeeDistributionPercentage) XXX_DiscardUnknown() { var xxx_messageInfo_TakerFeeDistributionPercentage proto.InternalMessageInfo type TakerFeesTracker struct { - TakerFeesToStakers github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=taker_fees_to_stakers,json=takerFeesToStakers,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"taker_fees_to_stakers"` - TakerFeesToCommunityPool github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,2,rep,name=taker_fees_to_community_pool,json=takerFeesToCommunityPool,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"taker_fees_to_community_pool"` - HeightAccountingStartsFrom int64 `protobuf:"varint,3,opt,name=height_accounting_starts_from,json=heightAccountingStartsFrom,proto3" json:"height_accounting_starts_from,omitempty" yaml:"height_accounting_starts_from"` + TakerFeesToStakers []types.Coin `protobuf:"bytes,1,rep,name=taker_fees_to_stakers,json=takerFeesToStakers,proto3" json:"taker_fees_to_stakers"` + TakerFeesToCommunityPool []types.Coin `protobuf:"bytes,2,rep,name=taker_fees_to_community_pool,json=takerFeesToCommunityPool,proto3" json:"taker_fees_to_community_pool"` + HeightAccountingStartsFrom int64 `protobuf:"varint,3,opt,name=height_accounting_starts_from,json=heightAccountingStartsFrom,proto3" json:"height_accounting_starts_from,omitempty" yaml:"height_accounting_starts_from"` } func (m *TakerFeesTracker) Reset() { *m = TakerFeesTracker{} } @@ -376,14 +376,14 @@ func (m *TakerFeesTracker) XXX_DiscardUnknown() { var xxx_messageInfo_TakerFeesTracker proto.InternalMessageInfo -func (m *TakerFeesTracker) GetTakerFeesToStakers() github_com_cosmos_cosmos_sdk_types.Coins { +func (m *TakerFeesTracker) GetTakerFeesToStakers() []types.Coin { if m != nil { return m.TakerFeesToStakers } return nil } -func (m *TakerFeesTracker) GetTakerFeesToCommunityPool() github_com_cosmos_cosmos_sdk_types.Coins { +func (m *TakerFeesTracker) GetTakerFeesToCommunityPool() []types.Coin { if m != nil { return m.TakerFeesToCommunityPool } @@ -467,75 +467,75 @@ func init() { } var fileDescriptor_aa099d9fbdf68b35 = []byte{ - // 1085 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4f, 0x6f, 0xdc, 0x44, - 0x14, 0x8f, 0xbb, 0xe9, 0xa2, 0x4c, 0x42, 0x92, 0x0e, 0xa4, 0x71, 0x93, 0xb2, 0x5e, 0xb9, 0x95, - 0x58, 0x84, 0x62, 0x93, 0x20, 0x15, 0x09, 0xe8, 0x21, 0x9b, 0x28, 0x08, 0x54, 0xda, 0xd4, 0x89, - 0x40, 0x2a, 0x07, 0x6b, 0xd6, 0x7e, 0xf1, 0x5a, 0x6b, 0x7b, 0x96, 0x99, 0x71, 0xfe, 0x70, 0xe0, - 0x0b, 0x54, 0x48, 0x48, 0xbd, 0x72, 0xe6, 0xc0, 0x8d, 0x6f, 0xd1, 0x63, 0x8f, 0x88, 0xc3, 0x16, - 0x6d, 0xce, 0x5c, 0xf6, 0x13, 0x20, 0xcf, 0xcc, 0xfe, 0x6d, 0xb2, 0x84, 0x3f, 0x3d, 0xed, 0xfa, - 0xbd, 0xdf, 0xfb, 0xf9, 0xf7, 0xde, 0x9b, 0x37, 0xcf, 0xe8, 0x3d, 0xca, 0x53, 0xca, 0x63, 0xee, - 0xb6, 0x29, 0x4d, 0x52, 0x92, 0x91, 0x08, 0x98, 0x7b, 0xbc, 0xd9, 0x00, 0x41, 0x36, 0xdd, 0x08, - 0x32, 0xe0, 0x31, 0x77, 0xda, 0x8c, 0x0a, 0x8a, 0xd7, 0x35, 0xd4, 0x19, 0x81, 0x3a, 0x1a, 0xba, - 0xf6, 0x76, 0x44, 0x23, 0x2a, 0x71, 0x6e, 0xf1, 0x4f, 0x85, 0xac, 0xdd, 0x8a, 0x28, 0x8d, 0x12, - 0x70, 0xe5, 0x53, 0x23, 0x3f, 0x72, 0x49, 0x76, 0xd6, 0x77, 0x05, 0x92, 0xce, 0x57, 0x31, 0xea, - 0x41, 0xbb, 0x2a, 0x93, 0x51, 0x61, 0xce, 0x88, 0x88, 0x69, 0xd6, 0xf7, 0x2b, 0xb4, 0xdb, 0x20, - 0x1c, 0x06, 0x5a, 0x03, 0x1a, 0xf7, 0xfd, 0xce, 0xb4, 0x9c, 0x52, 0x1a, 0xe6, 0x09, 0xf8, 0x8c, - 0xe6, 0x02, 0x34, 0xfe, 0xee, 0x34, 0xbc, 0x38, 0x55, 0x28, 0xbb, 0x77, 0x0d, 0x95, 0xf7, 0x09, - 0x23, 0x29, 0xc7, 0xcf, 0x0c, 0x74, 0xa3, 0xc0, 0xfa, 0x01, 0x03, 0x29, 0xcc, 0x3f, 0x02, 0x30, - 0x8d, 0x6a, 0xa9, 0x36, 0xbf, 0x75, 0xcb, 0xd1, 0xb9, 0x14, 0xea, 0xfa, 0xe5, 0x71, 0x76, 0x68, - 0x9c, 0xd5, 0x1f, 0x3c, 0xef, 0x58, 0x33, 0xbd, 0x8e, 0x65, 0x9e, 0x91, 0x34, 0xf9, 0xd8, 0x7e, - 0x85, 0xc1, 0xfe, 0xe5, 0xa5, 0x55, 0x8b, 0x62, 0xd1, 0xcc, 0x1b, 0x4e, 0x40, 0x53, 0x5d, 0x14, - 0xfd, 0xb3, 0xc1, 0xc3, 0x96, 0x2b, 0xce, 0xda, 0xc0, 0x25, 0x19, 0xf7, 0x96, 0x8a, 0xf8, 0x1d, - 0x1d, 0xbe, 0x07, 0x80, 0x8f, 0xd1, 0xb2, 0x20, 0x2d, 0x60, 0x05, 0x95, 0xdf, 0x96, 0x4a, 0xcd, - 0x6b, 0x55, 0xa3, 0x36, 0xbf, 0xf5, 0xbe, 0x33, 0xa5, 0x75, 0xce, 0x61, 0x11, 0xb4, 0x07, 0xa0, - 0x92, 0xab, 0x5b, 0x5a, 0xe5, 0xaa, 0x52, 0x39, 0x49, 0x69, 0x7b, 0x8b, 0x62, 0x2c, 0x00, 0x3f, - 0x41, 0xab, 0x24, 0x17, 0x4d, 0xca, 0xe2, 0xef, 0x20, 0xf4, 0xbf, 0xcd, 0xa9, 0x00, 0x3f, 0x84, - 0x8c, 0xa6, 0xdc, 0x2c, 0x55, 0x4b, 0xb5, 0xb9, 0xba, 0xdd, 0xeb, 0x58, 0x15, 0xc5, 0x76, 0x09, - 0xd0, 0xf6, 0x56, 0x86, 0x9e, 0xc7, 0x85, 0x63, 0x57, 0xd9, 0x5f, 0x96, 0xd0, 0xc2, 0x67, 0xea, - 0x14, 0x1e, 0x08, 0x22, 0x00, 0x57, 0xd1, 0x42, 0x06, 0xa7, 0xc2, 0x97, 0xc5, 0x8b, 0x43, 0xd3, - 0xa8, 0x1a, 0xb5, 0x59, 0x0f, 0x15, 0xb6, 0x7d, 0x4a, 0x93, 0xcf, 0x43, 0xbc, 0x8d, 0xca, 0x63, - 0xc9, 0xdf, 0x99, 0x9a, 0xbc, 0x4e, 0x7a, 0xb6, 0x48, 0xda, 0xd3, 0x81, 0xf8, 0x11, 0x9a, 0x97, - 0xfc, 0xf2, 0x90, 0xa8, 0x2c, 0xe6, 0xb7, 0x6a, 0x53, 0x79, 0xbe, 0x94, 0xc7, 0xca, 0x2b, 0x02, - 0x34, 0x19, 0x2a, 0x60, 0xd2, 0xc0, 0xf1, 0x37, 0x08, 0x0f, 0xea, 0xc8, 0x7d, 0xc1, 0x48, 0xd0, - 0x02, 0x66, 0xce, 0x4a, 0x7d, 0x1b, 0x57, 0x6a, 0x0e, 0x3f, 0x54, 0x41, 0xde, 0xb2, 0x98, 0xb0, - 0xe0, 0x2f, 0xd0, 0x82, 0x54, 0x7b, 0x4c, 0x93, 0x3c, 0x05, 0x6e, 0x5e, 0x97, 0x72, 0xdf, 0x9d, - 0x9e, 0x36, 0xa5, 0xc9, 0x57, 0x12, 0xef, 0xc9, 0x54, 0xd5, 0x7f, 0x8e, 0xdb, 0x68, 0x4d, 0x76, - 0xc4, 0x6f, 0x93, 0x98, 0xf9, 0xc3, 0xde, 0x73, 0x41, 0x19, 0x98, 0x65, 0xc9, 0xec, 0x4c, 0x65, - 0x96, 0x8d, 0xdb, 0x27, 0x31, 0xeb, 0x2b, 0xd7, 0xe5, 0xb8, 0x19, 0x4e, 0x3a, 0x0e, 0x0a, 0x4e, - 0xfb, 0x69, 0x19, 0x2d, 0x8e, 0x9f, 0x40, 0xdc, 0x40, 0x37, 0x42, 0x38, 0x22, 0x79, 0x22, 0x86, - 0x0a, 0x64, 0xa3, 0xe7, 0xea, 0xf7, 0x0a, 0xae, 0xdf, 0x3b, 0xd6, 0xba, 0x1a, 0x0a, 0x1e, 0xb6, - 0x9c, 0x98, 0xba, 0x29, 0x11, 0x4d, 0xe7, 0x01, 0x44, 0x24, 0x38, 0xdb, 0x85, 0xa0, 0xdb, 0xb1, - 0x96, 0x76, 0x55, 0x7c, 0x9f, 0xd8, 0x5b, 0x0a, 0xc7, 0x0d, 0xf8, 0x27, 0x03, 0xc9, 0xfb, 0x6c, - 0x24, 0xc7, 0x30, 0xe6, 0x82, 0xc5, 0x8d, 0xbc, 0x98, 0x27, 0x7d, 0x76, 0x3e, 0xb9, 0x52, 0x6f, - 0x76, 0x47, 0x02, 0xf7, 0x81, 0x05, 0x90, 0x09, 0x12, 0x41, 0xbd, 0x5a, 0x68, 0xed, 0x76, 0x2c, - 0xf3, 0x11, 0x4f, 0xe9, 0x45, 0x58, 0xcf, 0xa4, 0x97, 0x78, 0xf0, 0xcf, 0x06, 0xb2, 0x32, 0x9a, - 0xf9, 0xd3, 0x24, 0x96, 0xfe, 0xbb, 0xc4, 0x3b, 0x5a, 0xe2, 0xfa, 0x43, 0x9a, 0x5d, 0xaa, 0x72, - 0x3d, 0xbb, 0xdc, 0x89, 0x77, 0xd0, 0x12, 0x09, 0xd3, 0x38, 0xf3, 0x49, 0x18, 0x32, 0xe0, 0x1c, - 0xb8, 0x39, 0x2b, 0x87, 0x7e, 0xad, 0xd7, 0xb1, 0x6e, 0xea, 0xa1, 0x1f, 0x07, 0xd8, 0xde, 0xa2, - 0xb4, 0x6c, 0xf7, 0x0d, 0xf8, 0x57, 0x03, 0xdd, 0x0b, 0x68, 0x9a, 0xe6, 0x59, 0x2c, 0xce, 0xd4, - 0x68, 0xab, 0x53, 0x28, 0xa8, 0xcf, 0x4f, 0x48, 0xdb, 0x2f, 0x4a, 0x71, 0xd2, 0x8c, 0x05, 0x24, - 0x31, 0x17, 0x10, 0xfa, 0x84, 0x73, 0x10, 0xdc, 0x17, 0xd4, 0xbc, 0x2e, 0x8f, 0xc5, 0x76, 0xaf, - 0x63, 0xdd, 0x57, 0x2f, 0xfb, 0x77, 0x3c, 0xb6, 0xe7, 0x0c, 0x02, 0x8b, 0xd9, 0x90, 0xa7, 0xf8, - 0x90, 0x1e, 0x9c, 0x90, 0xf6, 0x43, 0x9a, 0x7d, 0x3d, 0x0c, 0xd9, 0x96, 0x11, 0x87, 0x14, 0x1f, - 0xa2, 0x15, 0x06, 0x61, 0x1e, 0x40, 0x28, 0x3b, 0x33, 0x60, 0x95, 0x43, 0x32, 0x57, 0xaf, 0xf6, - 0x3a, 0xd6, 0x6d, 0xa5, 0xe8, 0x42, 0x98, 0xed, 0xbd, 0xa5, 0xed, 0x7b, 0x00, 0x03, 0x7e, 0xfb, - 0x4f, 0x03, 0x55, 0xa6, 0xf7, 0x0c, 0x1f, 0xa1, 0x25, 0x2e, 0x48, 0x2b, 0xce, 0x22, 0x9f, 0xc1, - 0x09, 0x61, 0x21, 0xd7, 0xb3, 0x71, 0xff, 0x0a, 0xb3, 0x31, 0x6c, 0xca, 0x04, 0x87, 0xed, 0x2d, - 0x6a, 0x8b, 0xa7, 0x0c, 0x38, 0x40, 0x8b, 0xe3, 0xb5, 0x94, 0x33, 0x31, 0x57, 0xff, 0xf4, 0x6a, - 0xaf, 0x59, 0xb9, 0xa8, 0x1d, 0xb6, 0xf7, 0xe6, 0x58, 0x99, 0xed, 0x1f, 0x4a, 0x68, 0x79, 0xf2, - 0x8a, 0xc3, 0xdf, 0xa3, 0x95, 0xd1, 0xdb, 0x92, 0xfa, 0x5c, 0x3e, 0xf2, 0xbf, 0xdf, 0xb0, 0x1f, - 0x14, 0xda, 0xfe, 0xd1, 0x16, 0xc5, 0xc3, 0xeb, 0x94, 0x1e, 0xa8, 0xd7, 0xe0, 0xa7, 0x06, 0xba, - 0x3d, 0x2e, 0xe0, 0x95, 0x42, 0xfc, 0xef, 0x3a, 0xcc, 0x11, 0x1d, 0x3b, 0xa3, 0x25, 0xc2, 0x2d, - 0xf4, 0x4e, 0x13, 0xe2, 0xa8, 0x29, 0x7c, 0x12, 0x04, 0x34, 0xcf, 0x44, 0xd1, 0x35, 0x2e, 0x08, - 0x13, 0xdc, 0x3f, 0x62, 0x34, 0x95, 0xf7, 0x40, 0xa9, 0x5e, 0xeb, 0x75, 0xac, 0xbb, 0xaa, 0xe6, - 0x53, 0xe1, 0xb6, 0xb7, 0xa6, 0xfc, 0xdb, 0x03, 0xf7, 0x81, 0xf4, 0xee, 0x15, 0xce, 0x67, 0x06, - 0x42, 0xc3, 0xdd, 0x80, 0x57, 0xd1, 0x1b, 0xe3, 0x8b, 0xb6, 0xdc, 0x56, 0x4b, 0x36, 0xd1, 0x1b, - 0x52, 0xed, 0x9c, 0xd7, 0x51, 0x10, 0x34, 0x5c, 0x4b, 0xf5, 0xc7, 0xcf, 0xbb, 0x15, 0xe3, 0x45, - 0xb7, 0x62, 0xfc, 0xd1, 0xad, 0x18, 0x3f, 0x9e, 0x57, 0x66, 0x5e, 0x9c, 0x57, 0x66, 0x7e, 0x3b, - 0xaf, 0xcc, 0x3c, 0xf9, 0x68, 0x84, 0x4f, 0xdf, 0x83, 0x1b, 0x09, 0x69, 0xf0, 0xfe, 0x83, 0x7b, - 0xbc, 0xb5, 0xe9, 0x9e, 0x8e, 0x7d, 0xd8, 0xc9, 0x97, 0x34, 0xca, 0xf2, 0xa3, 0xee, 0xc3, 0xbf, - 0x02, 0x00, 0x00, 0xff, 0xff, 0xd5, 0xc5, 0xf0, 0xa5, 0x00, 0x0b, 0x00, 0x00, + // 1081 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4d, 0x6f, 0xdc, 0x44, + 0x18, 0x8e, 0xbb, 0xe9, 0xa2, 0x4c, 0x42, 0x92, 0x0e, 0xa4, 0x71, 0x93, 0xb2, 0x5e, 0xb9, 0x95, + 0x58, 0x84, 0xe2, 0x25, 0x41, 0x2a, 0x12, 0xd0, 0x43, 0x36, 0x51, 0x10, 0xa8, 0xb4, 0xa9, 0x13, + 0x81, 0x54, 0x0e, 0xa3, 0x59, 0xfb, 0x8d, 0xd7, 0x5a, 0xdb, 0xb3, 0xcc, 0x8c, 0xf3, 0xc1, 0x5f, + 0xe0, 0x82, 0xd4, 0x2b, 0x67, 0x0e, 0xdc, 0x90, 0xf8, 0x11, 0x3d, 0xf6, 0x88, 0x38, 0x6c, 0x51, + 0x72, 0xe6, 0xb2, 0xbf, 0x00, 0x79, 0x66, 0xf6, 0xb3, 0xc9, 0x36, 0xc0, 0x69, 0xd7, 0xef, 0xfb, + 0x3e, 0x8f, 0x9f, 0xf7, 0x6b, 0xc6, 0xe8, 0x03, 0x26, 0x52, 0x26, 0x62, 0x51, 0xef, 0x30, 0x96, + 0xa4, 0x34, 0xa3, 0x11, 0xf0, 0xfa, 0xf1, 0x66, 0x13, 0x24, 0xdd, 0xac, 0x47, 0x90, 0x81, 0x88, + 0x85, 0xd7, 0xe1, 0x4c, 0x32, 0xbc, 0x6e, 0x42, 0xbd, 0x91, 0x50, 0xcf, 0x84, 0xae, 0xbd, 0x1b, + 0xb1, 0x88, 0xa9, 0xb8, 0x7a, 0xf1, 0x4f, 0x43, 0xd6, 0xee, 0x44, 0x8c, 0x45, 0x09, 0xd4, 0xd5, + 0x53, 0x33, 0x3f, 0xaa, 0xd3, 0xec, 0xac, 0xef, 0x0a, 0x14, 0x1d, 0xd1, 0x18, 0xfd, 0x60, 0x5c, + 0x95, 0x49, 0x54, 0x98, 0x73, 0x2a, 0x63, 0x96, 0xf5, 0xfd, 0x3a, 0xba, 0xde, 0xa4, 0x02, 0x06, + 0x5a, 0x03, 0x16, 0xf7, 0xfd, 0xde, 0xb4, 0x9c, 0x52, 0x16, 0xe6, 0x09, 0x10, 0xce, 0x72, 0x09, + 0x26, 0xfe, 0xfe, 0xb4, 0x78, 0x79, 0xaa, 0xa3, 0xdc, 0xde, 0x0d, 0x54, 0xde, 0xa7, 0x9c, 0xa6, + 0x02, 0x3f, 0xb7, 0xd0, 0xad, 0x22, 0x96, 0x04, 0x1c, 0x94, 0x30, 0x72, 0x04, 0x60, 0x5b, 0xd5, + 0x52, 0x6d, 0x7e, 0xeb, 0x8e, 0x67, 0x72, 0x29, 0xd4, 0xf5, 0xcb, 0xe3, 0xed, 0xb0, 0x38, 0x6b, + 0x3c, 0x7a, 0xd1, 0x75, 0x66, 0x7a, 0x5d, 0xc7, 0x3e, 0xa3, 0x69, 0xf2, 0xa9, 0xfb, 0x1a, 0x83, + 0xfb, 0xeb, 0x2b, 0xa7, 0x16, 0xc5, 0xb2, 0x95, 0x37, 0xbd, 0x80, 0xa5, 0xa6, 0x28, 0xe6, 0x67, + 0x43, 0x84, 0xed, 0xba, 0x3c, 0xeb, 0x80, 0x50, 0x64, 0xc2, 0x5f, 0x2a, 0xf0, 0x3b, 0x06, 0xbe, + 0x07, 0x80, 0x8f, 0xd1, 0xb2, 0xa4, 0x6d, 0xe0, 0x05, 0x15, 0xe9, 0x28, 0xa5, 0xf6, 0x8d, 0xaa, + 0x55, 0x9b, 0xdf, 0xfa, 0xd0, 0x9b, 0xd2, 0x3a, 0xef, 0xb0, 0x00, 0xed, 0x01, 0xe8, 0xe4, 0x1a, + 0x8e, 0x51, 0xb9, 0xaa, 0x55, 0x4e, 0x52, 0xba, 0xfe, 0xa2, 0x1c, 0x03, 0xe0, 0x67, 0x68, 0x95, + 0xe6, 0xb2, 0xc5, 0x78, 0xfc, 0x03, 0x84, 0xe4, 0xfb, 0x9c, 0x49, 0x20, 0x21, 0x64, 0x2c, 0x15, + 0x76, 0xa9, 0x5a, 0xaa, 0xcd, 0x35, 0xdc, 0x5e, 0xd7, 0xa9, 0x68, 0xb6, 0x2b, 0x02, 0x5d, 0x7f, + 0x65, 0xe8, 0x79, 0x5a, 0x38, 0x76, 0xb5, 0xfd, 0x55, 0x09, 0x2d, 0x7c, 0xa1, 0xa7, 0xf0, 0x40, + 0x52, 0x09, 0xb8, 0x8a, 0x16, 0x32, 0x38, 0x95, 0x44, 0x15, 0x2f, 0x0e, 0x6d, 0xab, 0x6a, 0xd5, + 0x66, 0x7d, 0x54, 0xd8, 0xf6, 0x19, 0x4b, 0xbe, 0x0c, 0xf1, 0x36, 0x2a, 0x8f, 0x25, 0x7f, 0x6f, + 0x6a, 0xf2, 0x26, 0xe9, 0xd9, 0x22, 0x69, 0xdf, 0x00, 0xf1, 0x13, 0x34, 0xaf, 0xf8, 0xd5, 0x90, + 0xe8, 0x2c, 0xe6, 0xb7, 0x6a, 0x53, 0x79, 0xbe, 0x56, 0x63, 0xe5, 0x17, 0x00, 0x43, 0x86, 0x8a, + 0x30, 0x65, 0x10, 0xf8, 0x3b, 0x84, 0x07, 0x75, 0x14, 0x44, 0x72, 0x1a, 0xb4, 0x81, 0xdb, 0xb3, + 0x4a, 0xdf, 0xc6, 0xb5, 0x9a, 0x23, 0x0e, 0x35, 0xc8, 0x5f, 0x96, 0x13, 0x16, 0xfc, 0x15, 0x5a, + 0x50, 0x6a, 0x8f, 0x59, 0x92, 0xa7, 0x20, 0xec, 0x9b, 0x4a, 0xee, 0xfb, 0xd3, 0xd3, 0x66, 0x2c, + 0xf9, 0x46, 0xc5, 0xfb, 0x2a, 0x55, 0xfd, 0x5f, 0xe0, 0x0e, 0x5a, 0x53, 0x1d, 0x21, 0x1d, 0x1a, + 0x73, 0x32, 0xec, 0xbd, 0x90, 0x8c, 0x83, 0x5d, 0x56, 0xcc, 0xde, 0x54, 0x66, 0xd5, 0xb8, 0x7d, + 0x1a, 0xf3, 0xbe, 0x72, 0x53, 0x8e, 0xdb, 0xe1, 0xa4, 0xe3, 0xa0, 0xe0, 0x74, 0x7f, 0x2c, 0xa3, + 0xc5, 0xf1, 0x09, 0xc4, 0x4d, 0x74, 0x2b, 0x84, 0x23, 0x9a, 0x27, 0x72, 0xa8, 0x40, 0x35, 0x7a, + 0xae, 0xf1, 0xa0, 0xe0, 0xfa, 0xb3, 0xeb, 0xac, 0xeb, 0xa5, 0x10, 0x61, 0xdb, 0x8b, 0x59, 0x3d, + 0xa5, 0xb2, 0xe5, 0x3d, 0x82, 0x88, 0x06, 0x67, 0xbb, 0x10, 0x9c, 0x77, 0x9d, 0xa5, 0x5d, 0x8d, + 0xef, 0x13, 0xfb, 0x4b, 0xe1, 0xb8, 0x01, 0xff, 0x6c, 0x21, 0x75, 0x9e, 0x8d, 0xe4, 0x18, 0xc6, + 0x42, 0xf2, 0xb8, 0x99, 0x17, 0xfb, 0x64, 0x66, 0xe7, 0xb3, 0x6b, 0xf5, 0x66, 0x77, 0x04, 0xb8, + 0x0f, 0x3c, 0x80, 0x4c, 0xd2, 0x08, 0x1a, 0xd5, 0x42, 0xeb, 0x79, 0xd7, 0xb1, 0x9f, 0x88, 0x94, + 0x5d, 0x16, 0xeb, 0xdb, 0xec, 0x0a, 0x0f, 0xfe, 0xc5, 0x42, 0x4e, 0xc6, 0x32, 0x32, 0x4d, 0x62, + 0xe9, 0xff, 0x4b, 0xbc, 0x67, 0x24, 0xae, 0x3f, 0x66, 0xd9, 0x95, 0x2a, 0xd7, 0xb3, 0xab, 0x9d, + 0x78, 0x07, 0x2d, 0xd1, 0x30, 0x8d, 0x33, 0x42, 0xc3, 0x90, 0x83, 0x10, 0x20, 0xec, 0x59, 0xb5, + 0xf4, 0x6b, 0xbd, 0xae, 0x73, 0xdb, 0x2c, 0xfd, 0x78, 0x80, 0xeb, 0x2f, 0x2a, 0xcb, 0x76, 0xdf, + 0x80, 0x7f, 0xb3, 0xd0, 0x83, 0x80, 0xa5, 0x69, 0x9e, 0xc5, 0xf2, 0x4c, 0xaf, 0xb6, 0x9e, 0x42, + 0xc9, 0x88, 0x38, 0xa1, 0x1d, 0x52, 0x94, 0xe2, 0xa4, 0x15, 0x4b, 0x48, 0x62, 0x21, 0x21, 0x24, + 0x54, 0x08, 0x90, 0x82, 0x48, 0x66, 0xdf, 0x54, 0x63, 0xb1, 0xdd, 0xeb, 0x3a, 0x0f, 0xf5, 0xcb, + 0xfe, 0x1b, 0x8f, 0xeb, 0x7b, 0x03, 0x60, 0xb1, 0x1b, 0x6a, 0x8a, 0x0f, 0xd9, 0xc1, 0x09, 0xed, + 0x3c, 0x66, 0xd9, 0xb7, 0x43, 0xc8, 0xb6, 0x42, 0x1c, 0x32, 0x7c, 0x88, 0x56, 0x38, 0x84, 0x79, + 0x00, 0xa1, 0xea, 0xcc, 0x80, 0x55, 0x2d, 0xc9, 0x5c, 0xa3, 0xda, 0xeb, 0x3a, 0x77, 0xb5, 0xa2, + 0x4b, 0xc3, 0x5c, 0xff, 0x1d, 0x63, 0xdf, 0x03, 0x18, 0xf0, 0xbb, 0x7f, 0x5b, 0xa8, 0x32, 0xbd, + 0x67, 0xf8, 0x08, 0x2d, 0x09, 0x49, 0xdb, 0x71, 0x16, 0x11, 0x0e, 0x27, 0x94, 0x87, 0xc2, 0xec, + 0xc6, 0xc3, 0x6b, 0xec, 0xc6, 0xb0, 0x29, 0x13, 0x1c, 0xae, 0xbf, 0x68, 0x2c, 0xbe, 0x36, 0xe0, + 0x00, 0x2d, 0x8e, 0xd7, 0x52, 0xed, 0xc4, 0x5c, 0xe3, 0xf3, 0xeb, 0xbd, 0x66, 0xe5, 0xb2, 0x76, + 0xb8, 0xfe, 0xdb, 0x63, 0x65, 0x76, 0x7f, 0xbf, 0x81, 0x96, 0x27, 0x8f, 0x38, 0xec, 0xa3, 0x95, + 0xd1, 0xd3, 0x92, 0x11, 0xa1, 0x1e, 0xc5, 0x9b, 0x6f, 0x58, 0x7d, 0xd4, 0xe0, 0xe1, 0x11, 0xc9, + 0x0e, 0x34, 0x14, 0x13, 0x74, 0x77, 0x9c, 0xf3, 0xb5, 0xdc, 0xae, 0x45, 0x6d, 0x8f, 0x50, 0xef, + 0x8c, 0x66, 0x82, 0xdb, 0xe8, 0xbd, 0x16, 0xc4, 0x51, 0x4b, 0x12, 0x1a, 0x04, 0x2c, 0xcf, 0x64, + 0x51, 0x5c, 0x21, 0x29, 0x97, 0x82, 0x1c, 0x71, 0x96, 0xaa, 0x75, 0x2d, 0x35, 0x6a, 0xbd, 0xae, + 0x73, 0x5f, 0x97, 0x66, 0x6a, 0xb8, 0xeb, 0xaf, 0x69, 0xff, 0xf6, 0xc0, 0x7d, 0xa0, 0xbc, 0x7b, + 0x85, 0xf3, 0xb9, 0x85, 0xd0, 0xf0, 0x08, 0xc7, 0xab, 0xe8, 0xad, 0xf1, 0xfb, 0xb0, 0xdc, 0xd1, + 0x77, 0x61, 0x62, 0x2e, 0x32, 0x7d, 0x35, 0xbc, 0x39, 0xc9, 0x8f, 0x8a, 0x24, 0xff, 0xd5, 0x57, + 0x08, 0x1a, 0xde, 0x1e, 0x8d, 0xa7, 0x2f, 0xce, 0x2b, 0xd6, 0xcb, 0xf3, 0x8a, 0xf5, 0xd7, 0x79, + 0xc5, 0xfa, 0xe9, 0xa2, 0x32, 0xf3, 0xf2, 0xa2, 0x32, 0xf3, 0xc7, 0x45, 0x65, 0xe6, 0xd9, 0x27, + 0x23, 0x7c, 0xe6, 0xb8, 0xda, 0x48, 0x68, 0x53, 0xf4, 0x1f, 0xea, 0xc7, 0x5b, 0x9b, 0xf5, 0xd3, + 0xb1, 0xef, 0x2f, 0xf5, 0x92, 0x66, 0x59, 0x7d, 0x7b, 0x7d, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x9f, 0x4c, 0x60, 0x69, 0xa7, 0x0a, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/poolmanager/types/keys.go b/x/poolmanager/types/keys.go index 41797b764ba..e4d1c046f28 100644 --- a/x/poolmanager/types/keys.go +++ b/x/poolmanager/types/keys.go @@ -33,13 +33,21 @@ var ( DenomTradePairPrefix = []byte{0x04} // KeyTakerFeeStakersProtoRev defines key to store the taker fee for stakers tracker. + // Deprecated: Now utilizes KeyTakerFeeStakersProtoRevArray. KeyTakerFeeStakersProtoRev = []byte{0x05} // KeyTakerFeeCommunityPoolProtoRev defines key to store the taker fee for community pool tracker. + // Deprecated: Now utilizes KeyTakerFeeCommunityPoolProtoRevArray. KeyTakerFeeCommunityPoolProtoRev = []byte{0x06} // KeyTakerFeeProtoRevAccountingHeight defines key to store the accounting height for the above taker fee trackers. KeyTakerFeeProtoRevAccountingHeight = []byte{0x07} + + // KeyTakerFeeStakersProtoRevArray defines key to store the taker fee for stakers tracker coin array. + KeyTakerFeeStakersProtoRevArray = []byte{0x08} + + // KeyTakerFeeCommunityPoolProtoRevArray defines key to store the taker fee for community pool tracker coin array. + KeyTakerFeeCommunityPoolProtoRevArray = []byte{0x09} ) // ModuleRouteToBytes serializes moduleRoute to bytes. diff --git a/x/protorev/keeper/genesis.go b/x/protorev/keeper/genesis.go index 48ca56a169a..6c41298f1b5 100644 --- a/x/protorev/keeper/genesis.go +++ b/x/protorev/keeper/genesis.go @@ -89,7 +89,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState) { // Since we now track all aspects of protocol revenue, we need to take a snapshot of cyclic arb profits from this module at a certain block height. // This allows us to display how much protocol revenue has been generated since block "X" instead of just since the module was initialized. - if !genState.CyclicArbTracker.CyclicArb.IsZero() { + if len(genState.CyclicArbTracker.CyclicArb) > 0 { k.SetCyclicArbProfitTrackerValue(ctx, genState.CyclicArbTracker.CyclicArb) } else { k.SetCyclicArbProfitTrackerValue(ctx, genState.Profits) diff --git a/x/protorev/keeper/genesis_test.go b/x/protorev/keeper/genesis_test.go index 5555d249aba..37e8b2c2c02 100644 --- a/x/protorev/keeper/genesis_test.go +++ b/x/protorev/keeper/genesis_test.go @@ -1,5 +1,7 @@ package keeper_test +import sdk "github.com/cosmos/cosmos-sdk/types" + // TestInitGenesis tests the initialization and export of the module's genesis state. func (s *KeeperTestSuite) TestInitGenesis() { // Export the genesis state @@ -62,7 +64,7 @@ func (s *KeeperTestSuite) TestInitGenesis() { s.Require().Equal(profits, exportedGenesis.Profits) cyclicArbProfit := s.App.ProtoRevKeeper.GetCyclicArbProfitTrackerValue(s.Ctx) - s.Require().Equal(cyclicArbProfit, exportedGenesis.CyclicArbTracker.CyclicArb) + s.Require().Equal([]sdk.Coin(cyclicArbProfit), exportedGenesis.CyclicArbTracker.CyclicArb) cyclicArbProfitAccountingHeight := s.App.ProtoRevKeeper.GetCyclicArbProfitTrackerStartHeight(s.Ctx) s.Require().Equal(cyclicArbProfitAccountingHeight, exportedGenesis.CyclicArbTracker.HeightAccountingStartsFrom) diff --git a/x/protorev/keeper/grpc_query_test.go b/x/protorev/keeper/grpc_query_test.go index b0ad02d4593..1ab07cf6ea2 100644 --- a/x/protorev/keeper/grpc_query_test.go +++ b/x/protorev/keeper/grpc_query_test.go @@ -418,9 +418,9 @@ func (s *KeeperTestSuite) TestGetAllProtocolRevenueGRPCQuery() { // Check protocol revenue res, err = s.queryClient.GetAllProtocolRevenue(sdk.WrapSDKContext(s.Ctx), req) s.Require().NoError(err) - s.Require().Equal(cyclicArbProfits, res.AllProtocolRevenue.CyclicArbTracker.CyclicArb) - s.Require().Equal(expectedTakerFeeToStakers, res.AllProtocolRevenue.TakerFeesTracker.TakerFeesToStakers) - s.Require().Equal(expectedTakerFeeToCommunityPool, res.AllProtocolRevenue.TakerFeesTracker.TakerFeesToCommunityPool) + s.Require().Equal([]sdk.Coin(cyclicArbProfits), res.AllProtocolRevenue.CyclicArbTracker.CyclicArb) + s.Require().Equal([]sdk.Coin(expectedTakerFeeToStakers), res.AllProtocolRevenue.TakerFeesTracker.TakerFeesToStakers) + s.Require().Equal([]sdk.Coin(expectedTakerFeeToCommunityPool), res.AllProtocolRevenue.TakerFeesTracker.TakerFeesToCommunityPool) // A second round of the same thing // Swap on a pool to charge taker fee @@ -440,7 +440,7 @@ func (s *KeeperTestSuite) TestGetAllProtocolRevenueGRPCQuery() { // Check protocol revenue res, err = s.queryClient.GetAllProtocolRevenue(sdk.WrapSDKContext(s.Ctx), req) s.Require().NoError(err) - s.Require().Equal(cyclicArbProfits.Add(cyclicArbProfits...), res.AllProtocolRevenue.CyclicArbTracker.CyclicArb) - s.Require().Equal(expectedTakerFeeToStakers.Add(expectedTakerFeeToStakers...), res.AllProtocolRevenue.TakerFeesTracker.TakerFeesToStakers) - s.Require().Equal(expectedTakerFeeToCommunityPool.Add(expectedTakerFeeToCommunityPool...), res.AllProtocolRevenue.TakerFeesTracker.TakerFeesToCommunityPool) + s.Require().Equal([]sdk.Coin(cyclicArbProfits.Add(cyclicArbProfits...)), res.AllProtocolRevenue.CyclicArbTracker.CyclicArb) + s.Require().Equal([]sdk.Coin(expectedTakerFeeToStakers.Add(expectedTakerFeeToStakers...)), res.AllProtocolRevenue.TakerFeesTracker.TakerFeesToStakers) + s.Require().Equal([]sdk.Coin(expectedTakerFeeToCommunityPool.Add(expectedTakerFeeToCommunityPool...)), res.AllProtocolRevenue.TakerFeesTracker.TakerFeesToCommunityPool) } diff --git a/x/protorev/keeper/protorev_test.go b/x/protorev/keeper/protorev_test.go index c04925a6e5b..1f49c4c8972 100644 --- a/x/protorev/keeper/protorev_test.go +++ b/x/protorev/keeper/protorev_test.go @@ -333,12 +333,12 @@ func (s *KeeperTestSuite) TestGetAllProtocolRevenue() { allProtoRev := s.App.ProtoRevKeeper.GetAllProtocolRevenue(s.Ctx) s.Require().Equal(types.AllProtocolRevenue{ TakerFeesTracker: poolmanagertypes.TakerFeesTracker{ - TakerFeesToStakers: sdk.Coins(nil), - TakerFeesToCommunityPool: sdk.Coins(nil), + TakerFeesToStakers: []sdk.Coin{}, + TakerFeesToCommunityPool: []sdk.Coin{}, HeightAccountingStartsFrom: 0, }, CyclicArbTracker: types.CyclicArbTracker{ - CyclicArb: sdk.NewCoins(), + CyclicArb: []sdk.Coin{}, HeightAccountingStartsFrom: 0, }, }, allProtoRev) @@ -368,9 +368,9 @@ func (s *KeeperTestSuite) TestGetAllProtocolRevenue() { // Check protocol revenue allProtoRev = s.App.ProtoRevKeeper.GetAllProtocolRevenue(s.Ctx) - s.Require().Equal(cyclicArbProfits, allProtoRev.CyclicArbTracker.CyclicArb) - s.Require().Equal(expectedTakerFeeToStakers, allProtoRev.TakerFeesTracker.TakerFeesToStakers) - s.Require().Equal(expectedTakerFeeToCommunityPool, allProtoRev.TakerFeesTracker.TakerFeesToCommunityPool) + s.Require().Equal([]sdk.Coin(cyclicArbProfits), allProtoRev.CyclicArbTracker.CyclicArb) + s.Require().Equal([]sdk.Coin(expectedTakerFeeToStakers), allProtoRev.TakerFeesTracker.TakerFeesToStakers) + s.Require().Equal([]sdk.Coin(expectedTakerFeeToCommunityPool), allProtoRev.TakerFeesTracker.TakerFeesToCommunityPool) // A second round of the same thing // Swap on a pool to charge taker fee @@ -389,7 +389,7 @@ func (s *KeeperTestSuite) TestGetAllProtocolRevenue() { // Check protocol revenue allProtoRev = s.App.ProtoRevKeeper.GetAllProtocolRevenue(s.Ctx) - s.Require().Equal(cyclicArbProfits.Add(cyclicArbProfits...), allProtoRev.CyclicArbTracker.CyclicArb) - s.Require().Equal(expectedTakerFeeToStakers.Add(expectedTakerFeeToStakers...), allProtoRev.TakerFeesTracker.TakerFeesToStakers) - s.Require().Equal(expectedTakerFeeToCommunityPool.Add(expectedTakerFeeToCommunityPool...), allProtoRev.TakerFeesTracker.TakerFeesToCommunityPool) + s.Require().Equal([]sdk.Coin(cyclicArbProfits.Add(cyclicArbProfits...)), allProtoRev.CyclicArbTracker.CyclicArb) + s.Require().Equal([]sdk.Coin(expectedTakerFeeToStakers.Add(expectedTakerFeeToStakers...)), allProtoRev.TakerFeesTracker.TakerFeesToStakers) + s.Require().Equal([]sdk.Coin(expectedTakerFeeToCommunityPool.Add(expectedTakerFeeToCommunityPool...)), allProtoRev.TakerFeesTracker.TakerFeesToCommunityPool) } diff --git a/x/protorev/types/expected_keepers.go b/x/protorev/types/expected_keepers.go index 6ed6981d565..6acdadda912 100644 --- a/x/protorev/types/expected_keepers.go +++ b/x/protorev/types/expected_keepers.go @@ -60,8 +60,8 @@ type PoolManagerKeeper interface { GetPoolModule(ctx sdk.Context, poolId uint64) (poolmanagertypes.PoolModuleI, error) GetTotalPoolLiquidity(ctx sdk.Context, poolId uint64) (sdk.Coins, error) RouteGetPoolDenoms(ctx sdk.Context, poolId uint64) ([]string, error) - GetTakerFeeTrackerForStakers(ctx sdk.Context) sdk.Coins - GetTakerFeeTrackerForCommunityPool(ctx sdk.Context) sdk.Coins + GetTakerFeeTrackerForStakers(ctx sdk.Context) []sdk.Coin + GetTakerFeeTrackerForCommunityPool(ctx sdk.Context) []sdk.Coin GetTakerFeeTrackerStartHeight(ctx sdk.Context) int64 } diff --git a/x/protorev/types/protorev.pb.go b/x/protorev/types/protorev.pb.go index f4f5329a875..66087d05221 100644 --- a/x/protorev/types/protorev.pb.go +++ b/x/protorev/types/protorev.pb.go @@ -7,7 +7,6 @@ import ( cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" _ "github.com/cosmos/cosmos-proto" - 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" @@ -777,8 +776,8 @@ func (m *AllProtocolRevenue) GetCyclicArbTracker() CyclicArbTracker { } type CyclicArbTracker struct { - CyclicArb github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=cyclic_arb,json=cyclicArb,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"cyclic_arb"` - HeightAccountingStartsFrom int64 `protobuf:"varint,2,opt,name=height_accounting_starts_from,json=heightAccountingStartsFrom,proto3" json:"height_accounting_starts_from,omitempty" yaml:"height_accounting_starts_from"` + CyclicArb []types.Coin `protobuf:"bytes,1,rep,name=cyclic_arb,json=cyclicArb,proto3" json:"cyclic_arb"` + HeightAccountingStartsFrom int64 `protobuf:"varint,2,opt,name=height_accounting_starts_from,json=heightAccountingStartsFrom,proto3" json:"height_accounting_starts_from,omitempty" yaml:"height_accounting_starts_from"` } func (m *CyclicArbTracker) Reset() { *m = CyclicArbTracker{} } @@ -814,7 +813,7 @@ func (m *CyclicArbTracker) XXX_DiscardUnknown() { var xxx_messageInfo_CyclicArbTracker proto.InternalMessageInfo -func (m *CyclicArbTracker) GetCyclicArb() github_com_cosmos_cosmos_sdk_types.Coins { +func (m *CyclicArbTracker) GetCyclicArb() []types.Coin { if m != nil { return m.CyclicArb } @@ -850,81 +849,80 @@ func init() { } var fileDescriptor_1e9f2391fd9fec01 = []byte{ - // 1175 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcf, 0x6f, 0x1b, 0xc5, - 0x17, 0xcf, 0xc6, 0x6e, 0x1a, 0x8f, 0x5b, 0xdb, 0x99, 0xa4, 0xad, 0xe3, 0x7e, 0xbf, 0xde, 0x30, - 0xad, 0xc0, 0x45, 0x8a, 0x4d, 0x02, 0x07, 0x54, 0xd4, 0x43, 0x36, 0x28, 0x22, 0x20, 0x92, 0x68, - 0x62, 0xa9, 0x82, 0xcb, 0x32, 0xbb, 0x1e, 0x3b, 0x8b, 0xbd, 0x3b, 0xd6, 0xce, 0x38, 0x3f, 0x8a, - 0xd4, 0x0b, 0x47, 0x2e, 0x5c, 0xb8, 0x71, 0xe0, 0x06, 0x42, 0xe2, 0xff, 0xe8, 0xb1, 0xc7, 0x8a, - 0xc3, 0x82, 0x92, 0x0b, 0x82, 0x9b, 0xff, 0x02, 0xb4, 0x33, 0xb3, 0x6b, 0xc7, 0x89, 0x1b, 0x22, - 0x21, 0x4e, 0x9e, 0x79, 0xef, 0x7d, 0x3e, 0xef, 0xbd, 0xcf, 0x1b, 0xcf, 0x0e, 0x78, 0x8b, 0x71, - 0x9f, 0x71, 0x8f, 0x37, 0xfa, 0x21, 0x13, 0x2c, 0xa4, 0x87, 0x8d, 0xc3, 0x35, 0x87, 0x0a, 0xb2, - 0x96, 0x1a, 0xea, 0x72, 0x01, 0xcb, 0x3a, 0xb0, 0x9e, 0xda, 0x75, 0x60, 0x65, 0xd9, 0x95, 0x2e, - 0x5b, 0x3a, 0x1a, 0x6a, 0xa3, 0xa2, 0x2a, 0x4b, 0x1d, 0xd6, 0x61, 0xca, 0x1e, 0xaf, 0xb4, 0xb5, - 0xaa, 0x62, 0x1a, 0x0e, 0xe1, 0x34, 0x4d, 0xe7, 0x32, 0x2f, 0xd0, 0xfe, 0x47, 0x69, 0x4d, 0x8c, - 0xf5, 0x7c, 0x12, 0x90, 0x0e, 0x0d, 0xd3, 0xb8, 0x0e, 0x0d, 0x68, 0x5a, 0x46, 0xe5, 0x61, 0x12, - 0x2a, 0x8e, 0xdb, 0x94, 0xf2, 0xcb, 0xa3, 0xd0, 0x2b, 0x03, 0xc0, 0x26, 0xeb, 0xd2, 0x60, 0x8f, - 0x78, 0xe1, 0x46, 0xe8, 0x60, 0x36, 0x10, 0x94, 0xc3, 0xcf, 0x00, 0x20, 0xa1, 0x63, 0x87, 0x72, - 0x57, 0x36, 0x56, 0x32, 0xb5, 0xfc, 0xba, 0x59, 0x9f, 0xd6, 0x67, 0x5d, 0xa2, 0xac, 0xe5, 0x17, - 0x91, 0x39, 0x33, 0x8c, 0xcc, 0x85, 0x13, 0xe2, 0xf7, 0x1e, 0xa3, 0x11, 0x01, 0xc2, 0x39, 0x92, - 0x52, 0xd7, 0xc1, 0xbc, 0x88, 0x13, 0xda, 0x5e, 0x50, 0x9e, 0x5d, 0x31, 0x6a, 0x39, 0x6b, 0x71, - 0x18, 0x99, 0x45, 0x85, 0x49, 0x3c, 0x08, 0xdf, 0x94, 0xcb, 0xed, 0x00, 0xae, 0x81, 0x9c, 0xb2, - 0xb2, 0x81, 0x28, 0x67, 0x24, 0x60, 0x69, 0x18, 0x99, 0xa5, 0x71, 0x00, 0x1b, 0x08, 0x84, 0x15, - 0xed, 0xee, 0x40, 0x3c, 0xce, 0xfe, 0xf1, 0x83, 0x69, 0xa0, 0x5f, 0x0c, 0x70, 0x43, 0xe6, 0x84, - 0x3b, 0x60, 0x4e, 0x84, 0xa4, 0xf5, 0x4f, 0x3a, 0x69, 0xc6, 0x71, 0xd6, 0x1d, 0xdd, 0xc9, 0x6d, - 0x9d, 0x44, 0x82, 0x11, 0xd6, 0x2c, 0x70, 0x07, 0xe4, 0xb8, 0xa0, 0x7d, 0x9b, 0x7b, 0xcf, 0xa8, - 0xee, 0x61, 0x2d, 0x46, 0xfc, 0x1a, 0x99, 0x77, 0xd4, 0x00, 0x79, 0xab, 0x5b, 0xf7, 0x58, 0xc3, - 0x27, 0xe2, 0xa0, 0xbe, 0x1d, 0x88, 0x51, 0xbd, 0x29, 0x0e, 0xe1, 0xf9, 0x78, 0xbd, 0xef, 0x3d, - 0xa3, 0xba, 0xde, 0xef, 0x0c, 0x70, 0x43, 0xa6, 0x87, 0x0f, 0x40, 0x36, 0x9e, 0x6f, 0xd9, 0x58, - 0x31, 0x6a, 0x59, 0xab, 0x38, 0x8c, 0xcc, 0xbc, 0x42, 0xc7, 0x56, 0x84, 0xa5, 0xf3, 0xbf, 0xd3, - 0xf1, 0x4f, 0x03, 0x14, 0xa5, 0x8e, 0xfb, 0x82, 0x08, 0x8f, 0x0b, 0xcf, 0xe5, 0xf0, 0x13, 0x70, - 0xb3, 0x1f, 0xb2, 0xb6, 0x27, 0x12, 0x49, 0x97, 0xeb, 0xfa, 0x74, 0xc7, 0x27, 0x37, 0x55, 0x73, - 0x93, 0x79, 0x81, 0x75, 0x57, 0x8b, 0x59, 0xd0, 0x3d, 0x28, 0x1c, 0xc2, 0x09, 0x03, 0x74, 0x40, - 0x29, 0x18, 0xf8, 0x0e, 0x0d, 0x6d, 0xd6, 0xb6, 0xf5, 0xa0, 0x54, 0x47, 0xef, 0x5f, 0xa5, 0xea, - 0x3d, 0xc5, 0x39, 0x09, 0x47, 0xb8, 0xa0, 0x4c, 0xbb, 0xed, 0xa6, 0x1a, 0xd9, 0x9b, 0xe0, 0x86, - 0x3c, 0x8b, 0xe5, 0xcc, 0x4a, 0xa6, 0x96, 0xb5, 0x4a, 0xc3, 0xc8, 0xbc, 0xa5, 0xb0, 0xd2, 0x8c, - 0xb0, 0x72, 0xa3, 0x1f, 0x67, 0x41, 0x7e, 0x8f, 0xb1, 0xde, 0x53, 0xea, 0x75, 0x0e, 0x04, 0x87, - 0x4f, 0xc0, 0x6d, 0x2e, 0x88, 0xd3, 0xa3, 0xf6, 0x91, 0xb4, 0xe8, 0x99, 0x94, 0x87, 0x91, 0xb9, - 0x94, 0x4c, 0x74, 0xcc, 0x8d, 0xf0, 0x2d, 0xb5, 0x57, 0x78, 0xb8, 0x09, 0x8a, 0x0e, 0xe9, 0x91, - 0xc0, 0xa5, 0x61, 0x42, 0x30, 0x2b, 0x09, 0x2a, 0xc3, 0xc8, 0xbc, 0xab, 0x08, 0x26, 0x02, 0x10, - 0x2e, 0x24, 0x16, 0x4d, 0xb2, 0x0b, 0x16, 0x5d, 0x16, 0xb8, 0x34, 0x10, 0x21, 0x11, 0xb4, 0x95, - 0x10, 0x65, 0x24, 0x51, 0x75, 0x18, 0x99, 0x15, 0x45, 0x74, 0x49, 0x10, 0xc2, 0x70, 0xdc, 0x3a, - 0xaa, 0x2a, 0x16, 0xf4, 0x88, 0x70, 0x3f, 0x21, 0xcb, 0x4e, 0x56, 0x35, 0x11, 0x80, 0x70, 0x21, - 0xb1, 0x28, 0x12, 0xf4, 0x7d, 0x06, 0x14, 0xb6, 0x83, 0x36, 0xb3, 0x4e, 0x62, 0xbd, 0x9a, 0x27, - 0x7d, 0x0a, 0x9f, 0x82, 0x39, 0xd5, 0xbd, 0x54, 0x29, 0xbf, 0x5e, 0x9b, 0xfe, 0x3f, 0xdb, 0x97, - 0x71, 0x31, 0x52, 0x72, 0x4c, 0xfc, 0xe1, 0x14, 0x0b, 0xc2, 0x9a, 0x0e, 0xda, 0x60, 0x3e, 0xd1, - 0x44, 0xea, 0x97, 0x5f, 0x7f, 0x7b, 0x3a, 0xb5, 0xa5, 0x23, 0x53, 0xf2, 0x7b, 0x9a, 0xbc, 0x78, - 0x5e, 0x6f, 0x84, 0x53, 0x52, 0xc8, 0xc0, 0xad, 0x71, 0x9d, 0xa4, 0xb6, 0xf9, 0xf5, 0xfa, 0xf4, - 0x24, 0x9b, 0x63, 0xd1, 0x69, 0xa2, 0xfb, 0x3a, 0xd1, 0xe2, 0xc5, 0x79, 0x20, 0x7c, 0x2e, 0x41, - 0xdc, 0x51, 0xa2, 0xa7, 0xd4, 0xfe, 0xb5, 0x1d, 0x6d, 0xea, 0xc8, 0x69, 0x1d, 0x25, 0x4c, 0x08, - 0xa7, 0xa4, 0xe8, 0x03, 0x50, 0x38, 0xaf, 0x31, 0x7c, 0x04, 0xe6, 0xce, 0x9d, 0xe1, 0x85, 0x91, - 0xde, 0xc9, 0x8c, 0x75, 0x00, 0x7a, 0x02, 0x4a, 0x93, 0x2a, 0x5e, 0x07, 0xfe, 0x8d, 0x01, 0x96, - 0x2e, 0x13, 0xe8, 0x1a, 0x1c, 0xf0, 0x23, 0xb0, 0xe0, 0x93, 0x63, 0x5b, 0x78, 0x6e, 0x97, 0xdb, - 0x6e, 0xc8, 0x38, 0xa7, 0x2d, 0xfd, 0xdf, 0xf9, 0xdf, 0x30, 0x32, 0xcb, 0x0a, 0x75, 0x21, 0x04, - 0xe1, 0xa2, 0x4f, 0x8e, 0x9b, 0xb1, 0x69, 0x53, 0x5b, 0x04, 0x28, 0x4d, 0x0a, 0x08, 0xbf, 0x00, - 0x79, 0x95, 0xc7, 0xf6, 0x49, 0x3f, 0xb9, 0xc3, 0x1e, 0x4c, 0x9f, 0x80, 0x3a, 0xf3, 0x9f, 0x92, - 0xbe, 0x55, 0xd1, 0xd2, 0xc3, 0xf1, 0xb2, 0x25, 0x0b, 0xc2, 0xe0, 0x28, 0x09, 0xe3, 0xe8, 0x39, - 0xc8, 0xa5, 0xa0, 0xeb, 0xf4, 0xbd, 0x05, 0x4a, 0x2e, 0x8b, 0x75, 0x73, 0x85, 0x4d, 0x5a, 0xad, - 0x90, 0xf2, 0xe4, 0x32, 0xbc, 0x3f, 0xba, 0xef, 0x26, 0x23, 0x10, 0x2e, 0x26, 0xa6, 0x0d, 0x6d, - 0xf9, 0xda, 0x00, 0x39, 0x8b, 0x70, 0xfa, 0x21, 0x0d, 0x98, 0x1f, 0x5f, 0x7f, 0xad, 0x78, 0x21, - 0xf3, 0xe7, 0xc6, 0xaf, 0x3f, 0x69, 0x46, 0x58, 0xb9, 0xff, 0xed, 0x2f, 0x1b, 0xfa, 0x69, 0x16, - 0xc0, 0x8d, 0x5e, 0x6f, 0x2f, 0xd6, 0xd3, 0x65, 0x3d, 0x4c, 0x0f, 0x69, 0x30, 0xa0, 0xf0, 0x39, - 0x80, 0x82, 0x74, 0x69, 0x68, 0xc7, 0x2f, 0x93, 0xf8, 0xce, 0x76, 0xbb, 0x34, 0xd4, 0x97, 0xc6, - 0xea, 0x68, 0x0a, 0xa3, 0x37, 0xce, 0xe8, 0xfb, 0x1c, 0xc3, 0xb6, 0x28, 0xe5, 0x4d, 0x05, 0xb2, - 0xde, 0xd0, 0xf3, 0x58, 0xd6, 0xdf, 0xb1, 0x0b, 0xb4, 0x08, 0x97, 0xc4, 0x04, 0x08, 0x7e, 0x05, - 0xa0, 0x7b, 0xe2, 0xf6, 0x3c, 0xd7, 0x8e, 0x1f, 0x29, 0x49, 0xfe, 0xcc, 0x95, 0xff, 0x43, 0x89, - 0xd9, 0x08, 0x9d, 0x29, 0xc9, 0x2f, 0x72, 0x22, 0x5c, 0x72, 0x27, 0x40, 0x1f, 0x67, 0xe7, 0x67, - 0x4b, 0x19, 0x5c, 0x14, 0xc7, 0xe7, 0xcb, 0xfc, 0xcb, 0x00, 0xa5, 0xc9, 0x04, 0xf0, 0x4b, 0x00, - 0x46, 0xa4, 0x57, 0x7f, 0x6a, 0xdf, 0x89, 0xeb, 0xf9, 0xf9, 0x37, 0xb3, 0xd6, 0xf1, 0xc4, 0xc1, - 0xc0, 0xa9, 0xbb, 0xcc, 0xd7, 0xaf, 0x4e, 0xfd, 0xb3, 0xca, 0x5b, 0xdd, 0x86, 0x38, 0xe9, 0x53, - 0x2e, 0x01, 0x1c, 0xe7, 0xd2, 0xf2, 0x60, 0x17, 0xfc, 0xff, 0x40, 0x9d, 0x66, 0xe2, 0xba, 0x6c, - 0x10, 0x08, 0x2f, 0xe8, 0xd8, 0x5c, 0x90, 0x50, 0x70, 0xbb, 0x1d, 0x32, 0x5f, 0x9e, 0x87, 0x8c, - 0x55, 0x1b, 0x46, 0xe6, 0x43, 0xd5, 0xef, 0x6b, 0xc3, 0x11, 0xae, 0x28, 0xff, 0x46, 0xea, 0xde, - 0x97, 0xde, 0xad, 0x90, 0xf9, 0xd6, 0xce, 0x8b, 0xd3, 0xaa, 0xf1, 0xf2, 0xb4, 0x6a, 0xfc, 0x7e, - 0x5a, 0x35, 0xbe, 0x3d, 0xab, 0xce, 0xbc, 0x3c, 0xab, 0xce, 0xbc, 0x3a, 0xab, 0xce, 0x7c, 0xfe, - 0xde, 0x58, 0xed, 0x7a, 0x12, 0xab, 0x3d, 0xe2, 0xf0, 0x64, 0xd3, 0x38, 0x5c, 0x5f, 0x6b, 0x1c, - 0x8f, 0x1e, 0xe5, 0xb2, 0x1b, 0x67, 0x4e, 0xee, 0xdf, 0xfd, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x98, - 0xe7, 0x09, 0x70, 0xb5, 0x0b, 0x00, 0x00, + // 1154 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xce, 0xc6, 0x4e, 0x1a, 0x8f, 0x53, 0xdb, 0x99, 0xa4, 0xad, 0xe3, 0x82, 0x37, 0x4c, 0x2b, + 0x70, 0x91, 0x6a, 0x2b, 0x81, 0x03, 0x2a, 0x2a, 0x52, 0x36, 0x28, 0x22, 0x20, 0x92, 0x68, 0x62, + 0xa9, 0x82, 0xcb, 0x32, 0xbb, 0x1e, 0x3b, 0x2b, 0x7b, 0x77, 0xac, 0x9d, 0x71, 0x7e, 0x14, 0xa9, + 0x17, 0x8e, 0x5c, 0xb8, 0x70, 0xe3, 0xc0, 0x0d, 0x2e, 0xfc, 0x0d, 0x5c, 0x7b, 0xec, 0xb1, 0xe2, + 0xb0, 0x42, 0xc9, 0x05, 0x71, 0xf4, 0x5f, 0x80, 0x76, 0x66, 0x76, 0xed, 0x38, 0x71, 0x43, 0x24, + 0xc4, 0x6d, 0xe7, 0xbd, 0xef, 0xfb, 0xde, 0xbc, 0xef, 0xcd, 0xce, 0x2e, 0x78, 0x8f, 0x71, 0x9f, + 0x71, 0x8f, 0x37, 0xfa, 0x21, 0x13, 0x2c, 0xa4, 0x47, 0x8d, 0xa3, 0x75, 0x87, 0x0a, 0xb2, 0x9e, + 0x06, 0xea, 0xf2, 0x01, 0x96, 0x35, 0xb0, 0x9e, 0xc6, 0x35, 0xb0, 0xb2, 0xea, 0xca, 0x94, 0x2d, + 0x13, 0x0d, 0xb5, 0x50, 0xa8, 0xca, 0x4a, 0x87, 0x75, 0x98, 0x8a, 0xc7, 0x4f, 0x3a, 0x5a, 0x55, + 0x98, 0x86, 0x43, 0x38, 0x4d, 0xcb, 0xb9, 0xcc, 0x0b, 0x74, 0xfe, 0x51, 0xba, 0x27, 0xc6, 0x7a, + 0x3e, 0x09, 0x48, 0x87, 0x86, 0x29, 0xae, 0x43, 0x03, 0x9a, 0x6e, 0xa3, 0xf2, 0x30, 0x81, 0x8a, + 0x93, 0x36, 0xa5, 0xfc, 0x6a, 0x14, 0x7a, 0x6d, 0x00, 0xd8, 0x64, 0x5d, 0x1a, 0xec, 0x13, 0x2f, + 0xdc, 0x0c, 0x1d, 0xcc, 0x06, 0x82, 0x72, 0xf8, 0x15, 0x00, 0x24, 0x74, 0xec, 0x50, 0xae, 0xca, + 0xc6, 0x5a, 0xa6, 0x96, 0xdf, 0x30, 0xeb, 0xd3, 0xfa, 0xac, 0x4b, 0x96, 0xb5, 0xfa, 0x32, 0x32, + 0x67, 0x86, 0x91, 0xb9, 0x74, 0x4a, 0xfc, 0xde, 0x13, 0x34, 0x12, 0x40, 0x38, 0x47, 0x52, 0xe9, + 0x3a, 0x58, 0x10, 0x71, 0x41, 0xdb, 0x0b, 0xca, 0xb3, 0x6b, 0x46, 0x2d, 0x67, 0x2d, 0x0f, 0x23, + 0xb3, 0xa8, 0x38, 0x49, 0x06, 0xe1, 0x5b, 0xf2, 0x71, 0x27, 0x80, 0xeb, 0x20, 0xa7, 0xa2, 0x6c, + 0x20, 0xca, 0x19, 0x49, 0x58, 0x19, 0x46, 0x66, 0x69, 0x9c, 0xc0, 0x06, 0x02, 0x61, 0x25, 0xbb, + 0x37, 0x10, 0x4f, 0xb2, 0x7f, 0xfd, 0x6c, 0x1a, 0xe8, 0x37, 0x03, 0xcc, 0xc9, 0x9a, 0x70, 0x17, + 0xcc, 0x8b, 0x90, 0xb4, 0xfe, 0x4d, 0x27, 0xcd, 0x18, 0x67, 0xdd, 0xd1, 0x9d, 0xdc, 0xd6, 0x45, + 0x24, 0x19, 0x61, 0xad, 0x02, 0x77, 0x41, 0x8e, 0x0b, 0xda, 0xb7, 0xb9, 0xf7, 0x9c, 0xea, 0x1e, + 0xd6, 0x63, 0xc6, 0x1f, 0x91, 0x79, 0x47, 0x0d, 0x90, 0xb7, 0xba, 0x75, 0x8f, 0x35, 0x7c, 0x22, + 0x0e, 0xeb, 0x3b, 0x81, 0x18, 0xed, 0x37, 0xe5, 0x21, 0xbc, 0x10, 0x3f, 0x1f, 0x78, 0xcf, 0xa9, + 0xde, 0xef, 0x8f, 0x06, 0x98, 0x93, 0xe5, 0xe1, 0x03, 0x90, 0x8d, 0xe7, 0x5b, 0x36, 0xd6, 0x8c, + 0x5a, 0xd6, 0x2a, 0x0e, 0x23, 0x33, 0xaf, 0xd8, 0x71, 0x14, 0x61, 0x99, 0xfc, 0xff, 0x7c, 0xfc, + 0xdb, 0x00, 0x45, 0xe9, 0xe3, 0x81, 0x20, 0xc2, 0xe3, 0xc2, 0x73, 0x39, 0xfc, 0x02, 0xdc, 0xea, + 0x87, 0xac, 0xed, 0x89, 0xc4, 0xd2, 0xd5, 0xba, 0x3e, 0xdd, 0xf1, 0xc9, 0x4d, 0xdd, 0xdc, 0x62, + 0x5e, 0x60, 0xdd, 0xd5, 0x66, 0x16, 0x74, 0x0f, 0x8a, 0x87, 0x70, 0xa2, 0x00, 0x1d, 0x50, 0x0a, + 0x06, 0xbe, 0x43, 0x43, 0x9b, 0xb5, 0x6d, 0x3d, 0x28, 0xd5, 0xd1, 0x47, 0xd7, 0xb9, 0x7a, 0x4f, + 0x69, 0x4e, 0xd2, 0x11, 0x2e, 0xa8, 0xd0, 0x5e, 0xbb, 0xa9, 0x46, 0xf6, 0x2e, 0x98, 0x93, 0x67, + 0xb1, 0x9c, 0x59, 0xcb, 0xd4, 0xb2, 0x56, 0x69, 0x18, 0x99, 0x8b, 0x8a, 0x2b, 0xc3, 0x08, 0xab, + 0x34, 0xfa, 0x65, 0x16, 0xe4, 0xf7, 0x19, 0xeb, 0x3d, 0xa3, 0x5e, 0xe7, 0x50, 0x70, 0xf8, 0x14, + 0xdc, 0xe6, 0x82, 0x38, 0x3d, 0x6a, 0x1f, 0xcb, 0x88, 0x9e, 0x49, 0x79, 0x18, 0x99, 0x2b, 0xc9, + 0x44, 0xc7, 0xd2, 0x08, 0x2f, 0xaa, 0xb5, 0xe2, 0xc3, 0x2d, 0x50, 0x74, 0x48, 0x8f, 0x04, 0x2e, + 0x0d, 0x13, 0x81, 0x59, 0x29, 0x50, 0x19, 0x46, 0xe6, 0x5d, 0x25, 0x30, 0x01, 0x40, 0xb8, 0x90, + 0x44, 0xb4, 0xc8, 0x1e, 0x58, 0x76, 0x59, 0xe0, 0xd2, 0x40, 0x84, 0x44, 0xd0, 0x56, 0x22, 0x94, + 0x91, 0x42, 0xd5, 0x61, 0x64, 0x56, 0x94, 0xd0, 0x15, 0x20, 0x84, 0xe1, 0x78, 0x74, 0xb4, 0xab, + 0xd8, 0xd0, 0x63, 0xc2, 0xfd, 0x44, 0x2c, 0x3b, 0xb9, 0xab, 0x09, 0x00, 0xc2, 0x85, 0x24, 0xa2, + 0x44, 0xd0, 0x4f, 0x19, 0x50, 0xd8, 0x09, 0xda, 0xcc, 0x3a, 0x8d, 0xfd, 0x6a, 0x9e, 0xf6, 0x29, + 0x7c, 0x06, 0xe6, 0x55, 0xf7, 0xd2, 0xa5, 0xfc, 0x46, 0x6d, 0xfa, 0x7b, 0x76, 0x20, 0x71, 0x31, + 0x53, 0x6a, 0x4c, 0xbc, 0x70, 0x4a, 0x05, 0x61, 0x2d, 0x07, 0x6d, 0xb0, 0x90, 0x78, 0x22, 0xfd, + 0xcb, 0x6f, 0xbc, 0x3f, 0x5d, 0xda, 0xd2, 0xc8, 0x54, 0xfc, 0x9e, 0x16, 0x2f, 0x5e, 0xf4, 0x1b, + 0xe1, 0x54, 0x14, 0x32, 0xb0, 0x38, 0xee, 0x93, 0xf4, 0x36, 0xbf, 0x51, 0x9f, 0x5e, 0x64, 0x6b, + 0x0c, 0x9d, 0x16, 0xba, 0xaf, 0x0b, 0x2d, 0x5f, 0x9e, 0x07, 0xc2, 0x17, 0x0a, 0xc4, 0x1d, 0x25, + 0x7e, 0x4a, 0xef, 0xdf, 0xd8, 0xd1, 0x96, 0x46, 0x4e, 0xeb, 0x28, 0x51, 0x42, 0x38, 0x15, 0x45, + 0x1f, 0x83, 0xc2, 0x45, 0x8f, 0xe1, 0x23, 0x30, 0x7f, 0xe1, 0x0c, 0x2f, 0x8d, 0xfc, 0x4e, 0x66, + 0xac, 0x01, 0xe8, 0x29, 0x28, 0x4d, 0xba, 0x78, 0x13, 0xfa, 0xf7, 0x06, 0x58, 0xb9, 0xca, 0xa0, + 0x1b, 0x68, 0xc0, 0xcf, 0xc0, 0x92, 0x4f, 0x4e, 0x6c, 0xe1, 0xb9, 0x5d, 0x6e, 0xbb, 0x21, 0xe3, + 0x9c, 0xb6, 0xf4, 0xbb, 0xf3, 0xd6, 0x30, 0x32, 0xcb, 0x8a, 0x75, 0x09, 0x82, 0x70, 0xd1, 0x27, + 0x27, 0xcd, 0x38, 0xb4, 0xa5, 0x23, 0x02, 0x94, 0x26, 0x0d, 0x84, 0xdf, 0x80, 0xbc, 0xaa, 0x63, + 0xfb, 0xa4, 0x9f, 0xdc, 0x61, 0x0f, 0xa6, 0x4f, 0x40, 0x9d, 0xf9, 0x2f, 0x49, 0xdf, 0xaa, 0x68, + 0xeb, 0xe1, 0xf8, 0xb6, 0xa5, 0x0a, 0xc2, 0xe0, 0x38, 0x81, 0x71, 0xf4, 0x02, 0xe4, 0x52, 0xd2, + 0x4d, 0xfa, 0xde, 0x06, 0x25, 0x97, 0xc5, 0xbe, 0xb9, 0xc2, 0x26, 0xad, 0x56, 0x48, 0x79, 0x72, + 0x19, 0xde, 0x1f, 0xdd, 0x77, 0x93, 0x08, 0x84, 0x8b, 0x49, 0x68, 0x53, 0x47, 0xbe, 0x33, 0x40, + 0xce, 0x22, 0x9c, 0x7e, 0x4a, 0x03, 0xe6, 0xc7, 0xd7, 0x5f, 0x2b, 0x7e, 0x90, 0xf5, 0x73, 0xe3, + 0xd7, 0x9f, 0x0c, 0x23, 0xac, 0xd2, 0xff, 0xf5, 0x97, 0x0d, 0xfd, 0x3a, 0x0b, 0xe0, 0x66, 0xaf, + 0xb7, 0x1f, 0xfb, 0xe9, 0xb2, 0x1e, 0xa6, 0x47, 0x34, 0x18, 0x50, 0xf8, 0x02, 0x40, 0x41, 0xba, + 0x34, 0xb4, 0xe3, 0x3f, 0x93, 0xf8, 0xce, 0x76, 0xbb, 0x34, 0xd4, 0x97, 0xc6, 0xe3, 0xd1, 0x14, + 0x46, 0xff, 0x38, 0xa3, 0xef, 0x73, 0x4c, 0xdb, 0xa6, 0x94, 0x37, 0x15, 0xc9, 0x7a, 0x47, 0xcf, + 0x63, 0x55, 0x7f, 0xc7, 0x2e, 0xc9, 0x22, 0x5c, 0x12, 0x13, 0x24, 0xf8, 0x2d, 0x80, 0xee, 0xa9, + 0xdb, 0xf3, 0x5c, 0x3b, 0xfe, 0x49, 0x49, 0xea, 0x67, 0xae, 0x7d, 0x0f, 0x25, 0x67, 0x33, 0x74, + 0xa6, 0x14, 0xbf, 0xac, 0x89, 0x70, 0xc9, 0x9d, 0x20, 0x7d, 0x9e, 0x5d, 0x98, 0x2d, 0x65, 0x70, + 0x51, 0x9c, 0x5c, 0xdc, 0xe6, 0xef, 0x06, 0x28, 0x4d, 0x16, 0x80, 0x9f, 0x00, 0x30, 0x12, 0xbd, + 0xfe, 0x53, 0x9b, 0x8d, 0xf7, 0x83, 0x73, 0x69, 0x49, 0xd8, 0x05, 0x6f, 0x1f, 0xaa, 0x13, 0x4a, + 0x5c, 0x97, 0x0d, 0x02, 0xe1, 0x05, 0x1d, 0x9b, 0x0b, 0x12, 0x0a, 0x6e, 0xb7, 0x43, 0xe6, 0xcb, + 0x19, 0x67, 0xac, 0xda, 0x30, 0x32, 0x1f, 0xaa, 0x1e, 0xde, 0x08, 0x47, 0xb8, 0xa2, 0xf2, 0x9b, + 0x69, 0xfa, 0x40, 0x66, 0xb7, 0x43, 0xe6, 0x5b, 0xbb, 0x2f, 0xcf, 0xaa, 0xc6, 0xab, 0xb3, 0xaa, + 0xf1, 0xe7, 0x59, 0xd5, 0xf8, 0xe1, 0xbc, 0x3a, 0xf3, 0xea, 0xbc, 0x3a, 0xf3, 0xfa, 0xbc, 0x3a, + 0xf3, 0xf5, 0x87, 0x1d, 0x4f, 0x1c, 0x0e, 0x9c, 0xba, 0xcb, 0xfc, 0x86, 0x76, 0xf7, 0x71, 0x8f, + 0x38, 0x3c, 0x59, 0x34, 0x8e, 0x36, 0xd6, 0x1b, 0x27, 0xa3, 0x1f, 0x6d, 0x71, 0xda, 0xa7, 0xdc, + 0x99, 0x97, 0xeb, 0x0f, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x6c, 0xbc, 0x79, 0x89, 0x0b, + 0x00, 0x00, } func (this *TokenPairArbRoutes) Equal(that interface{}) bool {