diff --git a/Dockerfile b/Dockerfile index ad386d30..8274b757 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,7 +38,7 @@ RUN LEDGER_ENABLED=false BUILD_TAGS=muslc LINK_STATICALLY=true make build \ && (file /code/build/bitsongd | grep "statically linked") # -------------------------------------------------------- -FROM alpine:3.16 +FROM alpine:3.17 COPY --from=go-builder /code/build/bitsongd /usr/bin/bitsongd diff --git a/Makefile b/Makefile index 3e2cfe54..f8e8a8d5 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,7 @@ help: APP_DIR = ./app BINDIR ?= $(GOPATH)/bin +BUILDDIR ?= $(CURDIR)/build PACKAGES_SIMTEST=$(shell go list ./... | grep '/simulation') PACKAGES_UNITTEST=$(shell go list ./... | grep -v '/simulation' | grep -v '/cli_test') @@ -40,7 +41,6 @@ COMMIT := $(shell git log -1 --format='%H') LEDGER_ENABLED ?= true SDK_PACK := $(shell go list -m github.com/cosmos/cosmos-sdk | sed 's/ /\@/g') -BUILDDIR ?= $(CURDIR)/build TENDERMINT_VERSION := $(shell go list -m github.com/cometbft/cometbft | sed 's:.* ::') # grab everything after the space in "github.com/tendermint/tendermint v0.34.7" diff --git a/app/app.go b/app/app.go index 3e92f5a5..da7b0183 100644 --- a/app/app.go +++ b/app/app.go @@ -24,8 +24,6 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/runtime" runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" - "github.com/cosmos/cosmos-sdk/server/api" - "github.com/cosmos/cosmos-sdk/server/config" "github.com/cosmos/cosmos-sdk/types/address" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/version" @@ -33,9 +31,13 @@ import ( authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" "github.com/cosmos/cosmos-sdk/x/crisis" + // testnetserver "github.com/bitsongofficial/go-bitsong/server" + "github.com/cosmos/cosmos-sdk/server/api" + "github.com/cosmos/cosmos-sdk/server/config" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + storetypes "cosmossdk.io/store/types" upgradetypes "cosmossdk.io/x/upgrade/types" - servertypes "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" sigtypes "github.com/cosmos/cosmos-sdk/types/tx/signing" txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config" @@ -47,7 +49,7 @@ import ( capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" wasmlctypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types" - "cosmossdk.io/api/cosmos/crypto/ed25519" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" "github.com/cosmos/cosmos-sdk/types/bech32" reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" @@ -61,7 +63,7 @@ import ( "github.com/cometbft/cometbft/libs/bytes" tmjson "github.com/cometbft/cometbft/libs/json" tmos "github.com/cometbft/cometbft/libs/os" - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/CosmWasm/wasmd/x/wasm" wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" @@ -70,15 +72,9 @@ import ( "github.com/bitsongofficial/go-bitsong/app/keepers" "github.com/bitsongofficial/go-bitsong/app/upgrades" - v010 "github.com/bitsongofficial/go-bitsong/app/upgrades/v010" - v011 "github.com/bitsongofficial/go-bitsong/app/upgrades/v011" - v013 "github.com/bitsongofficial/go-bitsong/app/upgrades/v013" - v014 "github.com/bitsongofficial/go-bitsong/app/upgrades/v014" - v015 "github.com/bitsongofficial/go-bitsong/app/upgrades/v015" - v016 "github.com/bitsongofficial/go-bitsong/app/upgrades/v016" - v018 "github.com/bitsongofficial/go-bitsong/app/upgrades/v018" - v020 "github.com/bitsongofficial/go-bitsong/app/upgrades/v020" + v021 "github.com/bitsongofficial/go-bitsong/app/upgrades/v021" + v022 "github.com/bitsongofficial/go-bitsong/app/upgrades/v022" // unnamed import of statik for swagger UI support // _ "github.com/bitsongofficial/go-bitsong/swagger/statik" ) @@ -90,7 +86,6 @@ var ( NodeDir = ".bitsongd" Bech32Prefix = "bitsong" EmptyWasmOpts []wasmkeeper.Option - // homePath string // If EnabledSpecificProposals is "", and this is "true", then enable all x/wasm proposals. // If EnabledSpecificProposals is "", and this is not "true", then disable all x/wasm proposals. ProposalsEnabled = "true" @@ -99,9 +94,9 @@ var ( EnableSpecificProposals = "" Upgrades = []upgrades.Upgrade{ - v010.Upgrade, v011.Upgrade, v013.Upgrade, v014.Upgrade, - v015.Upgrade, v016.Upgrade, v018.Upgrade, v020.Upgrade, - v021.Upgrade, + // v010.Upgrade, v011.Upgrade, v013.Upgrade, v014.Upgrade, + // v015.Upgrade, v016.Upgrade, v018.Upgrade, v020.Upgrade, + v021.Upgrade, v022.Upgrade, } ) @@ -176,6 +171,7 @@ var ( // capabilities aren't needed for testing. type BitsongApp struct { *baseapp.BaseApp + keepers.AppKeepers legacyAmino *codec.LegacyAmino appCodec codec.Codec @@ -187,8 +183,6 @@ type BitsongApp struct { tkeys map[string]*storetypes.TransientStoreKey memKeys map[string]*storetypes.MemoryStoreKey - AppKeepers keepers.AppKeepers - // the module manager mm *module.Manager @@ -275,13 +269,13 @@ func NewBitsongApp( wasmConfig, ibcWasmConfig, ) - app.keys = app.AppKeepers.GetKVStoreKey() + app.keys = app.GetKVStoreKey() // cosmos-sdk@v0.50: textual signature for ledger devices enabledSignModes := append(authtx.DefaultSignModes, sigtypes.SignMode_SIGN_MODE_TEXTUAL) txConfigOpts := authtx.ConfigOptions{ EnabledSignModes: enabledSignModes, - TextualCoinMetadataQueryFn: txmodule.NewBankKeeperCoinMetadataQueryFn(app.AppKeepers.BankKeeper), + TextualCoinMetadataQueryFn: txmodule.NewBankKeeperCoinMetadataQueryFn(app.BankKeeper), } txConfigWithTextual, err := authtx.NewTxConfigWithOptions( appCodec, @@ -308,7 +302,10 @@ func NewBitsongApp( app.mm = module.NewManager(appModules(app, encodingConfig, skipGenesisInvariants)...) // NOTE: upgrade module is prioritized in preblock - app.mm.SetOrderPreBlockers(upgradetypes.ModuleName) + app.mm.SetOrderPreBlockers( + upgradetypes.ModuleName, + authtypes.ModuleName, + ) // During begin block slashing happens after distr.BeginBlocker so that // there is nothing left over in the validator fee pool, so as to keep the // CanWithdrawInvariant invariant. @@ -317,7 +314,7 @@ func NewBitsongApp( app.mm.SetOrderEndBlockers(orderEndBlockers()...) app.mm.SetOrderInitGenesis(orderInitBlockers()...) - app.mm.RegisterInvariants(app.AppKeepers.CrisisKeeper) + app.mm.RegisterInvariants(app.CrisisKeeper) // upgrade handlers app.configurator = module.NewConfigurator(appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) @@ -342,22 +339,22 @@ func NewBitsongApp( // initialize stores app.MountKVStores(app.keys) - app.MountTransientStores(app.AppKeepers.GetTransientStoreKey()) - app.MountMemoryStores(app.AppKeepers.GetMemoryStoreKey()) + app.MountTransientStores(app.GetTransientStoreKey()) + app.MountMemoryStores(app.GetMemoryStoreKey()) anteHandler, err := NewAnteHandler( HandlerOptions{ HandlerOptions: ante.HandlerOptions{ - AccountKeeper: app.AppKeepers.AccountKeeper, - BankKeeper: app.AppKeepers.BankKeeper, - FeegrantKeeper: app.AppKeepers.FeeGrantKeeper, + AccountKeeper: app.AccountKeeper, + BankKeeper: app.BankKeeper, + FeegrantKeeper: app.FeeGrantKeeper, SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), SigGasConsumer: ante.DefaultSigVerificationGasConsumer, }, - SmartAccount: app.AppKeepers.SmartAccountKeeper, - GovKeeper: app.AppKeepers.GovKeeper, - IBCKeeper: app.AppKeepers.IBCKeeper, - TxCounterStoreKey: runtime.NewKVStoreService(app.AppKeepers.GetKey(wasmtypes.StoreKey)), + SmartAccount: app.SmartAccountKeeper, + GovKeeper: app.GovKeeper, + IBCKeeper: app.IBCKeeper, + TxCounterStoreKey: runtime.NewKVStoreService(app.GetKey(wasmtypes.StoreKey)), WasmConfig: wasmConfig, Cdc: appCodec, TxEncoder: app.txConfig.TxEncoder(), @@ -372,21 +369,21 @@ func NewBitsongApp( app.SetPreBlocker(app.PreBlocker) app.SetBeginBlocker(app.BeginBlocker) app.SetAnteHandler(anteHandler) - app.SetPostHandler(NewPostHandler(appCodec, app.AppKeepers.SmartAccountKeeper, app.AppKeepers.AccountKeeper, encodingConfig.TxConfig.SignModeHandler())) + app.SetPostHandler(NewPostHandler(appCodec, app.SmartAccountKeeper, app.AccountKeeper, encodingConfig.TxConfig.SignModeHandler())) app.SetEndBlocker(app.EndBlocker) app.SetPrecommiter(app.Precommitter) app.SetPrepareCheckStater(app.PrepareCheckStater) if manager := app.SnapshotManager(); manager != nil { err = manager.RegisterExtensions( - wasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), &app.AppKeepers.WasmKeeper), + wasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), &app.WasmKeeper), ) if err != nil { panic(fmt.Errorf("failed to register snapshot extension: %s", err)) } // takes care of persisting the external state from wasm code when snapshot is created err = manager.RegisterExtensions( - ibcwasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), app.AppKeepers.IBCWasmClientKeeper), + ibcwasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), app.IBCWasmClientKeeper), ) if err != nil { panic(fmt.Errorf("failed to register snapshot extension: %s", err)) @@ -397,9 +394,9 @@ func NewBitsongApp( if err := app.LoadLatestVersion(); err != nil { tmos.Exit(err.Error()) } - ctx := app.BaseApp.NewUncachedContext(true, tmproto.Header{}) + ctx := app.BaseApp.NewUncachedContext(true, cmtproto.Header{}) // Initialize pinned codes in wasmvm as they are not persisted there - if err := app.AppKeepers.WasmKeeper.InitializePinnedCodes(ctx); err != nil { + if err := app.WasmKeeper.InitializePinnedCodes(ctx); err != nil { tmos.Exit(fmt.Sprintf("failed initialize pinned codes %s", err)) } @@ -413,7 +410,7 @@ func NewBitsongApp( // that in-memory capabilities get regenerated on app restart. // Note that since this reads from the store, we can only perform it when // `loadLatest` is set to true. - app.AppKeepers.CapabilityKeeper.Seal() + app.CapabilityKeeper.Seal() } app.sm.RegisterStoreDecoders() @@ -472,7 +469,7 @@ func (app *BitsongApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil { panic(err) } - app.AppKeepers.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) + app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) return app.mm.InitGenesis(ctx, app.appCodec, genesisState) } @@ -540,7 +537,7 @@ func (app *BitsongApp) GetMemKey(storeKey string) *storetypes.MemoryStoreKey { // // NOTE: This is solely to be used for testing purposes. func (app *BitsongApp) GetSubspace(moduleName string) paramstypes.Subspace { - subspace, _ := app.AppKeepers.ParamsKeeper.GetSubspace(moduleName) + subspace, _ := app.ParamsKeeper.GetSubspace(moduleName) return subspace } @@ -597,12 +594,12 @@ func (app *BitsongApp) SimulationManager() *module.SimulationManager { } func (app *BitsongApp) setupUpgradeStoreLoaders() { - upgradeInfo, err := app.AppKeepers.UpgradeKeeper.ReadUpgradeInfoFromDisk() + upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() if err != nil { panic(fmt.Sprintf("failed to read upgrade info from disk %s", err)) } - if app.AppKeepers.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { + if app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { return } @@ -618,7 +615,7 @@ func (app *BitsongApp) setupUpgradeStoreLoaders() { func (app *BitsongApp) setupUpgradeHandlers(cfg module.Configurator) { for _, upgrade := range Upgrades { - app.AppKeepers.UpgradeKeeper.SetUpgradeHandler( + app.UpgradeKeeper.SetUpgradeHandler( upgrade.UpgradeName, upgrade.CreateUpgradeHandler( app.mm, @@ -658,9 +655,10 @@ func getReflectionService() *runtimeservices.ReflectionService { } // source: https://github.com/osmosis-labs/osmosis/blob/7b1a78d397b632247fe83f51867f319adf3a858c/app/app.go#L786 -func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newValPubKey crypto.PubKey, newOperatorAddress, upgradeToTrigger string) *BitsongApp { +// one-liner: cd ../bitsong-snapshots && bitsongd comet unsafe-reset-all && cp ~/.bitsongd/data/priv_validator_state.json ~/.bitsongd/priv_validator_state.json && lz4 -c -d .tar.lz4 | tar -x -C $HOME/.bitsongd && cp ~/.bitsongd/priv_validator_state.json ~/.bitsongd/data/priv_validator_state.json && cd ../go-bitsong && make install && bitsongd in-place-testnet test1 bitsong1mt3wj088jvurp3vlh2yfar6vqrqp0llnsj8lar bitsongvaloper1qxw4fjged2xve8ez7nu779tm8ejw92rv0vcuqr +func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newValPubKey crypto.PubKey, newOperatorAddress, upgradeToTrigger, brokenVals string) *BitsongApp { // newValsPower []testnetserver.ValidatorInfo - ctx := app.BaseApp.NewUncachedContext(true, tmproto.Header{}) + ctx := app.BaseApp.NewUncachedContext(true, cmtproto.Header{}) pubkey := &ed25519.PubKey{Key: newValPubKey.Bytes()} pubkeyAny, err := types.NewAnyWithValue(pubkey) if err != nil { @@ -668,7 +666,27 @@ func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newVal } // STAKING + brokeValAddr, err := sdk.ValAddressFromBech32(brokenVals) + if err != nil { + tmos.Exit(err.Error()) + } + retainedValidator, err := app.StakingKeeper.GetValidator(ctx, brokeValAddr) + if err != nil { + tmos.Exit(err.Error()) + } + fmt.Printf("retainedValidator: %v\n", retainedValidator) + + retainedValDels, err := app.StakingKeeper.GetValidatorDelegations(ctx, brokeValAddr) + if err != nil { + tmos.Exit(err.Error()) + } + fmt.Printf("retainedValDels: %v\n", retainedValDels) + // run patch logic prior to resett app state. simulates upgradehandler logic + err = v022.CustomV022PatchLogic(ctx, &app.AppKeepers, true) + if err != nil { + panic(err) + } // Create Validator struct for our new validator. _, bz, err := bech32.DecodeAndConvert(newOperatorAddress) if err != nil { @@ -701,7 +719,7 @@ func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newVal // Remove all validators from power store stakingKey := app.GetKey(stakingtypes.ModuleName) stakingStore := ctx.KVStore(stakingKey) - iterator, err := app.AppKeepers.StakingKeeper.ValidatorsPowerStoreIterator(ctx) + iterator, err := app.StakingKeeper.ValidatorsPowerStoreIterator(ctx) if err != nil { tmos.Exit(err.Error()) } @@ -711,7 +729,7 @@ func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newVal iterator.Close() // Remove all valdiators from last validators store - iterator, err = app.AppKeepers.StakingKeeper.LastValidatorsIterator(ctx) + iterator, err = app.StakingKeeper.LastValidatorsIterator(ctx) if err != nil { tmos.Exit(err.Error()) } @@ -720,6 +738,7 @@ func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newVal } iterator.Close() + // TODO: retain validator from store // Remove all validators from validators store iterator = storetypes.KVStorePrefixIterator(stakingStore, stakingtypes.ValidatorsKey) for ; iterator.Valid(); iterator.Next() { @@ -735,50 +754,61 @@ func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newVal iterator.Close() // Add our validator to power and last validators store - err = app.AppKeepers.StakingKeeper.SetValidator(ctx, newVal) + err = app.StakingKeeper.SetValidator(ctx, newVal) + if err != nil { + tmos.Exit(err.Error()) + } + // Add retainedValidator to power and last validators store + err = app.StakingKeeper.SetValidator(ctx, retainedValidator) if err != nil { tmos.Exit(err.Error()) } - err = app.AppKeepers.StakingKeeper.SetValidatorByConsAddr(ctx, newVal) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, newVal) if err != nil { tmos.Exit(err.Error()) } - err = app.AppKeepers.StakingKeeper.SetValidatorByPowerIndex(ctx, newVal) + err = app.StakingKeeper.SetValidatorByConsAddr(ctx, retainedValidator) if err != nil { tmos.Exit(err.Error()) } + + err = app.StakingKeeper.SetValidatorByPowerIndex(ctx, newVal) + if err != nil { + tmos.Exit(err.Error()) + } + valAddr, err := sdk.ValAddressFromBech32(newVal.GetOperator()) if err != nil { tmos.Exit(err.Error()) } - err = app.AppKeepers.StakingKeeper.SetLastValidatorPower(ctx, valAddr, 0) + + err = app.StakingKeeper.SetLastValidatorPower(ctx, valAddr, 1) if err != nil { tmos.Exit(err.Error()) } - if err := app.AppKeepers.StakingKeeper.Hooks().AfterValidatorCreated(ctx, valAddr); err != nil { + + if err := app.StakingKeeper.Hooks().AfterValidatorCreated(ctx, valAddr); err != nil { panic(err) } - // DISTRIBUTION - // Initialize records for this validator across all distribution stores // Initialize records for this validator across all distribution stores valAddr, err = sdk.ValAddressFromBech32(newVal.GetOperator()) if err != nil { tmos.Exit(err.Error()) } - err = app.AppKeepers.DistrKeeper.SetValidatorHistoricalRewards(ctx, valAddr, 0, distrtypes.NewValidatorHistoricalRewards(sdk.DecCoins{}, 1)) + err = app.DistrKeeper.SetValidatorHistoricalRewards(ctx, valAddr, 0, distrtypes.NewValidatorHistoricalRewards(sdk.DecCoins{}, 1)) if err != nil { tmos.Exit(err.Error()) } - err = app.AppKeepers.DistrKeeper.SetValidatorCurrentRewards(ctx, valAddr, distrtypes.NewValidatorCurrentRewards(sdk.DecCoins{}, 1)) + err = app.DistrKeeper.SetValidatorCurrentRewards(ctx, valAddr, distrtypes.NewValidatorCurrentRewards(sdk.DecCoins{}, 1)) if err != nil { tmos.Exit(err.Error()) } - err = app.AppKeepers.DistrKeeper.SetValidatorAccumulatedCommission(ctx, valAddr, distrtypes.InitialValidatorAccumulatedCommission()) + err = app.DistrKeeper.SetValidatorAccumulatedCommission(ctx, valAddr, distrtypes.InitialValidatorAccumulatedCommission()) if err != nil { tmos.Exit(err.Error()) } - err = app.AppKeepers.DistrKeeper.SetValidatorOutstandingRewards(ctx, valAddr, distrtypes.ValidatorOutstandingRewards{Rewards: sdk.DecCoins{}}) + err = app.DistrKeeper.SetValidatorOutstandingRewards(ctx, valAddr, distrtypes.ValidatorOutstandingRewards{Rewards: sdk.DecCoins{}}) if err != nil { tmos.Exit(err.Error()) } @@ -791,21 +821,15 @@ func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newVal StartHeight: app.LastBlockHeight() - 1, Tombstoned: false, } - err = app.AppKeepers.SlashingKeeper.SetValidatorSigningInfo(ctx, newConsAddr, newValidatorSigningInfo) + err = app.SlashingKeeper.SetValidatorSigningInfo(ctx, newConsAddr, newValidatorSigningInfo) if err != nil { tmos.Exit(err.Error()) } - // - // Optional Changes: - // - - // GOV - newExpeditedVotingPeriod := time.Minute newVotingPeriod := time.Minute * 2 - govParams, err := app.AppKeepers.GovKeeper.Params.Get(ctx) + govParams, err := app.GovKeeper.Params.Get(ctx) if err != nil { tmos.Exit(err.Error()) } @@ -814,7 +838,7 @@ func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newVal govParams.VotingPeriod = &newVotingPeriod govParams.MinDeposit = sdk.NewCoins(sdk.NewInt64Coin("ubtsg", 100000000)) govParams.ExpeditedMinDeposit = sdk.NewCoins(sdk.NewInt64Coin("ubtsg", 150000000)) - err = app.AppKeepers.GovKeeper.Params.Set(ctx, govParams) + err = app.GovKeeper.Params.Set(ctx, govParams) if err != nil { tmos.Exit(err.Error()) } @@ -832,7 +856,7 @@ func InitBitsongAppForTestnet(app *BitsongApp, newValAddr bytes.HexBytes, newVal Name: upgradeToTrigger, Height: app.LastBlockHeight() + 10, } - err = app.AppKeepers.UpgradeKeeper.ScheduleUpgrade(ctx, upgradePlan) + err = app.UpgradeKeeper.ScheduleUpgrade(ctx, upgradePlan) if err != nil { panic(err) } diff --git a/app/export.go b/app/export.go index d0d96d23..c9e90057 100644 --- a/app/export.go +++ b/app/export.go @@ -37,7 +37,7 @@ func (app *BitsongApp) ExportAppStateAndValidators( return servertypes.ExportedApp{}, err } - validators, err := staking.WriteValidators(ctx, app.AppKeepers.StakingKeeper) + validators, err := staking.WriteValidators(ctx, app.StakingKeeper) if err != nil { return servertypes.ExportedApp{}, err } @@ -72,13 +72,13 @@ func (app *BitsongApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr } /* Just to be safe, assert the invariants on current state. */ - app.AppKeepers.CrisisKeeper.AssertInvariants(ctx) + app.CrisisKeeper.AssertInvariants(ctx) /* Handle fee distribution state. */ // withdraw all validator commission - app.AppKeepers.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { - _, err := app.AppKeepers.DistrKeeper.WithdrawValidatorCommission(ctx, sdk.ValAddress(val.GetOperator())) + app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + _, err := app.DistrKeeper.WithdrawValidatorCommission(ctx, sdk.ValAddress(val.GetOperator())) if err != nil { panic(err) } @@ -86,7 +86,7 @@ func (app *BitsongApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr }) // withdraw all delegator rewards - dels, err := app.AppKeepers.StakingKeeper.GetAllDelegations(ctx) + dels, err := app.StakingKeeper.GetAllDelegations(ctx) if err != nil { panic(err) } @@ -100,34 +100,34 @@ func (app *BitsongApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr if err != nil { panic(err) } - _, _ = app.AppKeepers.DistrKeeper.WithdrawDelegationRewards(ctx, delAddr, valAddr) + _, _ = app.DistrKeeper.WithdrawDelegationRewards(ctx, delAddr, valAddr) } // clear validator slash events - app.AppKeepers.DistrKeeper.DeleteAllValidatorSlashEvents(ctx) + app.DistrKeeper.DeleteAllValidatorSlashEvents(ctx) // clear validator historical rewards - app.AppKeepers.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx) + app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx) // set context height to zero height := ctx.BlockHeight() ctx = ctx.WithBlockHeight(0) // reinitialize all validators - app.AppKeepers.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { // donate any unwithdrawn outstanding reward fraction tokens to the community pool - scraps, err := app.AppKeepers.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, sdk.ValAddress(val.GetOperator())) + scraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, sdk.ValAddress(val.GetOperator())) if err != nil { panic(err) } - feePool, err := app.AppKeepers.DistrKeeper.FeePool.Get(ctx) + feePool, err := app.DistrKeeper.FeePool.Get(ctx) if err != nil { panic(err) } feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) - app.AppKeepers.DistrKeeper.FeePool.Set(ctx, feePool) + app.DistrKeeper.FeePool.Set(ctx, feePool) - app.AppKeepers.DistrKeeper.Hooks().AfterValidatorCreated(ctx, sdk.ValAddress(val.GetOperator())) + app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, sdk.ValAddress(val.GetOperator())) return false }) @@ -141,8 +141,8 @@ func (app *BitsongApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr if err != nil { panic(err) } - app.AppKeepers.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr) - app.AppKeepers.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr) + app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr) + app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr) } // reset context height @@ -151,20 +151,20 @@ func (app *BitsongApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr /* Handle staking state. */ // iterate through redelegations, reset creation height - app.AppKeepers.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) { + app.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) { for i := range red.Entries { red.Entries[i].CreationHeight = 0 } - app.AppKeepers.StakingKeeper.SetRedelegation(ctx, red) + app.StakingKeeper.SetRedelegation(ctx, red) return false }) // iterate through unbonding delegations, reset creation height - app.AppKeepers.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { + app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { for i := range ubd.Entries { ubd.Entries[i].CreationHeight = 0 } - app.AppKeepers.StakingKeeper.SetUnbondingDelegation(ctx, ubd) + app.StakingKeeper.SetUnbondingDelegation(ctx, ubd) return false }) @@ -176,7 +176,7 @@ func (app *BitsongApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr for ; iter.Valid(); iter.Next() { addr := sdk.ValAddress(iter.Key()[1:]) - validator, err := app.AppKeepers.StakingKeeper.GetValidator(ctx, addr) + validator, err := app.StakingKeeper.GetValidator(ctx, addr) if err != nil { panic("expected validator, not found") } @@ -186,24 +186,24 @@ func (app *BitsongApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr validator.Jailed = true } - app.AppKeepers.StakingKeeper.SetValidator(ctx, validator) + app.StakingKeeper.SetValidator(ctx, validator) counter++ } iter.Close() - if _, err := app.AppKeepers.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx); err != nil { + if _, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx); err != nil { panic(err) } /* Handle slashing state. */ // reset start height on signing infos - app.AppKeepers.SlashingKeeper.IterateValidatorSigningInfos( + app.SlashingKeeper.IterateValidatorSigningInfos( ctx, func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) { info.StartHeight = 0 - app.AppKeepers.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info) + app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info) return false }, ) diff --git a/app/export_custom.go b/app/export_custom.go new file mode 100644 index 00000000..ebf52f9d --- /dev/null +++ b/app/export_custom.go @@ -0,0 +1,250 @@ +package app + +// to run: bitsongd custom-export --output-document v0.21.5-export.json +// defaults to for zero height +import ( + "encoding/json" + "fmt" + "log" + + storetypes "cosmossdk.io/store/types" + v022 "github.com/bitsongofficial/go-bitsong/app/upgrades/v022" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + sdk "github.com/cosmos/cosmos-sdk/types" + + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" + "github.com/cosmos/cosmos-sdk/x/staking" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +// - validator slash event: +// - historical reference: +// +// x/slashing: +// - validator signing info: +// - historical reference: +func (app *BitsongApp) CustomExportAppStateAndValidators( + + forZeroHeight bool, jailAllowedAddrs []string, + +) (servertypes.ExportedApp, error) { + // as if they could withdraw from the start of the next block + ctx := app.NewContext(true) + + // We export at last height + 1, because that's the height at which + // Tendermint will start InitChain. + height := app.LastBlockHeight() + 1 + if forZeroHeight { + height = 0 + app.customTestUpgradeHandlerLogicViaExport(ctx, jailAllowedAddrs) + } + + genState, _ := app.mm.ExportGenesis(ctx, app.appCodec) + appState, err := json.MarshalIndent(genState, "", " ") + if err != nil { + return servertypes.ExportedApp{}, err + } + + validators, err := staking.WriteValidators(ctx, app.StakingKeeper) + if err != nil { + return servertypes.ExportedApp{}, err + } + return servertypes.ExportedApp{ + AppState: appState, + Validators: validators, + Height: height, + ConsensusParams: app.BaseApp.GetConsensusParams(ctx), + }, nil +} + +// prepare for fresh start at zero height. prints logs for debugging into json file. +func (app *BitsongApp) customTestUpgradeHandlerLogicViaExport(ctx sdk.Context, jailAllowedAddrs []string) { + applyAllowedAddrs := false + + // check if there is a allowed address list + if len(jailAllowedAddrs) > 0 { + applyAllowedAddrs = true + } + + allowedAddrsMap := make(map[string]bool) + for _, addr := range jailAllowedAddrs { + _, err := sdk.ValAddressFromBech32(addr) + if err != nil { + log.Fatal(err) + } + allowedAddrsMap[addr] = true + + } + // debug upgradeHandler + err := v022.CustomV022PatchLogic(ctx, &app.AppKeepers, true) + if err != nil { + panic(err) + } + + // simapp export for 0 height state logic: + // withdraw all validator commission + err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) + if err != nil { + panic(err) + } + _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, valBz) + return false + }) + if err != nil { + panic(err) + } + + // /* Just to be safe, assert the invariants on current state. */ + app.CrisisKeeper.AssertInvariants(ctx) + + app.StakingKeeper.IterateAllDelegations(ctx, func(del stakingtypes.Delegation) (stop bool) { + valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress) + if err != nil { + panic(err) + } + // delAddr := sdk.AccAddress(del.DelegatorAddress) + val, err := app.StakingKeeper.GetValidator(ctx, valAddr) + if err != nil { + panic(err) + } + endingPeriod, err := app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + if err != nil { + panic(err) + } + _, err = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + if err != nil { + panic(err) + } + + return false + + }) + + // withdraw all delegator rewards + dels, err := app.StakingKeeper.GetAllDelegations(ctx) + if err != nil { + panic(err) + } + + // clear validator slash events + app.DistrKeeper.DeleteAllValidatorSlashEvents(ctx) + + // clear validator historical rewards + app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx) + + // reinitialize all validators + err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) + if err != nil { + panic(err) + } + // donate any unwithdrawn outstanding reward fraction tokens to the community pool + scraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz) + if err != nil { + panic(err) + } + feePool, err := app.DistrKeeper.FeePool.Get(ctx) + if err != nil { + panic(err) + } + feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) + if err := app.DistrKeeper.FeePool.Set(ctx, feePool); err != nil { + panic(err) + } + + if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, valBz); err != nil { + panic(err) + } + return false + }) + if err != nil { + panic(err) + } + + // reinitialize all delegations + for _, del := range dels { + valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress) + if err != nil { + panic(err) + } + delAddr := sdk.MustAccAddressFromBech32(del.DelegatorAddress) + + if err := app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr); err != nil { + // never called as BeforeDelegationCreated always returns nil + panic(fmt.Errorf("error while incrementing period: %w", err)) + } + + if err := app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr); err != nil { + // never called as AfterDelegationModified always returns nil + panic(fmt.Errorf("error while creating a new delegation period record: %w", err)) + } + } + // iterate through redelegations, reset creation height + app.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) { + for i := range red.Entries { + red.Entries[i].CreationHeight = 0 + } + err = app.StakingKeeper.SetRedelegation(ctx, red) + if err != nil { + panic(err) + } + return false + }) + // iterate through unbonding delegations, reset creation height + app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { + for i := range ubd.Entries { + ubd.Entries[i].CreationHeight = 0 + } + err = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd) + if err != nil { + panic(err) + } + return false + }) + + // Iterate through validators by power descending, reset bond heights, and + // update bond intra-tx counters. + store := ctx.KVStore(app.GetKey(stakingtypes.StoreKey)) + iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) + counter := int16(0) + + for ; iter.Valid(); iter.Next() { + addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key())) + validator, err := app.StakingKeeper.GetValidator(ctx, addr) + if err != nil { + panic("expected validator, not found") + } + + validator.UnbondingHeight = 0 + if applyAllowedAddrs && !allowedAddrsMap[addr.String()] { + validator.Jailed = true + } + + app.StakingKeeper.SetValidator(ctx, validator) + counter++ + } + + if err := iter.Close(); err != nil { + app.Logger().Error("error while closing the key-value store reverse prefix iterator: ", err) + return + } + + _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + if err != nil { + log.Fatal(err) + } + + /* Handle slashing state. */ + + // reset start height on signing infos + app.SlashingKeeper.IterateValidatorSigningInfos( + ctx, + func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) { + info.StartHeight = 0 + app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info) + return false + }, + ) + +} diff --git a/app/helpers/mock.go b/app/helpers/mock.go index e4d76b43..fbbbcb57 100644 --- a/app/helpers/mock.go +++ b/app/helpers/mock.go @@ -24,7 +24,7 @@ func NewPV() PV { // GetPubKey implements PrivValidator interface func (pv PV) GetPubKey() (crypto.PubKey, error) { - return cryptocodec.ToTmPubKeyInterface(pv.PrivKey.PubKey()) + return cryptocodec.ToCmtPubKeyInterface(pv.PrivKey.PubKey()) } // SignVote implements PrivValidator interface diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index 785660fe..68ae25c2 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -44,8 +44,8 @@ import ( distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - cadancekeeper "github.com/bitsongofficial/go-bitsong/x/cadance/keeper" - cadancetypes "github.com/bitsongofficial/go-bitsong/x/cadance/types" + cadencekeeper "github.com/bitsongofficial/go-bitsong/x/cadence/keeper" + cadencetypes "github.com/bitsongofficial/go-bitsong/x/cadence/types" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" @@ -54,6 +54,8 @@ import ( paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" + protocolpoolkeeper "github.com/cosmos/cosmos-sdk/x/protocolpool/keeper" + protocolpooltypes "github.com/cosmos/cosmos-sdk/x/protocolpool/types" slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -103,15 +105,17 @@ var ( // module account permissions var maccPerms = map[string][]string{ - authtypes.FeeCollectorName: nil, - distrtypes.ModuleName: nil, - minttypes.ModuleName: {authtypes.Minter}, - stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, - stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - govtypes.ModuleName: {authtypes.Burner}, - ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - fantokentypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - wasmtypes.ModuleName: {authtypes.Burner}, + authtypes.FeeCollectorName: nil, + distrtypes.ModuleName: nil, + minttypes.ModuleName: {authtypes.Minter}, + stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + govtypes.ModuleName: {authtypes.Burner}, + ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + fantokentypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + wasmtypes.ModuleName: {authtypes.Burner}, + protocolpooltypes.ModuleName: nil, + protocolpooltypes.ProtocolPoolEscrowAccount: nil, } type AppKeepers struct { @@ -146,7 +150,7 @@ type AppKeepers struct { EvidenceKeeper evidencekeeper.Keeper FanTokenKeeper fantokenkeeper.Keeper WasmKeeper wasmkeeper.Keeper - CadanceKeeper cadancekeeper.Keeper + CadenceKeeper cadencekeeper.Keeper IBCFeeKeeper ibcfeekeeper.Keeper IBCWasmClientKeeper *ibcwasmkeeper.Keeper FeeGrantKeeper feegrantkeeper.Keeper @@ -154,6 +158,7 @@ type AppKeepers struct { ContractKeeper *wasmkeeper.PermissionedKeeper SmartAccountKeeper *smartaccountkeeper.Keeper AuthenticatorManager *authenticator.AuthenticatorManager + ProtocolPoolKeeper protocolpoolkeeper.Keeper // Middleware wrapper Ics20WasmHooks *ibchooks.WasmHooks @@ -224,8 +229,14 @@ func NewAppKeepers( // add keepers accountKeeper := authkeeper.NewAccountKeeper( - appCodec, runtime.NewKVStoreService(appKeepers.keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), Bech32Prefix, + appCodec, + runtime.NewKVStoreService(appKeepers.keys[authtypes.StoreKey]), + authtypes.ProtoBaseAccount, + maccPerms, + addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), + Bech32Prefix, govModAddress, + authkeeper.WithUnorderedTransactions(false), ) appKeepers.AccountKeeper = &accountKeeper @@ -269,20 +280,33 @@ func NewAppKeepers( addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), ) + // TODO: implement custom mint function to split inflation rewards to incentivize cdn: + appKeepers.ProtocolPoolKeeper = protocolpoolkeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(keys[protocolpooltypes.StoreKey]), + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + appKeepers.DistrKeeper = distrkeeper.NewKeeper( - appCodec, runtime.NewKVStoreService(appKeepers.keys[distrtypes.StoreKey]), appKeepers.AccountKeeper, appKeepers.BankKeeper, - stakingKeeper, authtypes.FeeCollectorName, govModAddress, + appCodec, + runtime.NewKVStoreService(appKeepers.keys[distrtypes.StoreKey]), appKeepers.AccountKeeper, appKeepers.BankKeeper, + stakingKeeper, authtypes.FeeCollectorName, govModAddress, distrkeeper.WithExternalCommunityPool(appKeepers.ProtocolPoolKeeper), ) appKeepers.SlashingKeeper = slashingkeeper.NewKeeper( appCodec, cdc, runtime.NewKVStoreService(appKeepers.keys[slashingtypes.StoreKey]), stakingKeeper, govModAddress, ) + // https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/UPGRADING.md?plain=1#L192 appKeepers.MintKeeper = mintkeeper.NewKeeper( appCodec, runtime.NewKVStoreService(appKeepers.keys[minttypes.StoreKey]), stakingKeeper, appKeepers.AccountKeeper, appKeepers.BankKeeper, authtypes.FeeCollectorName, govModAddress, + // mintkeeper.WithMintFn(myCustomMintFunc), // Use custom minting function ) - // register the staking hooks + + // register the staking hookshttps://github.com/cosmos/cosmos-sdk/blob/v0.53.0/UPGRADING.md?plain=1#L192 // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks stakingKeeper.SetHooks( stakingtypes.NewMultiStakingHooks(appKeepers.DistrKeeper.Hooks(), appKeepers.SlashingKeeper.Hooks()), @@ -456,8 +480,8 @@ func NewAppKeepers( appKeepers.ContractKeeper = wasmkeeper.NewDefaultPermissionKeeper(&appKeepers.WasmKeeper) appKeepers.Ics20WasmHooks.ContractKeeper = &appKeepers.WasmKeeper - appKeepers.CadanceKeeper = cadancekeeper.NewKeeper( - appKeepers.keys[cadancetypes.StoreKey], + appKeepers.CadenceKeeper = cadencekeeper.NewKeeper( + appKeepers.keys[cadencetypes.StoreKey], appCodec, appKeepers.WasmKeeper, appKeepers.ContractKeeper, diff --git a/app/keepers/keys.go b/app/keepers/keys.go index 546d0ce3..38128e93 100644 --- a/app/keepers/keys.go +++ b/app/keepers/keys.go @@ -5,11 +5,12 @@ import ( "cosmossdk.io/x/feegrant" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - cadancetypes "github.com/bitsongofficial/go-bitsong/x/cadance/types" + cadencetypes "github.com/bitsongofficial/go-bitsong/x/cadence/types" smartaccounttypes "github.com/bitsongofficial/go-bitsong/x/smart-account/types" authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" + protocolpooltypes "github.com/cosmos/cosmos-sdk/x/protocolpool/types" packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" evidencetypes "cosmossdk.io/x/evidence/types" @@ -56,8 +57,9 @@ func (appKeepers *AppKeepers) GenerateKeys() { wasmtypes.StoreKey, icqtypes.StoreKey, fantokentypes.StoreKey, - cadancetypes.StoreKey, + cadencetypes.StoreKey, smartaccounttypes.StoreKey, + protocolpooltypes.StoreKey, ) appKeepers.tkeys = storetypes.NewTransientStoreKeys(paramstypes.TStoreKey) diff --git a/app/modules.go b/app/modules.go index 276f4339..9d368444 100644 --- a/app/modules.go +++ b/app/modules.go @@ -9,11 +9,11 @@ import ( upgradetypes "cosmossdk.io/x/upgrade/types" "github.com/CosmWasm/wasmd/x/wasm" encparams "github.com/bitsongofficial/go-bitsong/app/params" - "github.com/bitsongofficial/go-bitsong/x/cadance" + "github.com/bitsongofficial/go-bitsong/x/cadence" "github.com/cosmos/cosmos-sdk/client" addresscodec "github.com/cosmos/cosmos-sdk/codec/address" - cadancetypes "github.com/bitsongofficial/go-bitsong/x/cadance/types" + cadencetypes "github.com/bitsongofficial/go-bitsong/x/cadence/types" "github.com/bitsongofficial/go-bitsong/x/fantoken" fantokenclient "github.com/bitsongofficial/go-bitsong/x/fantoken/client" fantokentypes "github.com/bitsongofficial/go-bitsong/x/fantoken/types" @@ -44,6 +44,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/params" paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/cosmos/cosmos-sdk/x/protocolpool" + protocolpooltypes "github.com/cosmos/cosmos-sdk/x/protocolpool/types" "github.com/cosmos/cosmos-sdk/x/slashing" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" "github.com/cosmos/cosmos-sdk/x/staking" @@ -103,9 +105,10 @@ var AppModuleBasics = module.NewBasicManager( wasm.AppModuleBasic{}, icq.AppModuleBasic{}, ibc_hooks.AppModuleBasic{}, - cadance.AppModuleBasic{}, + cadence.AppModuleBasic{}, ibcwasm.AppModuleBasic{}, smartaccount.AppModuleBasic{}, + protocolpool.AppModule{}, ) func appModules( @@ -117,45 +120,47 @@ func appModules( return []module.AppModule{ genutil.NewAppModule( - app.AppKeepers.AccountKeeper, app.AppKeepers.StakingKeeper, app.BaseApp, + app.AccountKeeper, app.StakingKeeper, app.BaseApp, encodingConfig.TxConfig, ), - auth.NewAppModule(appCodec, *app.AppKeepers.AccountKeeper, nil, app.GetSubspace(authtypes.ModuleName)), - vesting.NewAppModule(*app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), - bank.NewAppModule(appCodec, app.AppKeepers.BankKeeper, app.AppKeepers.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), - capability.NewAppModule(appCodec, *app.AppKeepers.CapabilityKeeper, false), - gov.NewAppModule(appCodec, &app.AppKeepers.GovKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.GetSubspace(govtypes.ModuleName)), - mint.NewAppModule(appCodec, app.AppKeepers.MintKeeper, app.AppKeepers.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), - slashing.NewAppModule(appCodec, app.AppKeepers.SlashingKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry), - distr.NewAppModule(appCodec, app.AppKeepers.DistrKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), - staking.NewAppModule(appCodec, app.AppKeepers.StakingKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), - upgrade.NewAppModule(app.AppKeepers.UpgradeKeeper, addresscodec.NewBech32Codec(encparams.Bech32PrefixAccAddr)), - wasm.NewAppModule(appCodec, &app.AppKeepers.WasmKeeper, app.AppKeepers.StakingKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasmtypes.ModuleName)), - evidence.NewAppModule(app.AppKeepers.EvidenceKeeper), - feegrantmodule.NewAppModule(appCodec, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.FeeGrantKeeper, app.interfaceRegistry), - authzmodule.NewAppModule(appCodec, app.AppKeepers.AuthzKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.interfaceRegistry), - fantoken.NewAppModule(appCodec, app.AppKeepers.FanTokenKeeper, app.AppKeepers.BankKeeper), - ibc.NewAppModule(app.AppKeepers.IBCKeeper), - ibcwasm.NewAppModule(*app.AppKeepers.IBCWasmClientKeeper), - params.NewAppModule(app.AppKeepers.ParamsKeeper), - consensus.NewAppModule(appCodec, app.AppKeepers.ConsensusParamsKeeper), - packetforward.NewAppModule(app.AppKeepers.PacketForwardKeeper, app.GetSubspace(packetforwardtypes.ModuleName)), - transfer.NewAppModule(app.AppKeepers.TransferKeeper), - ibc_hooks.NewAppModule(*app.AppKeepers.AccountKeeper), - icq.NewAppModule(*app.AppKeepers.ICQKeeper, app.GetSubspace(icqtypes.ModuleName)), - cadance.NewAppModule(appCodec, app.AppKeepers.CadanceKeeper), - smartaccount.NewAppModule(appCodec, *app.AppKeepers.SmartAccountKeeper), - crisis.NewAppModule(app.AppKeepers.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), // always be last to make sure that it checks for all invariants and not only part of them + auth.NewAppModule(appCodec, *app.AccountKeeper, nil, app.GetSubspace(authtypes.ModuleName)), + vesting.NewAppModule(*app.AccountKeeper, app.BankKeeper), + bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), + capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), + gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), + mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), + slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry), + distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), + staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), + upgrade.NewAppModule(app.UpgradeKeeper, addresscodec.NewBech32Codec(encparams.Bech32PrefixAccAddr)), + wasm.NewAppModule(appCodec, &app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasmtypes.ModuleName)), + evidence.NewAppModule(app.EvidenceKeeper), + feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), + authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), + fantoken.NewAppModule(appCodec, app.FanTokenKeeper, app.BankKeeper), + ibc.NewAppModule(app.IBCKeeper), + ibcwasm.NewAppModule(*app.IBCWasmClientKeeper), + params.NewAppModule(app.ParamsKeeper), + consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), + packetforward.NewAppModule(app.PacketForwardKeeper, app.GetSubspace(packetforwardtypes.ModuleName)), + transfer.NewAppModule(app.TransferKeeper), + ibc_hooks.NewAppModule(*app.AccountKeeper), + icq.NewAppModule(*app.ICQKeeper, app.GetSubspace(icqtypes.ModuleName)), + cadence.NewAppModule(appCodec, app.CadenceKeeper), + protocolpool.NewAppModule(app.ProtocolPoolKeeper, app.AccountKeeper, app.BankKeeper), + smartaccount.NewAppModule(appCodec, *app.SmartAccountKeeper), + crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), // always be last to make sure that it checks for all invariants and not only part of them } } func orderBeginBlockers() []string { return []string{ capabilitytypes.ModuleName, minttypes.ModuleName, authtypes.ModuleName, - banktypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, govtypes.ModuleName, crisistypes.ModuleName, + banktypes.ModuleName, distrtypes.ModuleName, protocolpooltypes.ModuleName, slashingtypes.ModuleName, govtypes.ModuleName, crisistypes.ModuleName, stakingtypes.ModuleName, ibctransfertypes.ModuleName, ibcexported.ModuleName, packetforwardtypes.ModuleName, icqtypes.ModuleName, authz.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, wasmtypes.ModuleName, - feegrant.ModuleName, paramstypes.ModuleName, vestingtypes.ModuleName, cadancetypes.ModuleName, ibchookstypes.ModuleName, ibcwasmtypes.ModuleName, fantokentypes.ModuleName, + feegrant.ModuleName, paramstypes.ModuleName, vestingtypes.ModuleName, cadencetypes.ModuleName, + ibchookstypes.ModuleName, ibcwasmtypes.ModuleName, fantokentypes.ModuleName, } } @@ -163,8 +168,10 @@ func orderEndBlockers() []string { return []string{ crisistypes.ModuleName, govtypes.ModuleName, stakingtypes.ModuleName, ibctransfertypes.ModuleName, ibcexported.ModuleName, packetforwardtypes.ModuleName, icqtypes.ModuleName, feegrant.ModuleName, authz.ModuleName, capabilitytypes.ModuleName, authtypes.ModuleName, + protocolpooltypes.ModuleName, // must be before bank banktypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, minttypes.ModuleName, genutiltypes.ModuleName, wasmtypes.ModuleName, - evidencetypes.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName, cadancetypes.ModuleName, ibchookstypes.ModuleName, ibcwasmtypes.ModuleName, fantokentypes.ModuleName, + evidencetypes.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName, cadencetypes.ModuleName, + ibchookstypes.ModuleName, ibcwasmtypes.ModuleName, fantokentypes.ModuleName, } } @@ -197,7 +204,8 @@ func orderInitBlockers() []string { ibcwasmtypes.ModuleName, ibchookstypes.ModuleName, icqtypes.ModuleName, - cadancetypes.ModuleName, + cadencetypes.ModuleName, + protocolpooltypes.ModuleName, } } @@ -209,39 +217,39 @@ func simulationModules( appCodec := encodingConfig.Marshaler return []module.AppModuleSimulation{ - auth.NewAppModule(appCodec, *app.AppKeepers.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), - bank.NewAppModule(appCodec, app.AppKeepers.BankKeeper, app.AppKeepers.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), - // fantoken.NewAppModule(appCodec, app.FanTokenKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper), - capability.NewAppModule(appCodec, *app.AppKeepers.CapabilityKeeper, false), - feegrantmodule.NewAppModule(appCodec, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.FeeGrantKeeper, app.interfaceRegistry), - authzmodule.NewAppModule(appCodec, app.AppKeepers.AuthzKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, &app.AppKeepers.GovKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.GetSubspace(govtypes.ModuleName)), - mint.NewAppModule(appCodec, app.AppKeepers.MintKeeper, app.AppKeepers.AccountKeeper, nil, app.GetSubspace(stakingtypes.ModuleName)), // todo: replace nil w/ inflation reward calculation function - staking.NewAppModule(appCodec, app.AppKeepers.StakingKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), - distr.NewAppModule(appCodec, app.AppKeepers.DistrKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), - slashing.NewAppModule(appCodec, app.AppKeepers.SlashingKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.AppKeepers.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry), - params.NewAppModule(app.AppKeepers.ParamsKeeper), - evidence.NewAppModule(app.AppKeepers.EvidenceKeeper), - wasm.NewAppModule(appCodec, &app.AppKeepers.WasmKeeper, app.AppKeepers.StakingKeeper, app.AppKeepers.AccountKeeper, app.AppKeepers.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasmtypes.ModuleName)), - ibc.NewAppModule(app.AppKeepers.IBCKeeper), - transfer.NewAppModule(app.AppKeepers.TransferKeeper), + auth.NewAppModule(appCodec, *app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), + fantoken.NewAppModule(appCodec, app.FanTokenKeeper, app.BankKeeper), + capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), + feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), + authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), + gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), + mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(stakingtypes.ModuleName)), + staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), + distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), + slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry), + params.NewAppModule(app.ParamsKeeper), + evidence.NewAppModule(app.EvidenceKeeper), + wasm.NewAppModule(appCodec, &app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasmtypes.ModuleName)), + ibc.NewAppModule(app.IBCKeeper), + transfer.NewAppModule(app.TransferKeeper), } } // used for ibctesting with bitsongs simulation app func (app *BitsongApp) GetStakingKeeper() ibctestingtypes.StakingKeeper { - return *app.AppKeepers.StakingKeeper // Dereferencing the pointer + return *app.StakingKeeper // Dereferencing the pointer } func (app *BitsongApp) GetSDKStakingKeeper() stakingkeeper.Keeper { - return *app.AppKeepers.StakingKeeper // Dereferencing the pointer + return *app.StakingKeeper // Dereferencing the pointer } func (app *BitsongApp) GetIBCKeeper() *ibckeeper.Keeper { - return app.AppKeepers.IBCKeeper // This is a *ibckeeper.Keeper + return app.IBCKeeper // This is a *ibckeeper.Keeper } func (app *BitsongApp) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper { - return app.AppKeepers.ScopedIBCKeeper + return app.ScopedIBCKeeper } func (app *BitsongApp) GetTxConfig() client.TxConfig { diff --git a/app/posthandler.go b/app/posthandler.go index 60e3eb3c..51c68580 100644 --- a/app/posthandler.go +++ b/app/posthandler.go @@ -16,7 +16,6 @@ func NewPostHandler( sigModeHandler *txsigning.HandlerMap, ) sdk.PostHandler { return sdk.ChainPostDecorators( - // protorevkeeper.NewProtoRevDecorator(*protoRevKeeper), smartaccountpost.NewAuthenticatorPostDecorator( cdc, smartAccountKeeper, diff --git a/app/test_helper.go b/app/test_helper.go index f72fae0e..170ee42f 100644 --- a/app/test_helper.go +++ b/app/test_helper.go @@ -165,7 +165,7 @@ func CreateTestPubKeys(numPubKeys int) []cryptotypes.PubKey { func CheckBalance(t *testing.T, app *BitsongApp, addr sdk.AccAddress, balances sdk.Coins) { ctxCheck := app.BaseApp.NewContext(true) - require.True(t, balances.Equal(app.AppKeepers.BankKeeper.GetAllBalances(ctxCheck, addr))) + require.True(t, balances.Equal(app.BankKeeper.GetAllBalances(ctxCheck, addr))) } func GenesisStateWithValSet(app *BitsongApp) GenesisState { diff --git a/app/testing/test_suite.go b/app/testing/test_suite.go index 4e6c5727..ea087a94 100644 --- a/app/testing/test_suite.go +++ b/app/testing/test_suite.go @@ -146,6 +146,6 @@ func ConvertAddrsToValAddrs(addrs []sdk.AccAddress) []sdk.ValAddress { // FundAcc funds target address with specified amount. func (s *KeeperTestHelper) FundAcc(acc sdk.AccAddress, amounts sdk.Coins) { - err := testutil.FundAccount(s.Ctx, s.App.AppKeepers.BankKeeper, acc, amounts) + err := testutil.FundAccount(s.Ctx, s.App.BankKeeper, acc, amounts) s.Require().NoError(err) } diff --git a/app/upgrades/v010/constants.go b/app/upgrades/v010/constants.go deleted file mode 100644 index 17d5fb92..00000000 --- a/app/upgrades/v010/constants.go +++ /dev/null @@ -1,23 +0,0 @@ -package v010 - -import ( - store "cosmossdk.io/store/types" - "cosmossdk.io/x/feegrant" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - "github.com/cosmos/cosmos-sdk/x/authz" - packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" -) - -const ( - UpgradeName = "v010" - CassiniMultiSig = "bitsong12r2d9hhnd2ez4kgk63ar8m40vhaje8yaa94h8w" - CassiniMintAmount = 9_656_879_130_000 -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateV10UpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{authz.ModuleName, feegrant.ModuleName, packetforwardtypes.ModuleName}, - }, -} diff --git a/app/upgrades/v010/upgrades.go b/app/upgrades/v010/upgrades.go deleted file mode 100644 index 5a9f734e..00000000 --- a/app/upgrades/v010/upgrades.go +++ /dev/null @@ -1,92 +0,0 @@ -package v010 - -import ( - "context" - - "cosmossdk.io/math" - "cosmossdk.io/x/feegrant" - upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/bitsongofficial/go-bitsong/app/keepers" - appparams "github.com/bitsongofficial/go-bitsong/app/params" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/authz" - minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" - ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" -) - -func CreateV10UpgradeHandler(mm *module.Manager, configurator module.Configurator, bpm upgrades.BaseAppParamManager, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx context.Context, _plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - sdkCtx := sdk.UnwrapSDKContext(ctx) - // logger := sdkCtx.Logger().With("upgrade", UpgradeName) - keepers.IBCKeeper.ConnectionKeeper.SetParams(sdkCtx, ibcconnectiontypes.DefaultParams()) - - fromVM := make(map[string]uint64) - for moduleName := range mm.Modules { - fromVM[moduleName] = 1 - } - // delete new modules from the map, for _new_ modules as to not skip InitGenesis - delete(fromVM, authz.ModuleName) - delete(fromVM, feegrant.ModuleName) - delete(fromVM, packetforwardtypes.ModuleName) - - // make fromVM[authtypes.ModuleName] = 2 to skip the first RunMigrations for auth (because from version 2 to migration version 2 will not migrate) - fromVM[authtypes.ModuleName] = 2 - - // the first RunMigrations, which will migrate all the old modules except auth module - newVM, err := mm.RunMigrations(ctx, configurator, fromVM) - if err != nil { - return nil, err - } - // now update auth version back to 1, to make the second RunMigrations includes only auth - newVM[authtypes.ModuleName] = 1 - - // Proposal #5 - // Force an update of validator min commission - validators, err := keepers.StakingKeeper.GetAllValidators(ctx) - if err != nil { - return nil, err - } - minCommissionRate := math.LegacyNewDecWithPrec(5, 2) - for _, v := range validators { - if v.Commission.Rate.LT(minCommissionRate) { - if v.Commission.MaxRate.LT(minCommissionRate) { - v.Commission.MaxRate = minCommissionRate - } - - v.Commission.Rate = minCommissionRate - v.Commission.UpdateTime = sdkCtx.BlockHeader().Time - - // call the before-modification hook since we're about to update the commission - // staking.BeforeValidatorModified(ctx, v.GetOperator()) - - keepers.StakingKeeper.SetValidator(ctx, v) - } - } - - // Proposal #6 - // Mint BTSGs for Cassini-Bridge - multisigWallet, err := sdk.AccAddressFromBech32(CassiniMultiSig) - if err != nil { - return nil, err - } - mintCoins := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(CassiniMintAmount))) - - // mint coins - if err := keepers.BankKeeper.MintCoins(ctx, minttypes.ModuleName, mintCoins); err != nil { - return nil, err - } - - if err := keepers.BankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, multisigWallet, mintCoins); err != nil { - return nil, err - } - - // RunMigrations twice is just a way to make auth module's migrates after staking - return mm.RunMigrations(ctx, configurator, newVM) - } -} diff --git a/app/upgrades/v011/constants.go b/app/upgrades/v011/constants.go deleted file mode 100644 index 20e9c42b..00000000 --- a/app/upgrades/v011/constants.go +++ /dev/null @@ -1,19 +0,0 @@ -package v011 - -import ( - store "cosmossdk.io/store/types" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - fantokentypes "github.com/bitsongofficial/go-bitsong/x/fantoken/types" -) - -const ( - UpgradeName = "v011" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateV11UpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{fantokentypes.ModuleName, "merkledrop"}, - }, -} diff --git a/app/upgrades/v011/upgrades.go b/app/upgrades/v011/upgrades.go deleted file mode 100644 index 202b33d7..00000000 --- a/app/upgrades/v011/upgrades.go +++ /dev/null @@ -1,40 +0,0 @@ -package v011 - -import ( - "context" - - upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/bitsongofficial/go-bitsong/app/keepers" - appparams "github.com/bitsongofficial/go-bitsong/app/params" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" -) - -func CreateV11UpgradeHandler(mm *module.Manager, configurator module.Configurator, - bpm upgrades.BaseAppParamManager, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - sdkCtx := sdk.UnwrapSDKContext(ctx) - logger := sdkCtx.Logger().With("upgrade", UpgradeName) - newVM, err := mm.RunMigrations(ctx, configurator, vm) - if err != nil { - return newVM, err - } - - logger.Info("Updating fantoken fees") - ftParams := keepers.FanTokenKeeper.GetParamSet(sdkCtx) - ftParams.IssueFee.Denom = appparams.DefaultBondDenom - ftParams.MintFee.Denom = appparams.DefaultBondDenom - ftParams.BurnFee.Denom = appparams.DefaultBondDenom - keepers.FanTokenKeeper.SetParamSet(sdkCtx, ftParams) - - logger.Info("Updating merkledrop fees") - // mParams := keepers.MerkledropKeeper.GetParamSet(ctx) - // mParams.CreationFee.Denom = appparams.DefaultBondDenom - // keepers.MerkledropKeeper.SetParamSet(ctx, mParams) - - return newVM, err - } -} diff --git a/app/upgrades/v013/constants.go b/app/upgrades/v013/constants.go deleted file mode 100644 index 064a9516..00000000 --- a/app/upgrades/v013/constants.go +++ /dev/null @@ -1,16 +0,0 @@ -package v013 - -import ( - store "cosmossdk.io/store/types" - "github.com/bitsongofficial/go-bitsong/app/upgrades" -) - -const ( - UpgradeName = "v013" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateV13UpgradeHandler, - StoreUpgrades: store.StoreUpgrades{}, -} diff --git a/app/upgrades/v013/upgrades.go b/app/upgrades/v013/upgrades.go deleted file mode 100644 index 3181a966..00000000 --- a/app/upgrades/v013/upgrades.go +++ /dev/null @@ -1,33 +0,0 @@ -package v013 - -import ( - "context" - - upgradetypes "cosmossdk.io/x/upgrade/types" - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - "github.com/bitsongofficial/go-bitsong/app/keepers" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" -) - -func CreateV13UpgradeHandler(mm *module.Manager, configurator module.Configurator, bpm upgrades.BaseAppParamManager, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx context.Context, _plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - sdkCtx := sdk.UnwrapSDKContext(ctx) - logger := sdkCtx.Logger().With("upgrade", UpgradeName) - newVM, err := mm.RunMigrations(ctx, configurator, vm) - if err != nil { - return newVM, err - } - - logger.Info("Initialize wasm params...") - params := keepers.WasmKeeper.GetParams(ctx) - params.CodeUploadAccess = wasmtypes.AllowNobody - params.InstantiateDefaultPermission = wasmtypes.AccessTypeEverybody - keepers.WasmKeeper.SetParams(ctx, params) - - return newVM, err - } -} diff --git a/app/upgrades/v014/constants.go b/app/upgrades/v014/constants.go deleted file mode 100644 index 85206384..00000000 --- a/app/upgrades/v014/constants.go +++ /dev/null @@ -1,16 +0,0 @@ -package v014 - -import ( - store "cosmossdk.io/store/types" - "github.com/bitsongofficial/go-bitsong/app/upgrades" -) - -const ( - UpgradeName = "v014" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateV14UpgradeHandler, - StoreUpgrades: store.StoreUpgrades{}, -} diff --git a/app/upgrades/v014/upgrades.go b/app/upgrades/v014/upgrades.go deleted file mode 100644 index e0e6c431..00000000 --- a/app/upgrades/v014/upgrades.go +++ /dev/null @@ -1,16 +0,0 @@ -package v014 - -import ( - "context" - - upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/bitsongofficial/go-bitsong/app/keepers" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - "github.com/cosmos/cosmos-sdk/types/module" -) - -func CreateV14UpgradeHandler(mm *module.Manager, configurator module.Configurator, bpm upgrades.BaseAppParamManager, keepers *keepers.AppKeepers) upgradetypes.UpgradeHandler { - return func(ctx context.Context, _plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v015/constants.go b/app/upgrades/v015/constants.go deleted file mode 100644 index 89df1842..00000000 --- a/app/upgrades/v015/constants.go +++ /dev/null @@ -1,16 +0,0 @@ -package v015 - -import ( - store "cosmossdk.io/store/types" - "github.com/bitsongofficial/go-bitsong/app/upgrades" -) - -const ( - UpgradeName = "v015" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateV15UpgradeHandler, - StoreUpgrades: store.StoreUpgrades{}, -} diff --git a/app/upgrades/v015/upgrades.go b/app/upgrades/v015/upgrades.go deleted file mode 100644 index 67819e55..00000000 --- a/app/upgrades/v015/upgrades.go +++ /dev/null @@ -1,16 +0,0 @@ -package v015 - -import ( - "context" - - upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/bitsongofficial/go-bitsong/app/keepers" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - "github.com/cosmos/cosmos-sdk/types/module" -) - -func CreateV15UpgradeHandler(mm *module.Manager, configurator module.Configurator, bpm upgrades.BaseAppParamManager, keepers *keepers.AppKeepers) upgradetypes.UpgradeHandler { - return func(ctx context.Context, _plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v016/constants.go b/app/upgrades/v016/constants.go deleted file mode 100644 index f423bb17..00000000 --- a/app/upgrades/v016/constants.go +++ /dev/null @@ -1,16 +0,0 @@ -package v016 - -import ( - store "cosmossdk.io/store/types" - "github.com/bitsongofficial/go-bitsong/app/upgrades" -) - -const ( - UpgradeName = "v016" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateV16UpgradeHandler, - StoreUpgrades: store.StoreUpgrades{}, -} diff --git a/app/upgrades/v016/upgrades.go b/app/upgrades/v016/upgrades.go deleted file mode 100644 index f7233817..00000000 --- a/app/upgrades/v016/upgrades.go +++ /dev/null @@ -1,16 +0,0 @@ -package v016 - -import ( - "context" - - upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/bitsongofficial/go-bitsong/app/keepers" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - "github.com/cosmos/cosmos-sdk/types/module" -) - -func CreateV16UpgradeHandler(mm *module.Manager, configurator module.Configurator, bpm upgrades.BaseAppParamManager, keepers *keepers.AppKeepers) upgradetypes.UpgradeHandler { - return func(ctx context.Context, _plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v018/constants.go b/app/upgrades/v018/constants.go deleted file mode 100644 index 813d912b..00000000 --- a/app/upgrades/v018/constants.go +++ /dev/null @@ -1,21 +0,0 @@ -package v018 - -import ( - store "cosmossdk.io/store/types" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types" - crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" -) - -const ( - UpgradeName = "v18" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateV18UpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{crisistypes.ModuleName, consensustypes.ModuleName}, - Deleted: []string{"merkledrop"}, - }, -} diff --git a/app/upgrades/v018/upgrades.go b/app/upgrades/v018/upgrades.go deleted file mode 100644 index 6645f59c..00000000 --- a/app/upgrades/v018/upgrades.go +++ /dev/null @@ -1,155 +0,0 @@ -package v018 - -import ( - "context" - "fmt" - - "cosmossdk.io/math" - upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/bitsongofficial/go-bitsong/app/keepers" - appparams "github.com/bitsongofficial/go-bitsong/app/params" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - fantokentypes "github.com/bitsongofficial/go-bitsong/x/fantoken/types" - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - exported "github.com/cosmos/ibc-go/v8/modules/core/exported" -) - -func CreateV18UpgradeHandler(mm *module.Manager, configurator module.Configurator, bpm upgrades.BaseAppParamManager, keepers *keepers.AppKeepers) upgradetypes.UpgradeHandler { - return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - sdkCtx := sdk.UnwrapSDKContext(ctx) - logger := sdkCtx.Logger().With("upgrade", UpgradeName) - - logger.Info(` - ; - ;; - ;';. - ; ;; - ; ;; - ; ;; - ; ;; - ; ;' - ; ' - ,;;;,; - ;;;;;; - ;;;;; - - ## ## ##### ## ####### - ## ## ## ## #### ## ## - ## ## ## ## ## ## ## - ## ## ## ## ## ####### - ## ## ## ## ## ## ## - ## ## ## ## ### ## ## ## - ### ##### ### ###### ####### - - ; - ;; - ;';. - ; ;; - ; ;; - ; ;; - ; ;; - ; ;' - ; ' - ,;;;,; - ;;;;;; - ;;;;; - - `) - - // https://github.com/cosmos/cosmos-sdk/pull/12363/files - // Set param key table for params module migration - for _, subspace := range keepers.ParamsKeeper.GetSubspaces() { - subspace := subspace - - var keyTable paramstypes.KeyTable - switch subspace.Name() { - case authtypes.ModuleName: - keyTable = authtypes.ParamKeyTable() //nolint:staticcheck - case banktypes.ModuleName: - keyTable = banktypes.ParamKeyTable() //nolint:staticcheck - case stakingtypes.ModuleName: - keyTable = stakingtypes.ParamKeyTable() //nolint:staticcheck - case distrtypes.ModuleName: - keyTable = distrtypes.ParamKeyTable() //nolint:staticcheck - case minttypes.ModuleName: - keyTable = minttypes.ParamKeyTable() - case slashingtypes.ModuleName: - keyTable = slashingtypes.ParamKeyTable() //nolint:staticcheck - case govtypes.ModuleName: - keyTable = govv1.ParamKeyTable() //nolint:staticcheck - case crisistypes.ModuleName: - keyTable = crisistypes.ParamKeyTable() //nolint:staticcheck - // ibc types - case ibctransfertypes.ModuleName: - keyTable = ibctransfertypes.ParamKeyTable() - // bitsong modules - case fantokentypes.ModuleName: - keyTable = fantokentypes.ParamKeyTable() //nolint:staticcheck - if !subspace.HasKeyTable() { - subspace.WithKeyTable(keyTable) - } - // // wasmd module - // case wasmtypes.ModuleName: - // keyTable = wasmtypes.ParamKeyTable() //nolint:staticcheck - default: - continue - } - - if !subspace.HasKeyTable() { - subspace.WithKeyTable(keyTable) - } - } - - // Migrate Tendermint consensus parameters from x/params module to a deprecated x/consensus module. - // The old params module is required to still be imported in your app.go in order to handle this migration. - baseAppLegacySS := keepers.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable()) - baseapp.MigrateParams(sdkCtx, baseAppLegacySS, &keepers.ConsensusParamsKeeper.ParamsStore) - - // manually cache current x/mint params for upgrade - mintParams, _ := keepers.MintKeeper.Params.Get(sdkCtx) - mintParams.MintDenom = appparams.MicroCoinUnit - keepers.MintKeeper.Params.Set(ctx, mintParams) - - // manually cache current x/bank params for upgrade - bankParams := keepers.BankKeeper.GetParams(ctx) - bankParams.DefaultSendEnabled = true - bankParams.SendEnabled = []*banktypes.SendEnabled{} - keepers.BankKeeper.SetParams(ctx, bankParams) - - // Run migrations - logger.Info(fmt.Sprintf("pre migrate version map: %v", vm)) - versionMap, err := mm.RunMigrations(ctx, configurator, vm) - if err != nil { - return nil, err - } - logger.Info(fmt.Sprintf("post migrate version map: %v", versionMap)) - - // https://github.com/cosmos/ibc-go/blob/v7.1.0/docs/migrations/v7-to-v7_1.md - // explicitly update the IBC 02-client params, adding the localhost client type - params := keepers.IBCKeeper.ClientKeeper.GetParams(sdkCtx) - params.AllowedClients = append(params.AllowedClients, exported.Localhost) - keepers.IBCKeeper.ClientKeeper.SetParams(sdkCtx, params) - - // update gov params to use a 50% initial deposit ratio - govParams, err := keepers.GovKeeper.Params.Get(sdkCtx) - govParams.MinInitialDepositRatio = math.LegacyNewDec(50).Quo(math.LegacyNewDec(100)).String() - if err := keepers.GovKeeper.Params.Set(sdkCtx, govParams); err != nil { - return nil, err - } - - return versionMap, err - } -} diff --git a/app/upgrades/v020/constants.go b/app/upgrades/v020/constants.go deleted file mode 100644 index f569b9f4..00000000 --- a/app/upgrades/v020/constants.go +++ /dev/null @@ -1,19 +0,0 @@ -package v020 - -import ( - store "cosmossdk.io/store/types" - "github.com/bitsongofficial/go-bitsong/app/upgrades" -) - -const ( - UpgradeName = "v020" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateV020UpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v020/upgrade_test.go b/app/upgrades/v020/upgrade_test.go deleted file mode 100644 index a2f27657..00000000 --- a/app/upgrades/v020/upgrade_test.go +++ /dev/null @@ -1,117 +0,0 @@ -package v020_test - -import ( - "fmt" - "testing" - - apptesting "github.com/bitsongofficial/go-bitsong/app/testing" - "github.com/cosmos/cosmos-sdk/types" - - "cosmossdk.io/math" - upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/stretchr/testify/suite" -) - -const dummyUpgradeHeight = 5 - -type UpgradeTestSuite struct { - apptesting.KeeperTestHelper -} - -func (s *UpgradeTestSuite) SetupTest() { - s.Setup() -} - -func TestUpgradeTestSuite(t *testing.T) { - suite.Run(t, new(UpgradeTestSuite)) -} - -func (s *UpgradeTestSuite) TestUpgrade() { - // Commented out as this coverage used testing an issue specific to v0.18 - v0.20.* - upgradeSetup := func() { - validators, _ := s.App.AppKeepers.StakingKeeper.GetAllValidators(s.Ctx) - for _, val := range validators { - // update the tokens staked to validator due to slashing event - // mimic slashing event on staking power, but not update slashing event to distribution module - val.Tokens = math.LegacyNewDecFromInt(val.Tokens).MulTruncate(math.LegacyOneDec().Sub(math.LegacyNewDecWithPrec(1, 3))).RoundInt() // 1 % slash - - dels, _ := s.App.AppKeepers.StakingKeeper.GetAllDelegations(s.Ctx) - for _, del := range dels { - endingPeriod, _ := s.App.AppKeepers.DistrKeeper.IncrementValidatorPeriod(s.Ctx, val) - // assert v018 bug is present prior to upgrade - s.Require().Panics(func() { - s.App.AppKeepers.DistrKeeper.CalculateDelegationRewards(s.Ctx, val, del, endingPeriod) - }) - } - // create another delegator - del2 := s.TestAccs[2] - s.FundAcc(del2, types.NewCoins(types.NewCoin("ubtsg", math.NewInt(1000000)))) - s.StakingHelper.Delegate(del2, types.ValAddress(val.GetOperator()), math.NewInt(1000000)) - del, err := s.App.AppKeepers.StakingKeeper.GetDelegation(s.Ctx, del2, types.ValAddress(val.GetOperator())) - s.Require().NoError(err) - endingPeriod, _ := s.App.AppKeepers.DistrKeeper.IncrementValidatorPeriod(s.Ctx, val) - s.Require().NotPanics(func() { - s.App.AppKeepers.DistrKeeper.CalculateDelegationRewards(s.Ctx, val, del, endingPeriod) - }) - } - } - - testCases := []struct { - name string - pre_upgrade func() - upgrade func() - post_upgrade func() - }{ - { - "Test that the upgrade succeeds", - func() { - upgradeSetup() - }, - func() { - s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight - 1) - plan := upgradetypes.Plan{Name: "v020", Height: dummyUpgradeHeight} - err := s.App.AppKeepers.UpgradeKeeper.ScheduleUpgrade(s.Ctx, plan) - s.Require().NoError(err) - _, err = s.App.AppKeepers.UpgradeKeeper.GetUpgradePlan(s.Ctx) - s.Require().NoError(err) - - s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight) - s.Require().NotPanics(func() { - s.App.BeginBlocker(s.Ctx) - }) - }, - func() { - // // assert rewards can be calculated - // validators, _ := s.App.AppKeepers.StakingKeeper.GetAllValidators(s.Ctx) - // for _, val := range validators { - // dels, _ := s.App.AppKeepers.StakingKeeper.GetAllDelegations(s.Ctx) - // for _, del := range dels { - // // confirm delegators can query, withdraw and stake - // // require all rewards to have been claimed for this delegator - // // confirm delegators claimed tokens was accurate - // s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight + 10) - // endingPeriod, _ := s.App.AppKeepers.DistrKeeper.IncrementValidatorPeriod(s.Ctx, val) - // s.App.AppKeepers.DistrKeeper.CalculateDelegationRewards(s.Ctx, val, del, endingPeriod) - // s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight + 10) - // s.FundAcc(types.AccAddress(del.GetDelegatorAddr()), types.NewCoins(types.NewCoin("ubtsg", math.NewInt(1000000)))) - // s.StakingHelper.Delegate(types.AccAddress(del.GetDelegatorAddr()), types.ValAddress(del.GetValidatorAddr()), math.NewInt(1000000)) - // s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight + 10) - // _, err := s.App.AppKeepers.DistrKeeper.WithdrawDelegationRewards(s.Ctx, types.AccAddress(del.GetDelegatorAddr()), types.ValAddress(del.GetValidatorAddr())) - // s.Require().NoError(err) - // } - // } - - }, - }, - } - - for _, tc := range testCases { - s.Run(fmt.Sprintf("Case %s", tc.name), func() { - s.SetupTest() // reset - - tc.pre_upgrade() - tc.upgrade() - tc.post_upgrade() - }) - } -} diff --git a/app/upgrades/v020/upgrades.go b/app/upgrades/v020/upgrades.go deleted file mode 100644 index 304d02b7..00000000 --- a/app/upgrades/v020/upgrades.go +++ /dev/null @@ -1,292 +0,0 @@ -package v020 - -import ( - "context" - "fmt" - - "cosmossdk.io/math" - upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/bitsongofficial/go-bitsong/app/keepers" - "github.com/bitsongofficial/go-bitsong/app/upgrades" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" -) - -func CreateV020UpgradeHandler(mm *module.Manager, configurator module.Configurator, bpm upgrades.BaseAppParamManager, k *keepers.AppKeepers) upgradetypes.UpgradeHandler { - return func(context context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - sdkCtx := sdk.UnwrapSDKContext(context) - logger := sdkCtx.Logger().With("upgrade", UpgradeName) - logger.Info(` - ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- - ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- - V020 UPGRADE manually claims delegation rewards for all users. - This will refresh the delegation information to the upgrade block. - This prevents the error from occuring in the future. - ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- - ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- - `) - if validators, err := k.StakingKeeper.GetAllValidators(sdkCtx); err != nil { - return nil, err - } else { - for _, validator := range validators { - if dels, err := k.StakingKeeper.GetValidatorDelegations(sdkCtx, sdk.ValAddress(validator.GetOperator())); err != nil { - return nil, err - } else { - for _, del := range dels { - valAddr := del.GetValidatorAddr() - val, err := k.StakingKeeper.Validator(sdkCtx, sdk.ValAddress(valAddr)) - if err != nil { - return nil, err - } - - // check existence of delegator starting info - hasInfo, _ := k.DistrKeeper.HasDelegatorStartingInfo(sdkCtx, sdk.ValAddress(valAddr), sdk.AccAddress(del.GetDelegatorAddr())) - if !hasInfo { - return nil, err - } - - // calculate rewards - endingPeriod, err := k.DistrKeeper.IncrementValidatorPeriod(sdkCtx, val) - if err != nil { - return nil, err - } - - rewardsRaw, patched := CustomCalculateDelegationRewards(sdkCtx, k, val, del, endingPeriod) - outstanding, err := k.DistrKeeper.GetValidatorOutstandingRewardsCoins(sdkCtx, sdk.ValAddress(del.GetValidatorAddr())) - if err != nil { - return nil, err - } - if patched { - err = V018ManualDelegationRewardsPatch(sdkCtx, rewardsRaw, outstanding, k, val, del, endingPeriod) - if err != nil { - return nil, err - } - } - } - } - } - } - - if dels, err := k.StakingKeeper.GetAllDelegations(sdkCtx); err != nil { - return nil, err - } else { - - // // confirm patch has been applied by querying rewards again for each delegation - for _, del := range dels { - valAddr := del.GetValidatorAddr() - val, _ := k.StakingKeeper.Validator(sdkCtx, sdk.ValAddress(valAddr)) - // calculate rewards - k.DistrKeeper.CalculateDelegationRewards(sdkCtx, val, del, uint64(sdkCtx.BlockHeight())) - } - } - sdkCtx.Logger().Info(` - ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- - ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- - Upgrade V020 Patch complete. - All delegation rewards claimed and startingInfo set to this block height - ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- - ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- - `) - - // Run migrations - logger.Info(fmt.Sprintf("pre migrate version map: %v", vm)) - versionMap, err := mm.RunMigrations(sdkCtx, configurator, vm) - if err != nil { - return nil, err - } - logger.Info(fmt.Sprintf("post migrate version map: %v", versionMap)) - return versionMap, err - } -} - -func V018ManualDelegationRewardsPatch(sdkCtx sdk.Context, rewardsRaw, outstanding sdk.DecCoins, k *keepers.AppKeepers, val stakingtypes.ValidatorI, del stakingtypes.DelegationI, endingPeriod uint64) error { - - valAddr := del.GetValidatorAddr() - // defensive edge case may happen on the very final digits - // of the decCoins due to operation order of the distribution mechanism. - rewards := rewardsRaw.Intersect(outstanding) - if !rewards.Equal(rewardsRaw) { - logger := k.DistrKeeper.Logger(sdkCtx) - logger.Info( - "rounding error withdrawing rewards from validator", - "delegator", del.GetDelegatorAddr(), - "validator", val.GetOperator(), - "got", rewards.String(), - "expected", rewardsRaw.String(), - ) - } - - // truncate reward dec coins, return remainder to community pool - finalRewards, remainder := rewards.TruncateDecimal() - - // add coins to user account - if !finalRewards.IsZero() { - withdrawAddr, err := k.DistrKeeper.GetDelegatorWithdrawAddr(sdkCtx, sdk.AccAddress(del.GetDelegatorAddr())) - if err != nil { - return err - } - err = k.BankKeeper.SendCoinsFromModuleToAccount(sdkCtx, distrtypes.ModuleName, withdrawAddr, finalRewards) - if err != nil { - return err - } - sdkCtx.Logger().Info(fmt.Sprintf("Rewards %v manually claimed for: %q", finalRewards, del.GetDelegatorAddr())) - } - - // update the outstanding rewards and the community pool only if the - // transaction was successful - k.DistrKeeper.SetValidatorOutstandingRewards(sdkCtx, sdk.ValAddress(valAddr), distrtypes.ValidatorOutstandingRewards{Rewards: outstanding.Sub(rewards)}) - feePool, err := k.DistrKeeper.FeePool.Get(sdkCtx) - if err != nil { - return err - } - feePool.CommunityPool = feePool.CommunityPool.Add(remainder...) - err = k.DistrKeeper.FeePool.Set(sdkCtx, feePool) - if err != nil { - return err - } - - // decrement reference count of starting period - startingInfo, err := k.DistrKeeper.GetDelegatorStartingInfo(sdkCtx, sdk.ValAddress(del.GetValidatorAddr()), sdk.AccAddress(del.GetDelegatorAddr())) - if err != nil { - return err - } - startingPeriod := startingInfo.PreviousPeriod - customDecrementReferenceCount(sdkCtx, k, sdk.ValAddress(del.GetValidatorAddr()), startingPeriod) - - // remove delegator starting info - k.DistrKeeper.DeleteDelegatorStartingInfo(sdkCtx, sdk.ValAddress(del.GetValidatorAddr()), sdk.AccAddress(del.GetDelegatorAddr())) - - if finalRewards.IsZero() { - // Note, we do not call the NewCoins constructor as we do not want the zero - // coin removed. - sdkCtx.Logger().Info("~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~") - sdkCtx.Logger().Info(fmt.Sprintf("No final rewards: %q %v", val.GetOperator(), del.GetDelegatorAddr())) - } - - // reinitialize the delegation - // period has already been incremented - we want to store the period ended by this delegation action - vcr, _ := k.DistrKeeper.GetValidatorCurrentRewards(sdkCtx, sdk.ValAddress(valAddr)) - previousPeriod := vcr.Period - 1 - // increment reference count for the period we're going to track - incrementReferenceCount(sdkCtx, k, sdk.ValAddress(valAddr), previousPeriod) - - validator, _ := k.StakingKeeper.Validator(sdkCtx, sdk.ValAddress(valAddr)) - delegation, _ := k.StakingKeeper.Delegation(sdkCtx, sdk.AccAddress(del.GetDelegatorAddr()), sdk.ValAddress(valAddr)) - - // calculate delegation stake in tokens - // we don't store directly, so multiply delegation shares * (tokens per share) - // note: necessary to truncate so we don't allow withdrawing more rewards than owed - stake := validator.TokensFromSharesTruncated(delegation.GetShares()) - - // save new delegator starting info to kv store - k.DistrKeeper.SetDelegatorStartingInfo(sdkCtx, sdk.ValAddress(valAddr), sdk.AccAddress(del.GetDelegatorAddr()), distrtypes.NewDelegatorStartingInfo(previousPeriod, stake, uint64(sdkCtx.BlockHeight()))) - - return nil -} -func CustomCalculateDelegationRewards(ctx sdk.Context, k *keepers.AppKeepers, val stakingtypes.ValidatorI, del stakingtypes.DelegationI, endingPeriod uint64) (rewards sdk.DecCoins, patched bool) { - patched = false - // fetch starting info for delegation - startingInfo, err := k.DistrKeeper.GetDelegatorStartingInfo(ctx, sdk.ValAddress(del.GetValidatorAddr()), sdk.AccAddress(del.GetDelegatorAddr())) - if err != nil { - return - } - if startingInfo.Height == uint64(ctx.BlockHeight()) { - // started this height, no rewards yet - return - } - - startingPeriod := startingInfo.PreviousPeriod - stake := startingInfo.Stake - startingHeight := startingInfo.Height - endingHeight := uint64(ctx.BlockHeight()) - if endingHeight > startingHeight { - k.DistrKeeper.IterateValidatorSlashEventsBetween(ctx, sdk.ValAddress(del.GetValidatorAddr()), startingHeight, endingHeight, - func(height uint64, event distrtypes.ValidatorSlashEvent) (stop bool) { - endingPeriod := event.ValidatorPeriod - if endingPeriod > startingPeriod { - rewards = rewards.Add(customCalculateDelegationRewardsBetween(ctx, k, val, startingPeriod, endingPeriod, stake)...) - // Note: It is necessary to truncate so we don't allow withdrawing - // more rewards than owed. - stake = stake.MulTruncate(math.LegacyOneDec().Sub(event.Fraction)) - startingPeriod = endingPeriod - } - return false - }, - ) - } - - currentStake := val.TokensFromShares(del.GetShares()) - fmt.Printf("del: %q", del.GetDelegatorAddr()) - fmt.Printf("val: %q", del.GetValidatorAddr()) - fmt.Printf("stake: %q", stake) - fmt.Printf("currentStake: %q", currentStake) - if stake.GT(currentStake) { - marginOfErr := currentStake.Mul(math.LegacyNewDecWithPrec(50, 3)) // 5.0% - if stake.LTE(currentStake.Add(marginOfErr)) { - stake = currentStake - patched = true - } else { - panic(fmt.Sprintln("current stake is not delgator from slashed validator, and is more than maximum margin of error")) - } - } - // calculate rewards for final period - rewards = rewards.Add(customCalculateDelegationRewardsBetween(ctx, k, val, startingPeriod, endingPeriod, stake)...) - return rewards, patched -} - -func customCalculateDelegationRewardsBetween(ctx sdk.Context, k *keepers.AppKeepers, val stakingtypes.ValidatorI, - startingPeriod, endingPeriod uint64, stake math.LegacyDec, -) (rewards sdk.DecCoins) { - // sanity check - if startingPeriod > endingPeriod { - panic("startingPeriod cannot be greater than endingPeriod") - } - - // sanity check - if stake.IsNegative() { - panic("stake should not be negative") - } - - // return staking * (ending - starting) - starting, _ := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, sdk.ValAddress(val.GetOperator()), startingPeriod) - ending, _ := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, sdk.ValAddress(val.GetOperator()), endingPeriod) - difference := ending.CumulativeRewardRatio.Sub(starting.CumulativeRewardRatio) - if difference.IsAnyNegative() { - panic("negative rewards should not be possible") - } - // note: necessary to truncate so we don't allow withdrawing more rewards than owed - rewards = difference.MulDecTruncate(stake) - return -} - -// decrement the reference count for a historical rewards value, and delete if zero references remain -func customDecrementReferenceCount(ctx sdk.Context, k *keepers.AppKeepers, valAddr sdk.ValAddress, period uint64) { - historical, _ := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, valAddr, period) - if historical.ReferenceCount == 0 { - panic("cannot set negative reference count") - } - historical.ReferenceCount-- - if historical.ReferenceCount == 0 { - - k.DistrKeeper.DeleteValidatorHistoricalReward(ctx, valAddr, period) - } else { - k.DistrKeeper.SetValidatorHistoricalRewards(ctx, valAddr, period, historical) - } -} - -// increment the reference count for a historical rewards value -func incrementReferenceCount(ctx sdk.Context, k *keepers.AppKeepers, valAddr sdk.ValAddress, period uint64) { - historical, _ := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, valAddr, period) - if historical.ReferenceCount > 2 { - panic("reference count should never exceed 2") - } - historical.ReferenceCount++ - k.DistrKeeper.SetValidatorHistoricalRewards(ctx, valAddr, period, historical) -} - -// calculate the token worth of provided shares, truncated -func CustommTokensFromSharesTruncated(t math.Int, ds math.LegacyDec, shares math.LegacyDec) math.LegacyDec { - return (shares.MulInt(t)).QuoTruncate(ds) -} diff --git a/app/upgrades/v021/constants.go b/app/upgrades/v021/constants.go index cc6e6031..d442f1a5 100644 --- a/app/upgrades/v021/constants.go +++ b/app/upgrades/v021/constants.go @@ -3,7 +3,7 @@ package v021 import ( store "cosmossdk.io/store/types" "github.com/bitsongofficial/go-bitsong/app/upgrades" - cadancetypes "github.com/bitsongofficial/go-bitsong/x/cadance/types" + cadencetypes "github.com/bitsongofficial/go-bitsong/x/cadence/types" smartaccounttypes "github.com/bitsongofficial/go-bitsong/x/smart-account/types" icqtypes "github.com/cosmos/ibc-apps/modules/async-icq/v8/types" ibchookstypes "github.com/cosmos/ibc-apps/modules/ibc-hooks/v8/types" @@ -32,7 +32,7 @@ var Upgrade = upgrades.Upgrade{ icqtypes.StoreKey, wasmlctypes.StoreKey, ibchookstypes.StoreKey, - cadancetypes.StoreKey, + cadencetypes.StoreKey, smartaccounttypes.StoreKey, }, Deleted: []string{}, diff --git a/app/upgrades/v021/upgrade_test.go b/app/upgrades/v021/upgrade_test.go index 0c64bcb5..c915e620 100644 --- a/app/upgrades/v021/upgrade_test.go +++ b/app/upgrades/v021/upgrade_test.go @@ -27,7 +27,7 @@ type UpgradeTestSuite struct { func (s *UpgradeTestSuite) SetupTest() { s.Setup() - s.preModule = upgrade.NewAppModule(s.App.AppKeepers.UpgradeKeeper, addresscodec.NewBech32Codec("bitsong")) + s.preModule = upgrade.NewAppModule(s.App.UpgradeKeeper, addresscodec.NewBech32Codec("bitsong")) } func TestUpgradeTestSuite(t *testing.T) { @@ -36,13 +36,13 @@ func TestUpgradeTestSuite(t *testing.T) { func (s *UpgradeTestSuite) TestUpgrade() { upgradeSetup := func(shares, slash math.LegacyDec, jailed bool) { - vals, _ := s.App.AppKeepers.StakingKeeper.GetAllValidators(s.Ctx) + vals, _ := s.App.StakingKeeper.GetAllValidators(s.Ctx) fmt.Printf("# OF VALS: %d\n", len(vals)) for _, val := range vals { - // delAddrStr, err := s.App.AppKeepers.AccountKeeper.AddressCodec().BytesToString(s.TestAccs[0]) + // delAddrStr, err :=s.App.AccountKeeper.AddressCodec().BytesToString(s.TestAccs[0]) s.FundAcc(s.TestAccs[0], sdktypes.NewCoins(sdktypes.NewCoin("stake", math.NewInt(1000000)))) - _, err := s.App.AppKeepers.StakingKeeper.Delegate(s.Ctx, s.TestAccs[0], math.NewInt(1000000), stakingtypes.Unbonded, val, true) + _, err := s.App.StakingKeeper.Delegate(s.Ctx, s.TestAccs[0], math.NewInt(1000000), stakingtypes.Unbonded, val, true) s.Require().NoError(err) if !slash.IsZero() { @@ -51,11 +51,11 @@ func (s *UpgradeTestSuite) TestUpgrade() { if jailed { val.Jailed = jailed } - err = s.App.AppKeepers.StakingKeeper.SetValidator(s.Ctx, val) + err = s.App.StakingKeeper.SetValidator(s.Ctx, val) s.Require().NoError(err) // get delegations - dels, err := s.App.AppKeepers.StakingKeeper.GetValidatorDelegations(s.Ctx, sdktypes.ValAddress(val.OperatorAddress)) + dels, err := s.App.StakingKeeper.GetValidatorDelegations(s.Ctx, sdktypes.ValAddress(val.OperatorAddress)) s.Require().NoError(err) fmt.Printf("# OF DELS: %d\n", len(dels)) @@ -85,27 +85,27 @@ func (s *UpgradeTestSuite) TestUpgrade() { }, func() { // cheeck icq params - params := s.App.AppKeepers.ICQKeeper.GetParams(s.Ctx) + params := s.App.ICQKeeper.GetParams(s.Ctx) fmt.Println(params.HostEnabled) s.Require().Equal(len(params.AllowQueries), 1) s.Require().True(params.HostEnabled) // check smart account params - smartAccParams := s.App.AppKeepers.SmartAccountKeeper.GetParams(s.Ctx) - authManagers := s.App.AppKeepers.AuthenticatorManager.GetRegisteredAuthenticators() + smartAccParams := s.App.SmartAccountKeeper.GetParams(s.Ctx) + authManagers := s.App.AuthenticatorManager.GetRegisteredAuthenticators() s.Require().Greater(len(authManagers), 1) s.Require().True(smartAccParams.IsSmartAccountActive) //check ibchook params - ibcwasmparams := s.App.AppKeepers.IBCKeeper.ClientKeeper.GetParams(s.Ctx) + ibcwasmparams := s.App.IBCKeeper.ClientKeeper.GetParams(s.Ctx) s.Require().Equal(len(ibcwasmparams.AllowedClients), 2) - // check cadance params - cadanceParams := s.App.AppKeepers.CadanceKeeper.GetParams(s.Ctx) - s.Require().Equal(cadanceParams.ContractGasLimit, uint64(1000000)) + // check cadence params + cadenceParams := s.App.CadenceKeeper.GetParams(s.Ctx) + s.Require().Equal(cadenceParams.ContractGasLimit, uint64(1000000)) // expidited proposal - govparams, _ := s.App.AppKeepers.GovKeeper.Params.Get(s.Ctx) + govparams, _ := s.App.GovKeeper.Params.Get(s.Ctx) newExpeditedVotingPeriod := time.Minute * 60 * 24 s.Require().Equal(govparams.ExpeditedVotingPeriod.Seconds(), newExpeditedVotingPeriod.Seconds()) s.Require().Equal(govparams.ExpeditedThreshold, "0.75") @@ -125,7 +125,7 @@ func (s *UpgradeTestSuite) TestUpgrade() { }, func() { - dels, _ := s.App.AppKeepers.StakingKeeper.GetAllDelegations(s.Ctx) + dels, _ := s.App.StakingKeeper.GetAllDelegations(s.Ctx) for _, del := range dels { s.Require().NotZero(del.Shares) } @@ -146,7 +146,7 @@ func (s *UpgradeTestSuite) TestUpgrade() { }, func() { - dels, _ := s.App.AppKeepers.StakingKeeper.GetAllDelegations(s.Ctx) + dels, _ := s.App.StakingKeeper.GetAllDelegations(s.Ctx) for _, del := range dels { s.Require().NotZero(del.Shares) } @@ -168,9 +168,9 @@ func (s *UpgradeTestSuite) TestUpgrade() { func dummyUpgrade(s *UpgradeTestSuite) { s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight - 1) plan := upgradetypes.Plan{Name: "v021", Height: dummyUpgradeHeight} - err := s.App.AppKeepers.UpgradeKeeper.ScheduleUpgrade(s.Ctx, plan) + err := s.App.UpgradeKeeper.ScheduleUpgrade(s.Ctx, plan) s.Require().NoError(err) - _, err = s.App.AppKeepers.UpgradeKeeper.GetUpgradePlan(s.Ctx) + _, err = s.App.UpgradeKeeper.GetUpgradePlan(s.Ctx) s.Require().NoError(err) s.Ctx = s.Ctx.WithHeaderInfo(header.Info{Height: dummyUpgradeHeight, Time: s.Ctx.BlockTime().Add(time.Second)}).WithBlockHeight(dummyUpgradeHeight) diff --git a/app/upgrades/v021/upgrades.go b/app/upgrades/v021/upgrades.go index 178a4718..b895e865 100644 --- a/app/upgrades/v021/upgrades.go +++ b/app/upgrades/v021/upgrades.go @@ -9,12 +9,13 @@ import ( upgradetypes "cosmossdk.io/x/upgrade/types" "github.com/bitsongofficial/go-bitsong/app/keepers" "github.com/bitsongofficial/go-bitsong/app/upgrades" - v020 "github.com/bitsongofficial/go-bitsong/app/upgrades/v020" - cadancetypes "github.com/bitsongofficial/go-bitsong/x/cadance/types" + cadencetypes "github.com/bitsongofficial/go-bitsong/x/cadence/types" sca "github.com/bitsongofficial/go-bitsong/x/smart-account/types" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" icqkeeper "github.com/cosmos/ibc-apps/modules/async-icq/v8/keeper" wasmlctypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types" @@ -71,7 +72,7 @@ func CreateV021UpgradeHandler(mm *module.Manager, configurator module.Configurat if err != nil { return nil, err } - rewardsRaw, patched := v020.CustomCalculateDelegationRewards(sdkCtx, k, val, del, endingPeriod) + rewardsRaw, patched := CustomCalculateDelegationRewards(sdkCtx, k, val, del, endingPeriod) outstanding, err := k.DistrKeeper.GetValidatorOutstandingRewardsCoins(sdkCtx, sdk.ValAddress(del.GetValidatorAddr())) if err != nil { @@ -79,7 +80,7 @@ func CreateV021UpgradeHandler(mm *module.Manager, configurator module.Configurat } if patched { - err = v020.V018ManualDelegationRewardsPatch(sdkCtx, rewardsRaw, outstanding, k, val, del, endingPeriod) + err = V018ManualDelegationRewardsPatch(sdkCtx, rewardsRaw, outstanding, k, val, del, endingPeriod) if err != nil { return nil, err } @@ -137,10 +138,10 @@ func CreateV021UpgradeHandler(mm *module.Manager, configurator module.Configurat // interchain query params (ICQ) setICQParams(sdkCtx, k.ICQKeeper) - // set x/cadance params - cadanceParams := cadancetypes.DefaultParams() - cadanceParams.ContractGasLimit = 1000000 // 1mb - if err := k.CadanceKeeper.SetParams(sdkCtx, cadanceParams); err != nil { + // set x/cadence params + cadenceParams := cadencetypes.DefaultParams() + cadenceParams.ContractGasLimit = 1000000 // 1mb + if err := k.CadenceKeeper.SetParams(sdkCtx, cadenceParams); err != nil { return nil, err } @@ -177,3 +178,193 @@ func setICQParams(ctx sdk.Context, icqKeeper *icqkeeper.Keeper) { //nolint:errcheck icqKeeper.SetParams(ctx, icqparams) } +func V018ManualDelegationRewardsPatch(sdkCtx sdk.Context, rewardsRaw, outstanding sdk.DecCoins, k *keepers.AppKeepers, val stakingtypes.ValidatorI, del stakingtypes.DelegationI, endingPeriod uint64) error { + + valAddr := del.GetValidatorAddr() + // defensive edge case may happen on the very final digits + // of the decCoins due to operation order of the distribution mechanism. + rewards := rewardsRaw.Intersect(outstanding) + if !rewards.Equal(rewardsRaw) { + logger := k.DistrKeeper.Logger(sdkCtx) + logger.Info( + "rounding error withdrawing rewards from validator", + "delegator", del.GetDelegatorAddr(), + "validator", val.GetOperator(), + "got", rewards.String(), + "expected", rewardsRaw.String(), + ) + } + + // truncate reward dec coins, return remainder to community pool + finalRewards, remainder := rewards.TruncateDecimal() + + // add coins to user account + if !finalRewards.IsZero() { + withdrawAddr, err := k.DistrKeeper.GetDelegatorWithdrawAddr(sdkCtx, sdk.AccAddress(del.GetDelegatorAddr())) + if err != nil { + return err + } + err = k.BankKeeper.SendCoinsFromModuleToAccount(sdkCtx, distrtypes.ModuleName, withdrawAddr, finalRewards) + if err != nil { + return err + } + sdkCtx.Logger().Info(fmt.Sprintf("Rewards %v manually claimed for: %q", finalRewards, del.GetDelegatorAddr())) + } + + // update the outstanding rewards and the community pool only if the + // transaction was successful + k.DistrKeeper.SetValidatorOutstandingRewards(sdkCtx, sdk.ValAddress(valAddr), distrtypes.ValidatorOutstandingRewards{Rewards: outstanding.Sub(rewards)}) + feePool, err := k.DistrKeeper.FeePool.Get(sdkCtx) + if err != nil { + return err + } + feePool.CommunityPool = feePool.CommunityPool.Add(remainder...) + err = k.DistrKeeper.FeePool.Set(sdkCtx, feePool) + if err != nil { + return err + } + + // decrement reference count of starting period + startingInfo, err := k.DistrKeeper.GetDelegatorStartingInfo(sdkCtx, sdk.ValAddress(del.GetValidatorAddr()), sdk.AccAddress(del.GetDelegatorAddr())) + if err != nil { + return err + } + startingPeriod := startingInfo.PreviousPeriod + customDecrementReferenceCount(sdkCtx, k, sdk.ValAddress(del.GetValidatorAddr()), startingPeriod) + + // remove delegator starting info + k.DistrKeeper.DeleteDelegatorStartingInfo(sdkCtx, sdk.ValAddress(del.GetValidatorAddr()), sdk.AccAddress(del.GetDelegatorAddr())) + + if finalRewards.IsZero() { + // Note, we do not call the NewCoins constructor as we do not want the zero + // coin removed. + sdkCtx.Logger().Info("~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~~=~=~=~=~") + sdkCtx.Logger().Info(fmt.Sprintf("No final rewards: %q %v", val.GetOperator(), del.GetDelegatorAddr())) + } + + // reinitialize the delegation + // period has already been incremented - we want to store the period ended by this delegation action + vcr, _ := k.DistrKeeper.GetValidatorCurrentRewards(sdkCtx, sdk.ValAddress(valAddr)) + previousPeriod := vcr.Period - 1 + // increment reference count for the period we're going to track + incrementReferenceCount(sdkCtx, k, sdk.ValAddress(valAddr), previousPeriod) + + validator, _ := k.StakingKeeper.Validator(sdkCtx, sdk.ValAddress(valAddr)) + delegation, _ := k.StakingKeeper.Delegation(sdkCtx, sdk.AccAddress(del.GetDelegatorAddr()), sdk.ValAddress(valAddr)) + + // calculate delegation stake in tokens + // we don't store directly, so multiply delegation shares * (tokens per share) + // note: necessary to truncate so we don't allow withdrawing more rewards than owed + stake := validator.TokensFromSharesTruncated(delegation.GetShares()) + + // save new delegator starting info to kv store + k.DistrKeeper.SetDelegatorStartingInfo(sdkCtx, sdk.ValAddress(valAddr), sdk.AccAddress(del.GetDelegatorAddr()), distrtypes.NewDelegatorStartingInfo(previousPeriod, stake, uint64(sdkCtx.BlockHeight()))) + + return nil +} + +func CustomCalculateDelegationRewards(ctx sdk.Context, k *keepers.AppKeepers, val stakingtypes.ValidatorI, del stakingtypes.DelegationI, endingPeriod uint64) (rewards sdk.DecCoins, patched bool) { + patched = false + // fetch starting info for delegation + startingInfo, err := k.DistrKeeper.GetDelegatorStartingInfo(ctx, sdk.ValAddress(del.GetValidatorAddr()), sdk.AccAddress(del.GetDelegatorAddr())) + if err != nil { + return + } + if startingInfo.Height == uint64(ctx.BlockHeight()) { + // started this height, no rewards yet + return + } + + startingPeriod := startingInfo.PreviousPeriod + stake := startingInfo.Stake + startingHeight := startingInfo.Height + endingHeight := uint64(ctx.BlockHeight()) + if endingHeight > startingHeight { + k.DistrKeeper.IterateValidatorSlashEventsBetween(ctx, sdk.ValAddress(del.GetValidatorAddr()), startingHeight, endingHeight, + func(height uint64, event distrtypes.ValidatorSlashEvent) (stop bool) { + endingPeriod := event.ValidatorPeriod + if endingPeriod > startingPeriod { + rewards = rewards.Add(customCalculateDelegationRewardsBetween(ctx, k, val, startingPeriod, endingPeriod, stake)...) + // Note: It is necessary to truncate so we don't allow withdrawing + // more rewards than owed. + stake = stake.MulTruncate(math.LegacyOneDec().Sub(event.Fraction)) + startingPeriod = endingPeriod + } + return false + }, + ) + } + + currentStake := val.TokensFromShares(del.GetShares()) + fmt.Printf("del: %q", del.GetDelegatorAddr()) + fmt.Printf("val: %q", del.GetValidatorAddr()) + fmt.Printf("stake: %q", stake) + fmt.Printf("currentStake: %q", currentStake) + if stake.GT(currentStake) { + marginOfErr := currentStake.Mul(math.LegacyNewDecWithPrec(50, 3)) // 5.0% + if stake.LTE(currentStake.Add(marginOfErr)) { + stake = currentStake + patched = true + } else { + panic(fmt.Sprintln("current stake is not delgator from slashed validator, and is more than maximum margin of error")) + } + } + // calculate rewards for final period + rewards = rewards.Add(customCalculateDelegationRewardsBetween(ctx, k, val, startingPeriod, endingPeriod, stake)...) + return rewards, patched +} + +func customCalculateDelegationRewardsBetween(ctx sdk.Context, k *keepers.AppKeepers, val stakingtypes.ValidatorI, + startingPeriod, endingPeriod uint64, stake math.LegacyDec, +) (rewards sdk.DecCoins) { + // sanity check + if startingPeriod > endingPeriod { + panic("startingPeriod cannot be greater than endingPeriod") + } + + // sanity check + if stake.IsNegative() { + panic("stake should not be negative") + } + + // return staking * (ending - starting) + starting, _ := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, sdk.ValAddress(val.GetOperator()), startingPeriod) + ending, _ := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, sdk.ValAddress(val.GetOperator()), endingPeriod) + difference := ending.CumulativeRewardRatio.Sub(starting.CumulativeRewardRatio) + if difference.IsAnyNegative() { + panic("negative rewards should not be possible") + } + // note: necessary to truncate so we don't allow withdrawing more rewards than owed + rewards = difference.MulDecTruncate(stake) + return +} + +// decrement the reference count for a historical rewards value, and delete if zero references remain +func customDecrementReferenceCount(ctx sdk.Context, k *keepers.AppKeepers, valAddr sdk.ValAddress, period uint64) { + historical, _ := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, valAddr, period) + if historical.ReferenceCount == 0 { + panic("cannot set negative reference count") + } + historical.ReferenceCount-- + if historical.ReferenceCount == 0 { + + k.DistrKeeper.DeleteValidatorHistoricalReward(ctx, valAddr, period) + } else { + k.DistrKeeper.SetValidatorHistoricalRewards(ctx, valAddr, period, historical) + } +} + +// increment the reference count for a historical rewards value +func incrementReferenceCount(ctx sdk.Context, k *keepers.AppKeepers, valAddr sdk.ValAddress, period uint64) { + historical, _ := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, valAddr, period) + if historical.ReferenceCount > 2 { + panic("reference count should never exceed 2") + } + historical.ReferenceCount++ + k.DistrKeeper.SetValidatorHistoricalRewards(ctx, valAddr, period, historical) +} + +// calculate the token worth of provided shares, truncated +func CustommTokensFromSharesTruncated(t math.Int, ds math.LegacyDec, shares math.LegacyDec) math.LegacyDec { + return (shares.MulInt(t)).QuoTruncate(ds) +} diff --git a/app/upgrades/v022/constants.go b/app/upgrades/v022/constants.go new file mode 100644 index 00000000..f42ea7d8 --- /dev/null +++ b/app/upgrades/v022/constants.go @@ -0,0 +1,60 @@ +package v022 + +import ( + store "cosmossdk.io/store/types" + "github.com/bitsongofficial/go-bitsong/app/upgrades" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + protocolpooltypes "github.com/cosmos/cosmos-sdk/x/protocolpool/types" +) + +const ( + UpgradeName = "v022" + PatchVal1 = "bitsongvaloper1qxw4fjged2xve8ez7nu779tm8ejw92rv0vcuqr" + PatchVal2 = "bitsongvaloper1xnc32z84cc9vwftvv4w0v02a2slug3tjt6qyct" +) + +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + CreateUpgradeHandler: CreateV022UpgradeHandler, + StoreUpgrades: store.StoreUpgrades{Added: []string{ + protocolpooltypes.StoreKey, + }, Deleted: []string{}}, +} + +type ConditionalJSON struct { + PatchDelegationCount uint + PatchedHistRewards []distrtypes.ValidatorHistoricalRewardsRecord + ZeroSharesDelegation []ZeroSharesDelegation + PatchedDelegation []PatchedDelegation + NilDelegationCalculation []NilDelegationCalculation + DistSlashStore DistrSlashObject +} + +type DistrSlashObject struct { + SlashEventCount uint64 `json:"total_slashes"` + DistrSlashEvent []map[string][]Slash `json:"events"` +} +type DistrSlashEvent struct { + Val string `json:"val_addr"` + SlashEventCount uint64 `json:"total"` + Slashes []Slash `json:"slash_events"` +} +type Slash struct { + Height uint64 `json:"height"` + Fraction string `json:"fraction"` + Period uint64 `json:"period"` +} + +type ZeroSharesDelegation struct { + OperatorAddress string `json:"val_addr"` + DelegatorAddress string `json:"del_addr"` +} +type PatchedDelegation struct { + OperatorAddress string `json:"val_addr"` + DelegatorAddress string `json:"del_addr"` + PatchedDelegation string `json:"patch"` +} +type NilDelegationCalculation struct { + OperatorAddress string `json:"val_addr"` + DelegatorAddress string `json:"del_addr"` +} diff --git a/app/upgrades/v022/upgrades.go b/app/upgrades/v022/upgrades.go new file mode 100644 index 00000000..92c52c09 --- /dev/null +++ b/app/upgrades/v022/upgrades.go @@ -0,0 +1,515 @@ +package v022 + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "cosmossdk.io/math" + upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/bitsongofficial/go-bitsong/app/keepers" + "github.com/bitsongofficial/go-bitsong/app/upgrades" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +func CreateV022UpgradeHandler(mm *module.Manager, configurator module.Configurator, bpm upgrades.BaseAppParamManager, k *keepers.AppKeepers) upgradetypes.UpgradeHandler { + return func(context context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + + sdkCtx := sdk.UnwrapSDKContext(context) + logger := sdkCtx.Logger().With("upgrade", UpgradeName) + + // Run migrations first + logger.Info(fmt.Sprintf("pre migrate version map: %v", vm)) + versionMap, err := mm.RunMigrations(sdkCtx, configurator, vm) + if err != nil { + return nil, err + } + + // apply logic patch + err = CustomV022PatchLogic(sdkCtx, k, false) + if err != nil { + return nil, err + } + logger.Info(fmt.Sprintf("post migrate version map: %v", versionMap)) + return versionMap, err + } +} + +// / Fetches all validators from x/staking, and query rewards for each of their delegations. +func CustomV022PatchLogic(ctx sdk.Context, k *keepers.AppKeepers, simulated bool) error { + + err := CustomValPatch(ctx, k, simulated) + if err != nil { + return err + } + + return nil +} + +// withdraws all rewards to delegations for this val. +func CustomValPatch(sdkCtx sdk.Context, k *keepers.AppKeepers, simulated bool) error { + condJSON := ConditionalJSON{ + PatchDelegationCount: 0, + PatchedHistRewards: make([]distrtypes.ValidatorHistoricalRewardsRecord, 0), + PatchedDelegation: make([]PatchedDelegation, 0), + ZeroSharesDelegation: make([]ZeroSharesDelegation, 0), + NilDelegationCalculation: make([]NilDelegationCalculation, 0), + DistSlashStore: DistrSlashObject{}, + } + + allVals, err := k.StakingKeeper.GetAllValidators(sdkCtx) + if err != nil { + return err + } + + for _, val := range allVals { + valAddr, err := k.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.OperatorAddress) + if err != nil { + return err + } + + dels, err := k.StakingKeeper.GetValidatorDelegations(sdkCtx, sdk.ValAddress(valAddr)) + if err != nil { + return err + } + /* patch all delegators rewards */ + for _, del := range dels { + // if delegation has 0 shares, remove from store: https://github.com/permissionlessweb/bitsong-cosmos-sdk/blob/92e7f67f9601e5f2dc7b1daebd24e8a37efbcc72/x/staking/keeper/delegation.go#L1026 + if del.GetShares().LTE(math.LegacyZeroDec()) { + // remove from store + err = k.StakingKeeper.RemoveDelegation(sdkCtx, stakingtypes.NewDelegation(del.GetDelegatorAddr(), del.GetValidatorAddr(), del.GetShares())) + condJSON.ZeroSharesDelegation = append(condJSON.ZeroSharesDelegation, ZeroSharesDelegation{ + OperatorAddress: del.ValidatorAddress, + DelegatorAddress: del.DelegatorAddress, + }) + if err != nil { + return err + } + continue + } + val, err := sdk.ValAddressFromBech32(del.ValidatorAddress) + if err != nil { + return err + } + delAddr, err := k.AccountKeeper.AddressCodec().StringToBytes(del.GetDelegatorAddr()) + if err != nil { + return err + } + validator, err := k.StakingKeeper.Validator(sdkCtx, val) + if err != nil { + return err + } + + // end current period and calculate rewards + endingPeriod, err := k.DistrKeeper.IncrementValidatorPeriod(sdkCtx, validator) + if err != nil { + return err + } + + delegationRewards, patched := CustomCalculateDelegationRewards(sdkCtx, k, validator, del, endingPeriod) + if patched { + condJSON.PatchDelegationCount++ + condJSON.PatchedDelegation = append(condJSON.PatchedDelegation, PatchedDelegation{ + OperatorAddress: del.ValidatorAddress, + DelegatorAddress: del.DelegatorAddress, + PatchedDelegation: delegationRewards.AmountOf("ubtsg").String(), + }) + if delegationRewards == nil { + condJSON.NilDelegationCalculation = append(condJSON.NilDelegationCalculation, NilDelegationCalculation{ + OperatorAddress: del.ValidatorAddress, + DelegatorAddress: del.DelegatorAddress, + }) + } + _, err := CustomWithdrawDelegationRewards(sdkCtx, k, validator, del, endingPeriod) + + if err != nil { + return err + + } + + // reinitialize the delegation + err = customInitializeDelegation(sdkCtx, *k, val, delAddr) + if err != nil { + return err + } + } + + } + + if val.OperatorAddress == PatchVal1 || val.OperatorAddress == PatchVal2 { + rewards, err := k.DistrKeeper.GetValidatorCurrentRewards(sdkCtx, valAddr) + if err != nil { + return err + } + fmt.Printf("rewards: %v\n", rewards) + // set ghost slash event + err = k.DistrKeeper.SetValidatorSlashEvent(sdkCtx, valAddr, 1, rewards.Period, distrtypes.NewValidatorSlashEvent(rewards.Period, math.LegacySmallestDec())) + if err != nil { + return err + } + } + } + + k.DistrKeeper.IterateValidatorHistoricalRewards(sdkCtx, + func(val sdk.ValAddress, period uint64, rewards distrtypes.ValidatorHistoricalRewards) (stop bool) { + if val.String() == PatchVal1 || val.String() == PatchVal2 { + // print to logs and update validator reward reference to 1 + condJSON.PatchedHistRewards = append(condJSON.PatchedHistRewards, distrtypes.ValidatorHistoricalRewardsRecord{ + ValidatorAddress: val.String(), + Period: period, + Rewards: rewards, + }) + // update reference count to 1 + // rewards.ReferenceCount = 1 + // err := k.DistrKeeper.SetValidatorHistoricalRewards(sdkCtx, val, period, rewards) + // if err != nil { + // panic(err) + // } + } + return false + }, + ) + + // count slashes for all current validators + // Create a map to track validators and their slash events + validatorSlashMap := make(map[string][]Slash) + slashCount := uint64(0) + k.DistrKeeper.IterateValidatorSlashEvents(sdkCtx, + func(val sdk.ValAddress, height uint64, vse distrtypes.ValidatorSlashEvent) (stop bool) { + valAddr := val.String() + event := Slash{ + Height: height, + Fraction: vse.Fraction.String(), + Period: vse.ValidatorPeriod, + } + validatorSlashMap[valAddr] = append(validatorSlashMap[valAddr], event) + slashCount++ + + return false + }) + + condJSON.DistSlashStore.DistrSlashEvent = make([]map[string][]Slash, 0, len(validatorSlashMap)) + for valAddr, slashes := range validatorSlashMap { + condJSON.DistSlashStore.DistrSlashEvent = append(condJSON.DistSlashStore.DistrSlashEvent, + map[string][]Slash{valAddr: slashes}) + } + condJSON.DistSlashStore.SlashEventCount = slashCount + + PrintConditionalJsonLogs(condJSON, "upgradeHandlerDebug.json") + + return nil +} + +func PrintConditionalJsonLogs(condJSON ConditionalJSON, fileName string) error { + // Marshal the ConditionalJSON object to JSON + jsonBytes, err := json.MarshalIndent(condJSON, "", " ") + if err != nil { + fmt.Printf("Failed to marshal and indent conditional logs, continuing with upgrade... %s\n", fileName) + } + // Write the JSON to a file + err = os.WriteFile(fileName, jsonBytes, 0644) + if err != nil { + fmt.Printf("Failed to write debugging log, continuing with upgrade... %s\n", fileName) + } + fmt.Printf("Wrote conditionals to %s\n", fileName) + return nil +} + +func CustomCalculateDelegationRewards(ctx context.Context, k *keepers.AppKeepers, val stakingtypes.ValidatorI, del stakingtypes.DelegationI, endingPeriod uint64) (rewards sdk.DecCoins, patched bool) { + patched = false + // fetch starting info for delegation + addrCodec := k.AccountKeeper.AddressCodec() + delAddr, err := addrCodec.StringToBytes(del.GetDelegatorAddr()) + if err != nil { + panic(err) + } + + valAddr, err := k.StakingKeeper.ValidatorAddressCodec().StringToBytes(del.GetValidatorAddr()) + if err != nil { + panic(err) + } + startingInfo, err := k.DistrKeeper.GetDelegatorStartingInfo(ctx, sdk.ValAddress(valAddr), sdk.AccAddress(delAddr)) + if err != nil { + panic(err) + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + if startingInfo.Height == uint64(sdkCtx.BlockHeight()) { + // started this height, no rewards yet + return + } + + startingPeriod := startingInfo.PreviousPeriod + stake := startingInfo.Stake + + startingHeight := startingInfo.Height + endingHeight := uint64(sdkCtx.BlockHeight()) + if endingHeight > startingHeight { + k.DistrKeeper.IterateValidatorSlashEventsBetween(ctx, valAddr, startingHeight, endingHeight, + func(height uint64, event distrtypes.ValidatorSlashEvent) (stop bool) { + endingPeriod := event.ValidatorPeriod + if endingPeriod > startingPeriod { + rewards = rewards.Add(customCalculateDelegationRewardsBetween(sdkCtx, k, val, startingPeriod, endingPeriod, stake)...) + // Note: It is necessary to truncate so we don't allow withdrawing + // more rewards than owed. + stake = stake.MulTruncate(math.LegacyOneDec().Sub(event.Fraction)) + startingPeriod = endingPeriod + } + return false + }, + ) + } + + currentStake := val.TokensFromShares(del.GetShares()) + fmt.Printf("currentStake: %v\n", currentStake) + fmt.Printf("stake: %v\n", stake) + + if stake.GT(currentStake) { + marginOfErr := currentStake.Mul(math.LegacyNewDecWithPrec(95, 3)) // 0.095 + if stake.LTE(currentStake.Add(marginOfErr)) { + fmt.Printf("PATCH APPLIED TO DELEGATOR: %v\n FOR VALIDATOR: %v\n", del.GetDelegatorAddr(), del.GetValidatorAddr()) + fmt.Printf("distribution store: %v\n", stake) + fmt.Printf("staking store: %v\n", currentStake) + fmt.Printf("startingInfo.PreviousPeriod: %v\n", startingInfo.PreviousPeriod) + stake = currentStake + patched = true + } else { + fmt.Printf("marginOfErr: %v\n", marginOfErr) + panic(fmt.Sprintf("calculated final stake for delegator %s,to validator %s, greater than current stake"+ + "\n\tfinal stake:\t%s"+ + "\n\tcurrent stake:\t%s", + del.GetDelegatorAddr(), del.GetValidatorAddr(), stake, currentStake)) + } + } + // calculate rewards for final period + rewards = rewards.Add(customCalculateDelegationRewardsBetween(ctx, k, val, startingPeriod, endingPeriod, stake)...) + return rewards, patched +} + +func CustomWithdrawDelegationRewards(ctx context.Context, k *keepers.AppKeepers, val stakingtypes.ValidatorI, del stakingtypes.DelegationI, endingPeriod uint64) (sdk.Coins, error) { + addrCodec := k.AccountKeeper.AddressCodec() + delAddr, err := addrCodec.StringToBytes(del.GetDelegatorAddr()) + if err != nil { + return nil, err + } + valAddr, err := k.StakingKeeper.ValidatorAddressCodec().StringToBytes(del.GetValidatorAddr()) + if err != nil { + return nil, err + } + // check existence of delegator starting info + hasInfo, err := k.DistrKeeper.HasDelegatorStartingInfo(ctx, sdk.ValAddress(valAddr), sdk.AccAddress(delAddr)) + if err != nil { + return nil, err + } + if !hasInfo { + return nil, distrtypes.ErrEmptyDelegationDistInfo + } + + // custom calc reward for use elsewhere + customCalculatedrewards, patched := CustomCalculateDelegationRewards(ctx, k, val, del, endingPeriod) + if !patched { + panic("applying patch to delegation that should not have been patched, panic!") + } + outstanding, err := k.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, sdk.ValAddress(valAddr)) + if err != nil { + return nil, err + } + // defensive edge case may happen on the very final digits + // of the decCoins due to operation order of the distribution mechanism. + rewards := customCalculatedrewards.Intersect(outstanding) + if !rewards.Equal(customCalculatedrewards) { + logger := k.DistrKeeper.Logger(ctx) + logger.Info( + "rounding error withdrawing rewards from validator", + "delegator", del.GetDelegatorAddr(), + "validator", val.GetOperator(), + "got", rewards.String(), + "expected", customCalculatedrewards.String(), + ) + } + + // truncate reward dec coins, return remainder to community pool + finalRewards, remainder := rewards.TruncateDecimal() + // add coins to user account + if !finalRewards.IsZero() { + withdrawAddr, err := k.DistrKeeper.GetDelegatorWithdrawAddr(ctx, delAddr) + if err != nil { + return nil, err + } + + err = k.BankKeeper.SendCoinsFromModuleToAccount(ctx, distrtypes.ModuleName, withdrawAddr, finalRewards) + + if err != nil { + senderAddr := k.AccountKeeper.GetModuleAddress(distrtypes.ModuleName) + distrBal := k.BankKeeper.GetAllBalances(ctx, senderAddr) + fmt.Printf("distrBal: %v\n", distrBal) + fmt.Printf("delAddr: %v\n", del.GetDelegatorAddr()) + fmt.Printf("senderAddr.String(): %v\n", senderAddr.String()) + // panic("distribution module has less than what it should have") + return nil, err + } + } + + // update the outstanding rewards and the community pool only if the + // transaction was successful + err = k.DistrKeeper.SetValidatorOutstandingRewards(ctx, sdk.ValAddress(valAddr), distrtypes.ValidatorOutstandingRewards{Rewards: outstanding.Sub(rewards)}) + if err != nil { + return nil, err + } + + feePool, err := k.DistrKeeper.FeePool.Get(ctx) + if err != nil { + return nil, err + } + + feePool.CommunityPool = feePool.CommunityPool.Add(remainder...) + err = k.DistrKeeper.FeePool.Set(ctx, feePool) + if err != nil { + return nil, err + } + // decrement reference count of starting period + startingInfo, err := k.DistrKeeper.GetDelegatorStartingInfo(ctx, sdk.ValAddress(valAddr), sdk.AccAddress(delAddr)) + if err != nil { + return nil, err + } + startingPeriod := startingInfo.PreviousPeriod + err = customDecrementReferenceCount(ctx, k, sdk.ValAddress(valAddr), startingPeriod) + if err != nil { + return nil, err + } + // remove delegator starting info + err = k.DistrKeeper.DeleteDelegatorStartingInfo(ctx, sdk.ValAddress(valAddr), sdk.AccAddress(delAddr)) + if err != nil { + return nil, err + } + if finalRewards.IsZero() { + baseDenom, _ := sdk.GetBaseDenom() + if baseDenom == "" { + baseDenom = sdk.DefaultBondDenom + } + + // Note, we do not call the NewCoins constructor as we do not want the zero + // coin removed. + finalRewards = sdk.Coins{sdk.NewCoin(baseDenom, math.ZeroInt())} + } + sdkCtx := sdk.UnwrapSDKContext(ctx) + sdkCtx.EventManager().EmitEvent( + sdk.NewEvent( + distrtypes.EventTypeWithdrawRewards, + sdk.NewAttribute(sdk.AttributeKeyAmount, finalRewards.String()), + sdk.NewAttribute(distrtypes.AttributeKeyValidator, val.GetOperator()), + sdk.NewAttribute(distrtypes.AttributeKeyDelegator, del.GetDelegatorAddr()), + ), + ) + + return finalRewards, nil +} + +func customCalculateDelegationRewardsBetween(ctx context.Context, k *keepers.AppKeepers, val stakingtypes.ValidatorI, + startingPeriod, endingPeriod uint64, stake math.LegacyDec, +) (rewards sdk.DecCoins) { + // sanity check + if startingPeriod > endingPeriod { + panic("startingPeriod cannot be greater than endingPeriod") + } + // fmt.Printf("startingPeriod: %v\n", startingPeriod) + // fmt.Printf("endingPeriod: %v\n", endingPeriod) + // sanity check + if stake.IsNegative() { + panic("stake should not be negative") + } + valBz, err := k.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) + if err != nil { + panic(err) + } + + // return staking * (ending - starting) + starting, err := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, valBz, startingPeriod) + if err != nil { + panic(err) + } + ending, err := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, valBz, endingPeriod) + if err != nil { + panic(err) + } + + difference := ending.CumulativeRewardRatio.Sub(starting.CumulativeRewardRatio) + if difference.IsAnyNegative() { + panic("negative rewards should not be possible") + } + // fmt.Printf("starting: %v\n", ending) + // fmt.Printf("ending: %v\n", starting) + // fmt.Printf("stake: %v\n", stake) + // fmt.Printf("difference: %v\n", difference) + // fmt.Printf("rewards: %v\n", rewards) + // note: necessary to truncate so we don't allow withdrawing more rewards than owed + rewards = difference.MulDecTruncate(stake) + return rewards +} + +// increment the reference count for a historical rewards value +func customIncrementReferenceCount(ctx context.Context, k keepers.AppKeepers, valAddr sdk.ValAddress, period uint64) error { + historical, err := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, valAddr, period) + if err != nil { + return err + } + if historical.ReferenceCount > 2 { + fmt.Printf("valAddr.String(): %v\n", valAddr.String()) + fmt.Printf("historical.ReferenceCount: %v\n", historical.ReferenceCount) + panic("reference count should never exceed 2") + } + historical.ReferenceCount++ + return k.DistrKeeper.SetValidatorHistoricalRewards(ctx, valAddr, period, historical) +} + +// decrement the reference count for a historical rewards value, and delete if zero references remain +func customDecrementReferenceCount(ctx context.Context, k *keepers.AppKeepers, valAddr sdk.ValAddress, period uint64) error { + historical, _ := k.DistrKeeper.GetValidatorHistoricalRewards(ctx, valAddr, period) + if historical.ReferenceCount == 0 { + panic("cannot set negative reference count") + } + historical.ReferenceCount-- + if historical.ReferenceCount == 0 { + return k.DistrKeeper.DeleteValidatorHistoricalReward(ctx, valAddr, period) + } + return k.DistrKeeper.SetValidatorHistoricalRewards(ctx, valAddr, period, historical) + +} + +// initialize starting info for a new delegation +func customInitializeDelegation(ctx context.Context, k keepers.AppKeepers, val sdk.ValAddress, del sdk.AccAddress) error { + // period has already been incremented - we want to store the period ended by this delegation action + valCurrentRewards, err := k.DistrKeeper.GetValidatorCurrentRewards(ctx, val) + if err != nil { + return err + } + previousPeriod := valCurrentRewards.Period - 1 + + // increment reference count for the period we're going to track + err = customIncrementReferenceCount(ctx, k, val, previousPeriod) + if err != nil { + return err + } + + validator, err := k.StakingKeeper.Validator(ctx, val) + if err != nil { + return err + } + + delegation, err := k.StakingKeeper.Delegation(ctx, del, val) + if err != nil { + return err + } + + // calculate delegation stake in tokens + // we don't store directly, so multiply delegation shares * (tokens per share) + // note: necessary to truncate so we don't allow withdrawing more rewards than owed + stake := validator.TokensFromSharesTruncated(delegation.GetShares()) + sdkCtx := sdk.UnwrapSDKContext(ctx) + return k.DistrKeeper.SetDelegatorStartingInfo(ctx, val, del, distrtypes.NewDelegatorStartingInfo(previousPeriod, stake, uint64(sdkCtx.BlockHeight()))) +} diff --git a/app/upgrades/v022/upgrades_test.go b/app/upgrades/v022/upgrades_test.go new file mode 100644 index 00000000..92ceb33c --- /dev/null +++ b/app/upgrades/v022/upgrades_test.go @@ -0,0 +1,223 @@ +package v022_test + +import ( + "fmt" + "testing" + "time" + + "cosmossdk.io/core/appmodule" + "cosmossdk.io/core/header" + "cosmossdk.io/math" + "cosmossdk.io/x/upgrade" + upgradetypes "cosmossdk.io/x/upgrade/types" + apptesting "github.com/bitsongofficial/go-bitsong/app/testing" + addresscodec "github.com/cosmos/cosmos-sdk/codec/address" + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/stretchr/testify/suite" +) + +const dummyUpgradeHeight = 5 + +var testDescription = stakingtypes.NewDescription("test_moniker", "test_identity", "test_website", "test_security_contact", "test_details") + +type UpgradeTestSuite struct { + apptesting.KeeperTestHelper + preModule appmodule.HasPreBlocker +} + +func (s *UpgradeTestSuite) SetupTest() { + s.Setup() + s.preModule = upgrade.NewAppModule(s.App.UpgradeKeeper, addresscodec.NewBech32Codec("bitsong")) +} + +func TestUpgradeTestSuite(t *testing.T) { + suite.Run(t, new(UpgradeTestSuite)) +} + +func (s *UpgradeTestSuite) TestUpgrade() { + upgradeSetup := func(zeroDel bool) { + s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight - 2) + + vals, _ := s.App.StakingKeeper.GetAllValidators(s.Ctx) + for i, val := range vals { + + valAddr, _ := sdk.ValAddressFromBech32(val.OperatorAddress) + val.Tokens = math.LegacyNewDecFromInt(val.Tokens).MulTruncate(math.LegacyOneDec().Sub(math.LegacyNewDecWithPrec(1, 3))).RoundInt() // 1 % slash + //manually set validator historic rewards + s.App.DistrKeeper.SetValidatorHistoricalRewards( + s.Ctx, + valAddr, + 1, + types.NewValidatorHistoricalRewards(sdk.NewDecCoins(sdk.NewDecCoin("ubtsg", math.OneInt())), 2), // set reference to 2 + ) + + err := s.App.StakingKeeper.SetValidator(s.Ctx, val) + s.Require().NoError(err) + // store 0 share delegation to fist validator if test requires + if i == 0 && zeroDel { + s.App.StakingKeeper.SetDelegation(s.Ctx, stakingtypes.NewDelegation(s.TestAccs[0].String(), val.OperatorAddress, math.LegacyZeroDec())) + } + } + + // create another validator with normal state for control + s.controlVal() + + } + + postUpgrade := func(sdk.ValAddress) { + s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight + 1) + + // Verify control validator's rewards remain unchanged + + // withdraw all delegator rewards + dels, err := s.App.StakingKeeper.GetAllDelegations(s.Ctx) + s.Require().NoError(err) + for _, delegation := range dels { + valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress) + s.Require().NoError(err) + delAddr, err := sdk.AccAddressFromBech32(delegation.DelegatorAddress) + s.Require().NoError(err) + fmt.Println("~~~~~~~~~ POST UPGRADE DEBUG ~~~~~~~~~~~~") + fmt.Printf("delAddr: %v\n", delAddr) + fmt.Printf("valAddr: %v\n", valAddr) + _, err = s.App.DistrKeeper.WithdrawDelegationRewards(s.Ctx, delAddr, valAddr) + s.Require().NoError(err) + } + } + + testCases := []struct { + name string + pre_upgrade func() (sdk.ValAddress, types.ValidatorHistoricalRewards) + upgrade func() + post_upgrade func(sdk.ValAddress, types.ValidatorHistoricalRewards) + }{ + { + "test: missing slash event patched", + func() (sdk.ValAddress, types.ValidatorHistoricalRewards) { + upgradeSetup(false) + controlValAddr, controlRewardsBefore := s.getControlValidatorState() + return controlValAddr, controlRewardsBefore + }, + func() { + dummyUpgrade(s) + s.Require().NotPanics(func() { + _, err := s.preModule.PreBlock(s.Ctx) + s.Require().NoError(err) + }) + + }, + func(controlValAddr sdk.ValAddress, controlRewardsBefore types.ValidatorHistoricalRewards) { + s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight + 1) + + // Verify control validator's rewards remain unchanged + controlRewardsAfter, err := s.App.DistrKeeper.GetValidatorHistoricalRewards(s.Ctx, controlValAddr, 1) + s.Require().NoError(err, "Control validator rewards should still exist after upgrade") + // Compare the control validator's rewards before and after upgrade + s.Require().Equal(controlRewardsBefore.CumulativeRewardRatio, controlRewardsAfter.CumulativeRewardRatio, + "Control validator rewards should be untouched") + }, + }, + { + "test: zero delegation removed from store", + func() (sdk.ValAddress, types.ValidatorHistoricalRewards) { + upgradeSetup(true) + controlValAddr, controlRewardsBefore := s.getControlValidatorState() + return controlValAddr, controlRewardsBefore + }, + func() { + dummyUpgrade(s) + s.Require().NotPanics(func() { + _, err := s.preModule.PreBlock(s.Ctx) + s.Require().NoError(err) + }) + + }, + func(controlValAddr sdk.ValAddress, controlRewardsBefore types.ValidatorHistoricalRewards) { + postUpgrade(controlValAddr) + + }, + }, + } + + for _, tc := range testCases { + s.Run(fmt.Sprintf("Case %s", tc.name), func() { + s.SetupTest() // reset + controlValAddr, controlRewardsBefore := tc.pre_upgrade() + tc.upgrade() + tc.post_upgrade(controlValAddr, controlRewardsBefore) + }) + } +} + +func dummyUpgrade(s *UpgradeTestSuite) { + s.Ctx = s.Ctx.WithBlockHeight(dummyUpgradeHeight - 1) + plan := upgradetypes.Plan{Name: "v022", Height: dummyUpgradeHeight} + err := s.App.UpgradeKeeper.ScheduleUpgrade(s.Ctx, plan) + s.Require().NoError(err) + _, err = s.App.UpgradeKeeper.GetUpgradePlan(s.Ctx) + s.Require().NoError(err) + + s.Ctx = s.Ctx.WithHeaderInfo(header.Info{Height: dummyUpgradeHeight, Time: s.Ctx.BlockTime().Add(time.Second)}).WithBlockHeight(dummyUpgradeHeight) +} + +func (s *UpgradeTestSuite) controlVal() { + valPub := secp256k1.GenPrivKey().PubKey() + valAddr := sdk.ValAddress(valPub.Address()) + ZeroCommission := stakingtypes.NewCommissionRates(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec()) + selfBond := sdk.NewCoins(sdk.Coin{Amount: math.OneInt(), Denom: "stake"}) + stakingCoin := sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: selfBond[0].Amount} + s.FundAcc(sdk.AccAddress(valAddr), selfBond) + valCreateMsg, err := stakingtypes.NewMsgCreateValidator(valAddr.String(), valPub, stakingCoin, testDescription, ZeroCommission, math.OneInt()) + s.Require().NoError(err) + stakingMsgSvr := stakingkeeper.NewMsgServerImpl(s.App.StakingKeeper) + res, err := stakingMsgSvr.CreateValidator(s.Ctx, valCreateMsg) + fmt.Printf("err: %v\n", err) + s.Require().NoError(err) + s.Require().NotNil(res) + + // set normal rewards + s.App.DistrKeeper.SetValidatorHistoricalRewards( + s.Ctx, + valAddr, + 1, + types.NewValidatorHistoricalRewards(sdk.NewDecCoins(sdk.NewDecCoin("ubtsg", math.NewInt(100))), 2), // set reference to 2 + ) + val, err := s.App.StakingKeeper.GetValidator(s.Ctx, valAddr) + s.Require().NoError(err) + err = s.App.StakingKeeper.SetValidator(s.Ctx, val) +} + +// Helper function to get control validator state +func (s *UpgradeTestSuite) getControlValidatorState() (sdk.ValAddress, types.ValidatorHistoricalRewards) { + // Find the control validator (the one created in controlVal function) + vals, err := s.App.StakingKeeper.GetAllValidators(s.Ctx) + s.Require().NoError(err) + + // The control validator should be the last one we added + var controlValAddr sdk.ValAddress + for _, val := range vals { + // Find the validator that was created in controlVal() - you could add a distinctive + // attribute in controlVal() to make this easier to identify + if val.GetMoniker() == "test_moniker" && val.GetTokens().Equal(math.OneInt()) { + fmt.Printf("val.OperatorAddress: %v\n", val.OperatorAddress) + valAddr, err := sdk.ValAddressFromBech32(val.OperatorAddress) + s.Require().NoError(err) + controlValAddr = valAddr + break + } + } + + s.Require().NotNil(controlValAddr, "Control validator not found") + fmt.Printf("controlValAddr: %v\n", controlValAddr) + + // Get its historical rewards + rewards, found := s.App.DistrKeeper.GetValidatorHistoricalRewards(s.Ctx, controlValAddr, 1) + s.Require().NoError(found, "Control validator rewards should exist") + + return controlValAddr, rewards +} diff --git a/cmd/bitsongd/cmd/custom_export.go b/cmd/bitsongd/cmd/custom_export.go new file mode 100644 index 00000000..86827885 --- /dev/null +++ b/cmd/bitsongd/cmd/custom_export.go @@ -0,0 +1,150 @@ +package cmd + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "os" + "path/filepath" + + "github.com/spf13/cobra" + + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/server" + + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/version" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" +) + +const ( + FlagHeight = "height" + FlagForZeroHeight = "for-zero-height" + FlagJailAllowedAddrs = "jail-allowed-addrs" + FlagNewOperatorAddr = "modules-to-export" +) + +// ExportCmd dumps app state to JSON. +func CustomExportCmd(appExporter servertypes.AppExporter, defaultNodeHome string) *cobra.Command { + cmd := &cobra.Command{ + Use: "custom-export", + Short: "Debug v022 upgradeHandler logic, via simulated export state.", + Args: cobra.NoArgs, // Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + serverCtx := server.GetServerContextFromCmd(cmd) + config := serverCtx.Config + + // Set testnet keys to be used by the application. + // This is done to prevent changes to existing start API. + serverCtx.Viper.Set(server.KeyIsTestnet, true) + + homeDir, _ := cmd.Flags().GetString(flags.FlagHome) + config.SetRoot(homeDir) + + if _, err := os.Stat(config.GenesisFile()); os.IsNotExist(err) { + return err + } + + db, err := openDB(config.RootDir, server.GetAppDBBackend(serverCtx.Viper)) + if err != nil { + return err + } + + if appExporter == nil { + if _, err := fmt.Fprintln(cmd.ErrOrStderr(), "WARNING: App exporter not defined. Returning genesis file."); err != nil { + return err + } + + // Open file in read-only mode so we can copy it to stdout. + // It is possible that the genesis file is large, + // so we don't need to read it all into memory + // before we stream it out. + f, err := os.OpenFile(config.GenesisFile(), os.O_RDONLY, 0) + if err != nil { + return err + } + defer f.Close() + + if _, err := io.Copy(cmd.OutOrStdout(), f); err != nil { + return err + } + + return nil + } + + traceWriterFile, _ := cmd.Flags().GetString("trace-store") + traceWriter, err := openTraceWriter(traceWriterFile) + + if err != nil { + return err + } + + // todo: add list of validators to retain power for testnet + height, _ := cmd.Flags().GetInt64(FlagHeight) + jailAllowedAddrs, _ := cmd.Flags().GetStringSlice(FlagJailAllowedAddrs) + modulesToExport, _ := cmd.Flags().GetStringSlice(server.FlagModulesToExport) + outputDocument, _ := cmd.Flags().GetString(flags.FlagOutputDocument) + + exported, err := appExporter(serverCtx.Logger, db, traceWriter, height, true, jailAllowedAddrs, serverCtx.Viper, modulesToExport) + if err != nil { + return fmt.Errorf("error exporting state: %w", err) + } + + appGenesis, err := genutiltypes.AppGenesisFromFile(serverCtx.Config.GenesisFile()) + if err != nil { + return err + } + + // set current binary version + appGenesis.AppName = version.AppName + appGenesis.AppVersion = version.Version + + appGenesis.AppState = exported.AppState + appGenesis.InitialHeight = exported.Height + appGenesis.Consensus = genutiltypes.NewConsensusGenesis(exported.ConsensusParams, exported.Validators) + + out, err := json.Marshal(appGenesis) + if err != nil { + return err + } + + if outputDocument == "" { + // Copy the entire genesis file to stdout. + _, err := io.Copy(cmd.OutOrStdout(), bytes.NewReader(out)) + return err + } + + if err = appGenesis.SaveAs(outputDocument); err != nil { + return err + } + + return nil + }, + } + + cmd.Flags().String(flags.FlagHome, defaultNodeHome, "The application home directory") + cmd.Flags().Int64(FlagHeight, -1, "Export state from a particular height (-1 means latest height)") + cmd.Flags().StringSlice(FlagJailAllowedAddrs, []string{}, "Comma-separated list of operator addresses of jailed validators to unjail") + cmd.Flags().StringSlice(server.FlagModulesToExport, []string{}, "Comma-separated list of modules to export. If empty, will export all modules") + cmd.Flags().String(flags.FlagOutputDocument, "", "Exported state is written to the given file instead of STDOUT") + + return cmd +} + +func openDB(rootDir string, backendType dbm.BackendType) (dbm.DB, error) { + dataDir := filepath.Join(rootDir, "data") + return dbm.NewDB("application", backendType, dataDir) +} + +func openTraceWriter(traceWriterFile string) (w io.WriteCloser, err error) { + if traceWriterFile == "" { + return + } + return os.OpenFile( + traceWriterFile, + os.O_WRONLY|os.O_APPEND|os.O_CREATE, + 0o666, + ) +} diff --git a/cmd/bitsongd/cmd/genesis.go b/cmd/bitsongd/cmd/genesis.go index bef36b75..d74dcbb6 100644 --- a/cmd/bitsongd/cmd/genesis.go +++ b/cmd/bitsongd/cmd/genesis.go @@ -87,8 +87,6 @@ func MainnetGenesisParams() GenesisParams { genParams.MintParams.MintDenom = appparams.MicroCoinUnit genParams.DistributionParams = distributiontypes.DefaultParams() - genParams.DistributionParams.BaseProposerReward = math.LegacyMustNewDecFromStr("0.01") - genParams.DistributionParams.BonusProposerReward = math.LegacyMustNewDecFromStr("0.04") genParams.DistributionParams.CommunityTax = math.LegacyMustNewDecFromStr("0.02") genParams.DistributionParams.WithdrawAddrEnabled = true @@ -131,7 +129,7 @@ func TestnetGenesisParams() GenesisParams { genParams.StakingParams.UnbondingTime = time.Hour * 24 * 7 * 2 // 2 weeks - genParams.GovParams.DepositParams.MinDeposit = sdk.NewCoins(sdk.NewCoin( + genParams.GovParams.Params.MinDeposit = sdk.NewCoins(sdk.NewCoin( appparams.MicroCoinUnit, math.NewInt(1000000), // 1 BTSG )) @@ -173,9 +171,7 @@ func PrepareGenesis(clientCtx client.Context, appState map[string]json.RawMessag appState[distributiontypes.ModuleName] = distributionGenStateBz govGenState := v1govtypes.DefaultGenesisState() - govGenState.DepositParams = genesisParams.GovParams.DepositParams - govGenState.TallyParams = genesisParams.GovParams.TallyParams - govGenState.VotingParams = genesisParams.GovParams.VotingParams + govGenState.Params = genesisParams.GovParams.Params govGenStateBz, err := depCdc.MarshalJSON(govGenState) if err != nil { return nil, nil, fmt.Errorf("failed to marshal gov genesis state: %w", err) diff --git a/cmd/bitsongd/cmd/root.go b/cmd/bitsongd/cmd/root.go index 4952e93f..a365573e 100644 --- a/cmd/bitsongd/cmd/root.go +++ b/cmd/bitsongd/cmd/root.go @@ -34,6 +34,7 @@ import ( // rosettaCmd "cosmossdk.io/tools/rosetta/cmd" bitsong "github.com/bitsongofficial/go-bitsong/app" + testnetserver "github.com/bitsongofficial/go-bitsong/server" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" "github.com/cosmos/cosmos-sdk/client/flags" @@ -184,22 +185,9 @@ func initAppConfig() (string, interface{}) { Wasm wasmtypes.WasmConfig `mapstructure:"wasm"` } - // Optionally allow the chain developer to overwrite the SDK's default - // server config. + // modify the default server configuration srvCfg := serverconfig.DefaultConfig() - // The SDK's default minimum gas price is set to "" (empty value) inside - // app.toml. If left empty by validators, the node will halt on startup. - // However, the chain developer can set a default app.toml value for their - // validators here. - // - // In summary: - // - if you leave srvCfg.MinGasPrices = "", all validators MUST tweak their - // own app.toml config, - // - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their - // own app.toml to override, or use this default value. - // - // In simapp, we set the min gas prices to 0. - srvCfg.MinGasPrices = "0.001ubtsg" + srvCfg.MinGasPrices = "0.00069ubtsg" srvCfg.API.Enable = true srvCfg.API.Swagger = true // srvCfg.BaseConfig.IAVLDisableFastNode = true // disable fastnode by default @@ -266,7 +254,7 @@ func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig) { ) server.AddCommands(rootCmd, bitsong.DefaultNodeHome, newApp, appExport, addModuleInitFlags) - server.AddTestnetCreatorCommand(rootCmd, newTestnetApp, addModuleInitFlags) + testnetserver.AddTestnetCreatorCommand(rootCmd, newTestnetApp, addModuleInitFlags) wasmcli.ExtendUnsafeResetAllCmd(rootCmd) // add keybase, auxiliary RPC, query, and tx child commands @@ -277,6 +265,7 @@ func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig) { queryCommand(), txCommand(), keys.Commands(), + CustomExportCmd(customAppExport, bitsong.DefaultNodeHome), ) } @@ -405,8 +394,32 @@ func newTestnetApp(logger log.Logger, db cosmosdb.DB, traceStore io.Writer, appO if !ok { panic("upgradeToTrigger is not of type string") } + + //get the comma separated string of validators to migrate app state + brokenVal, ok := appOpts.Get(testnetserver.KeyBrokenValidator).(string) + if !ok { + panic("cannot parse broken validators strings") + } + + // brokenVals := strings.Split(brokenValidators, ",") + // fmt.Printf("brokenVals: %v\n", brokenVals) + + // get the json file to additional vals powers + // newValsPowerJson, ok := appOpts.Get(testnetserver.KeyNewValsPowerJson).(string) + // if !ok { + // panic(fmt.Errorf("expected path to new validators json %s", testnetserver.KeyNewValsPowerJson)) + // } + + // parse json to get list of validators + // [{"val": "bitsong1val...", "num_dels": , "num_tokens": ,"jailed": }] + // newValsPower, err := testnetserver.ParseValidatorInfos(newValsPowerJson) + // if err != nil { + // panic(fmt.Errorf("error parsing validator infos %v ", err)) + // } + // fmt.Printf("newValsPower: %v\n", newValsPower) + // Make modifications to the normal BitsongApp required to run the network locally - return bitsong.InitBitsongAppForTestnet(bitsongApp, newValAddr, newValPubKey, newOperatorAddress, upgradeToTrigger) + return bitsong.InitBitsongAppForTestnet(bitsongApp, newValAddr, newValPubKey, newOperatorAddress, upgradeToTrigger, brokenVal) //newValsPower } @@ -455,6 +468,54 @@ func appExport( return wasmApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) } + +// customAppExport creates a new wasm app (optionally at a given height) and exports state. +func customAppExport( + logger log.Logger, + db cosmosdb.DB, + traceStore io.Writer, + height int64, + forZeroHeight bool, + jailAllowedAddrs []string, + appOpts servertypes.AppOptions, + modulesToExport []string, +) (servertypes.ExportedApp, error) { + var wasmApp *bitsong.BitsongApp + homePath, ok := appOpts.Get(flags.FlagHome).(string) + if !ok || homePath == "" { + return servertypes.ExportedApp{}, errors.New("application home is not set") + } + + viperAppOpts, ok := appOpts.(*viper.Viper) + if !ok { + return servertypes.ExportedApp{}, errors.New("appOpts is not viper.Viper") + } + + // overwrite the FlagInvCheckPeriod + viperAppOpts.Set(server.FlagInvCheckPeriod, 1) + appOpts = viperAppOpts + + var emptyWasmOpts []wasmkeeper.Option + wasmApp = bitsong.NewBitsongApp( + logger, + db, + traceStore, + height == -1, + cast.ToString(appOpts.Get(flags.FlagHome)), + appOpts, + emptyWasmOpts, + ) + + if height != -1 { + if err := wasmApp.LoadHeight(height); err != nil { + return servertypes.ExportedApp{}, err + } + } + + return wasmApp.CustomExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) + +} + func autoCliOpts(initClientCtx client.Context, tempApp *bitsong.BitsongApp) autocli.AppOptions { modules := make(map[string]appmodule.AppModule, 0) for _, m := range tempApp.ModuleManager().Modules { diff --git a/go.mod b/go.mod index cedb51cc..c8c41106 100644 --- a/go.mod +++ b/go.mod @@ -1,25 +1,26 @@ module github.com/bitsongofficial/go-bitsong -go 1.23.0 +go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.9.2 cosmossdk.io/client/v2 v2.0.0-beta.3 - cosmossdk.io/core v0.11.1 - cosmossdk.io/errors v1.0.1 - cosmossdk.io/log v1.4.1 - cosmossdk.io/math v1.5.0 - cosmossdk.io/store v1.1.1 + cosmossdk.io/collections v1.2.0 + cosmossdk.io/core v0.11.3 + cosmossdk.io/errors v1.0.2 + cosmossdk.io/log v1.5.1 + cosmossdk.io/math v1.5.3 + cosmossdk.io/store v1.1.2 cosmossdk.io/x/evidence v0.1.1 cosmossdk.io/x/feegrant v0.1.1 - cosmossdk.io/x/tx v0.13.7 + cosmossdk.io/x/tx v0.14.0 cosmossdk.io/x/upgrade v0.1.4 github.com/CosmWasm/wasmd v0.53.2 github.com/CosmWasm/wasmvm/v2 v2.1.5 - github.com/cometbft/cometbft v0.38.16 + github.com/cometbft/cometbft v0.38.17 github.com/cosmos/cosmos-db v1.1.1 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.50.11 + github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.7.0 github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 v8.1.1 @@ -32,22 +33,24 @@ require ( github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/hashicorp/go-metrics v0.5.4 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.20.5 + github.com/prometheus/client_golang v1.22.0 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.7.1 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 - github.com/spf13/viper v1.19.0 + github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 - golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac - google.golang.org/genproto/googleapis/api v0.0.0-20250212204824-5a70512c5d8b - google.golang.org/grpc v1.70.0 + golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 + golang.org/x/sync v0.13.0 + google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 + google.golang.org/grpc v1.72.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cel.dev/expr v0.19.0 // indirect + cel.dev/expr v0.20.0 // indirect cloud.google.com/go v0.118.2 // indirect cloud.google.com/go/auth v0.14.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect @@ -55,34 +58,35 @@ require ( cloud.google.com/go/iam v1.4.0 // indirect cloud.google.com/go/monitoring v1.23.0 // indirect cloud.google.com/go/storage v1.50.0 // indirect - cosmossdk.io/collections v0.4.0 // indirect - cosmossdk.io/depinject v1.1.0 // indirect + cosmossdk.io/depinject v1.2.0 // indirect + cosmossdk.io/schema v1.1.0 // indirect cosmossdk.io/x/circuit v0.1.1 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect - github.com/DataDog/zstd v1.5.6 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect + github.com/DataDog/zstd v1.5.7 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.49.0 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/aws/aws-sdk-go v1.55.6 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect - github.com/bits-and-blooms/bitset v1.20.0 // indirect + github.com/bits-and-blooms/bitset v1.22.0 // indirect + github.com/bytedance/sonic v1.13.2 // indirect + github.com/bytedance/sonic/loader v0.2.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect - github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect + github.com/cloudwego/base64x v0.1.5 // indirect + github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect - github.com/cockroachdb/apd/v3 v3.2.1 // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect - github.com/cockroachdb/pebble v1.1.4 // indirect + github.com/cockroachdb/pebble v1.1.5 // indirect github.com/cockroachdb/redact v1.1.6 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cometbft/cometbft-db v0.14.1 // indirect @@ -93,7 +97,7 @@ require ( github.com/cosmos/ledger-cosmos-go v0.14.0 // indirect github.com/danieljoos/wincred v1.2.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/desertbit/timer v1.0.1 // indirect github.com/dgraph-io/badger/v4 v4.5.1 // indirect github.com/dgraph-io/ristretto/v2 v2.1.0 // indirect @@ -101,25 +105,26 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.8.0 // indirect github.com/emicklei/dot v1.6.4 // indirect - github.com/envoyproxy/go-control-plane v0.13.1 // indirect - github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/getsentry/sentry-go v0.31.1 // indirect + github.com/go-jose/go-jose/v4 v4.0.4 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect - github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.3 // indirect github.com/google/flatbuffers v25.2.10+incompatible // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.9 // indirect @@ -134,13 +139,11 @@ require ( github.com/hashicorp/go-getter v1.7.8 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/go-metrics v0.5.4 // indirect github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.2 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect github.com/huandu/skiplist v1.2.1 // indirect @@ -150,86 +153,103 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.11 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.8 // indirect - github.com/magiconair/properties v1.8.9 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mdp/qrterminal/v3 v3.2.1 // indirect github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/petermattis/goid v0.0.0-20250211185408-f2b9d978cd7a // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/rs/zerolog v1.33.0 // indirect + github.com/rs/zerolog v1.34.0 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shamaton/msgpack/v2 v2.2.2 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.12.0 // indirect + github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.7.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ulikunitz/xz v0.5.12 // indirect + github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v1.0.0 // indirect go.etcd.io/bbolt v1.4.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.33.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.34.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/metric v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect go.opentelemetry.io/otel/trace v1.34.0 // indirect + go.uber.org/mock v0.5.2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.33.0 // indirect - golang.org/x/mod v0.23.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/arch v0.15.0 // indirect + golang.org/x/crypto v0.37.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/oauth2 v0.26.0 // indirect - golang.org/x/sync v0.11.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/term v0.29.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/term v0.31.0 // indirect + golang.org/x/text v0.24.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.30.0 // indirect google.golang.org/api v0.221.0 // indirect google.golang.org/genproto v0.0.0-20250212204824-5a70512c5d8b // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b // indirect - google.golang.org/protobuf v1.36.5 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect nhooyr.io/websocket v1.8.17 // indirect - pgregory.net/rapid v1.1.0 // indirect + pgregory.net/rapid v1.2.0 // indirect + rsc.io/qr v0.2.0 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) replace ( - // dragonberry - github.com/confio/ics23/go => github.com/cosmos/cosmos-sdk/ics23/go v0.8.0 + github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 + // dgrijalva/jwt-go is deprecated and doesn't receive security updates. + // See: https://github.com/cosmos/cosmos-sdk/issues/13134 + github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 + // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. + // See: https://github.com/cosmos/cosmos-sdk/issues/10409 + github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.8.1 + + // pin version! 126854af5e6d has issues with the store so that queries fail github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) +// v022 debug: + +// run: git clone -b v0.38.17.logs https://github.com/permissionlessweb/cometbft +// run: git clone -b v0.50.11.bitsong https://github.com/permissionlessweb/cosmos-sdk +// +// uncomment: +// replace github.com/cometbft/cometbft => ./cometbft +// replace github.com/cosmos/cosmos-sdk => ./cosmos-sdk + exclude github.com/gogo/protobuf v1.3.3 diff --git a/go.sum b/go.sum index 052282fc..7ca84846 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.19.0 h1:lXuo+nDhpyJSpWxpPVi5cPUwzKb+dsdOiw6IreM5yt0= -cel.dev/expr v0.19.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.20.0 h1:OunBvVCfvpWlt4dN7zg3FM6TDkzOePe1+foGJ9AXeeI= +cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -614,24 +614,26 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= -cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY= -cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= +cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= cosmossdk.io/client/v2 v2.0.0-beta.3 h1:+TTuH0DwQYsUq2JFAl3fDZzKq5gQG7nt3dAattkjFDU= cosmossdk.io/client/v2 v2.0.0-beta.3/go.mod h1:CZcL41HpJPOOayTCO28j8weNBQprG+SRiKX39votypo= -cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= -cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= -cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= -cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= -cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E= -cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI= -cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= -cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= -cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= -cosmossdk.io/math v1.5.0 h1:sbOASxee9Zxdjd6OkzogvBZ25/hP929vdcYcBJQbkLc= -cosmossdk.io/math v1.5.0/go.mod h1:AAwwBmUhqtk2nlku174JwSll+/DepUXW3rWIXN5q+Nw= -cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= -cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +cosmossdk.io/collections v1.2.0 h1:IesfVG8G/+FYCMVMP01frS/Cw99Omk5vBh3cHbO01Gg= +cosmossdk.io/collections v1.2.0/go.mod h1:4NkMoYw6qRA8fnSH/yn1D/MOutr8qyQnwsO50Mz9ItU= +cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= +cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= +cosmossdk.io/depinject v1.2.0 h1:6NW/FSK1IkWTrX7XxUpBmX1QMBozpEI9SsWkKTBc5zw= +cosmossdk.io/depinject v1.2.0/go.mod h1:pvitjtUxZZZTQESKNS9KhGjWVslJZxtO9VooRJYyPjk= +cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= +cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= +cosmossdk.io/log v1.5.1 h1:wLwiYXmfrort/O+j6EkjF+HvbdrRQd+4cYCPKFSm+zM= +cosmossdk.io/log v1.5.1/go.mod h1:5cXXBvfBkR2/BcXmosdCSLXllvgSjphrrDVdfVRmBGM= +cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= +cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= +cosmossdk.io/schema v1.1.0 h1:mmpuz3dzouCoyjjcMcA/xHBEmMChN+EHh8EHxHRHhzE= +cosmossdk.io/schema v1.1.0/go.mod h1:Gb7pqO+tpR+jLW5qDcNOSv0KtppYs7881kfzakguhhI= +cosmossdk.io/store v1.1.2 h1:3HOZG8+CuThREKv6cn3WSohAc6yccxO3hLzwK6rBC7o= +cosmossdk.io/store v1.1.2/go.mod h1:60rAGzTHevGm592kFhiUVkNC9w7gooSEn5iUBPzHQ6A= cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q= cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= @@ -640,8 +642,8 @@ cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= cosmossdk.io/x/nft v0.1.1 h1:pslAVS8P5NkW080+LWOamInjDcq+v2GSCo+BjN9sxZ8= cosmossdk.io/x/nft v0.1.1/go.mod h1:Kac6F6y2gsKvoxU+fy8uvxRTi4BIhLOor2zgCNQwVgY= -cosmossdk.io/x/tx v0.13.7 h1:8WSk6B/OHJLYjiZeMKhq7DK7lHDMyK0UfDbBMxVmeOI= -cosmossdk.io/x/tx v0.13.7/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +cosmossdk.io/x/tx v0.14.0 h1:hB3O25kIcyDW/7kMTLMaO8Ripj3yqs5imceVd6c/heA= +cosmossdk.io/x/tx v0.14.0/go.mod h1:Tn30rSRA1PRfdGB3Yz55W4Sn6EIutr9xtMKSHij+9PM= cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -651,8 +653,6 @@ gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zum git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= 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.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= -github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= 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= @@ -664,10 +664,10 @@ github.com/CosmWasm/wasmvm/v2 v2.1.5/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q= github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY= -github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM= +github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= +github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 h1:f2Qw/Ehhimh5uO1fayV0QIW7DShEQqhtUfhYc+cBPlw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0/go.mod h1:2bIszWvQRlJVmJLiuLhukLImRjKPcYdzzsx6darK02A= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0 h1:o90wcURuxekmXrtxmYWTyNla0+ZEHhud6DI1ZTxd1vI= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0/go.mod h1:6fTWu4m3jocfUZLYF5KsZC1TUfRvEjs7lM4crme/irw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.49.0 h1:jJKWl98inONJAr/IZrdFQUWcwUO95DLY1XMD1ZIut+g= @@ -676,8 +676,8 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.49.0/go.mod h1:wRbFgBQUVm1YXrvWKofAEmq9HNJTDphbAaJSSX01KUI= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -725,16 +725,21 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= -github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.22.0 h1:Tquv9S8+SGaS3EhyA+up3FXzmkhxPGjQQCkcs2uw7w4= +github.com/bits-and-blooms/bitset v1.22.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= 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/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= -github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= -github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= -github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= +github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= +github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= +github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -743,7 +748,6 @@ github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK3 github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -764,6 +768,9 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= +github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -777,12 +784,10 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= -github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg= -github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= @@ -792,15 +797,15 @@ github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 h1:pU88SPhIFid6/k github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILMqgNeV5jiqR4j+sTuvQNHdf2chuKj1M5k= github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506/go.mod h1:Mw7HqKr2kdtu6aYGn3tPmAftiP3QPX63LdK/zcariIo= -github.com/cockroachdb/pebble v1.1.4 h1:5II1uEP4MyHLDnsrbv/EZ36arcb9Mxg3n+owhZ3GrG8= -github.com/cockroachdb/pebble v1.1.4/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw= +github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo= github.com/cockroachdb/redact v1.1.6 h1:zXJBwDZ84xJNlHl1rMyCojqyIxv+7YUpQiJLQ7n4314= github.com/cockroachdb/redact v1.1.6/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.16 h1:1xqGPgtVj0qA5B8sSQueaZ/MTsP5JSDIOCh/phGral8= -github.com/cometbft/cometbft v0.38.16/go.mod h1:hT4QQzD+SAqZOJm8M81o+RbRoPE081flo6pRZWkd5rI= +github.com/cometbft/cometbft v0.38.17 h1:FkrQNbAjiFqXydeAO81FUzriL4Bz0abYxN/eOHrQGOk= +github.com/cometbft/cometbft v0.38.17/go.mod h1:5l0SkgeLRXi6bBfQuevXjKqML1jjfJJlvI1Ulp02/o4= github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -815,8 +820,8 @@ github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNC github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/cosmos-sdk v0.50.11 h1:LxR1aAc8kixdrs3itO+3a44sFoc+vjxVAOyPFx22yjk= -github.com/cosmos/cosmos-sdk v0.50.11/go.mod h1:gt14Meok2IDCjbDtjwkbUcgVNEpUBDN/4hg9cCUtLgw= +github.com/cosmos/cosmos-sdk v0.53.0 h1:ZsB2tnBVudumV059oPuElcr0K1lLOutaI6WJ+osNTbI= +github.com/cosmos/cosmos-sdk v0.53.0/go.mod h1:UPcRyFwOUy2PfSFBWxBceO/HTjZOuBVqY583WyazIGs= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= @@ -842,10 +847,12 @@ github.com/cosmos/ibc-go/v8 v8.7.0 h1:HqhVOkO8bDpClXE81DFQgFjroQcTvtpm0tCS7SQVKV github.com/cosmos/ibc-go/v8 v8.7.0/go.mod h1:G2z+Q6ZQSMcyHI2+BVcJdvfOupb09M2h/tgpXOEdY6k= github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= +github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= +github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/cosmos/ledger-cosmos-go v0.14.0 h1:WfCHricT3rPbkPSVKRH+L4fQGKYHuGOK9Edpel8TYpE= github.com/cosmos/ledger-cosmos-go v0.14.0/go.mod h1:E07xCWSBl3mTGofZ2QnL4cIUzMbbGVyik84QYKbX3RA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0= @@ -854,10 +861,10 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= -github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8= +github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo= github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE= @@ -865,7 +872,6 @@ github.com/dgraph-io/badger/v4 v4.5.1 h1:7DCIXrQjo1LKmM96YD+hLVJ2EEsyyoWxJfpdd56 github.com/dgraph-io/badger/v4 v4.5.1/go.mod h1:qn3Be0j3TfV4kPbVoK0arXCD1/nr1ftth6sbL5jxdoA= github.com/dgraph-io/ristretto/v2 v2.1.0 h1:59LjpOJLNDULHh8MC4UaegN52lC4JnO2dITsie/Pa8I= github.com/dgraph-io/ristretto/v2 v2.1.0/go.mod h1:uejeqfYXpUomfse0+lO+13ATz4TypQYLJZzBSAemuB4= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= @@ -899,14 +905,18 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= -github.com/envoyproxy/go-control-plane v0.13.1 h1:vPfJZCkob6yTMEgS+0TwfTUfbHjfy/6vOJ8hUWX/uXE= -github.com/envoyproxy/go-control-plane v0.13.1/go.mod h1:X45hY0mufo6Fd0KW3rqsGvQMw58jvjymeCzBU3mWyHw= +github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= +github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= +github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= +github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= -github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= @@ -923,13 +933,13 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/getsentry/sentry-go v0.31.1 h1:ELVc0h7gwyhnXHDouXkhqTFSO5oslsRDk0++eyE0KJ4= github.com/getsentry/sentry-go v0.31.1/go.mod h1:CYNcMMz73YigoHljQRG+qPF+eMq8gG72XcGN/p71BAY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= 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= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= @@ -940,6 +950,8 @@ github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmn github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v4 v4.0.4 h1:VsjPI33J0SB9vQM6PLmNjoHqMQNGPiZ0rHL7Ni7Q6/E= +github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= @@ -963,14 +975,17 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= @@ -985,6 +1000,7 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= @@ -1053,8 +1069,9 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -1179,8 +1196,6 @@ github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iP github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= @@ -1208,8 +1223,8 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= -github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= +github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= +github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -1225,6 +1240,7 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -1242,9 +1258,12 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= +github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -1260,7 +1279,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= @@ -1271,8 +1290,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/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= -github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= +github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -1293,6 +1312,8 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mdp/qrterminal/v3 v3.2.1 h1:6+yQjiiOsSuXT5n9/m60E54vdgFsw0zhADHhHLrFet4= +github.com/mdp/qrterminal/v3 v3.2.1/go.mod h1:jOTmXvnBsMy5xqLniO0R++Jmjs2sTm9dFSuQ5kpz/SU= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= @@ -1309,12 +1330,11 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= @@ -1332,8 +1352,8 @@ github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= 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= +github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= +github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= @@ -1374,8 +1394,9 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/petermattis/goid v0.0.0-20250211185408-f2b9d978cd7a h1:ckxP/kGzsxvxXo8jO6E/0QJ8MMmwI7IRj4Fys9QbAZA= @@ -1409,8 +1430,8 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1427,8 +1448,8 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1448,15 +1469,16 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= @@ -1464,8 +1486,6 @@ github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= -github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= @@ -1494,14 +1514,16 @@ github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4 github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= -github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= +github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= +github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -1534,8 +1556,10 @@ github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -1550,6 +1574,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= +github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= @@ -1572,8 +1598,8 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.33.0 h1:FVPoXEoILwgbZUu4X7YSgsESsAmGRgoYcnXkzgQPhP4= -go.opentelemetry.io/contrib/detectors/gcp v1.33.0/go.mod h1:ZHrLmr4ikK2AwRj9QL+c9s2SOlgoSRyMpNVzUj2fZqI= +go.opentelemetry.io/contrib/detectors/gcp v1.34.0 h1:JRxssobiPg23otYU5SbWtQC//snGVIM3Tx6QRzlQBao= +go.opentelemetry.io/contrib/detectors/gcp v1.34.0/go.mod h1:cV4BMFcscUR/ckqLkbfQmF0PRsq8w/lMGzdbCSveBHo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s= @@ -1586,8 +1612,8 @@ go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -1600,8 +1626,8 @@ go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= -go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko= +go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= @@ -1611,6 +1637,8 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= +golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -1622,14 +1650,15 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1646,8 +1675,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac h1:l5+whBCLH3iH2ZNHYLbAe58bo7yrN4mVcnkHDYz5vvs= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac/go.mod h1:hH+7mtFmImwwcMvScyxUhjuVHR3HGaDPMn9rMSUUbxo= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1693,8 +1722,6 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= 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= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1769,8 +1796,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1822,8 +1849,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1934,8 +1961,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1950,8 +1977,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= -golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1972,8 +1999,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2056,8 +2083,6 @@ 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/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= -golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= 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= @@ -2281,10 +2306,10 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20250212204824-5a70512c5d8b h1:TdBaFxGAABTI8sz9jYHPtjje677pS4XXup9vJMlj8hQ= google.golang.org/genproto v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:0TrvLFkilZy+XULmuoWfiTbTRXLWXJ1S44jQTW3lWwE= -google.golang.org/genproto/googleapis/api v0.0.0-20250212204824-5a70512c5d8b h1:i+d0RZa8Hs2L/MuaOQYI+krthcxdEbEM2N+Tf3kJ4zk= -google.golang.org/genproto/googleapis/api v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b h1:FQtJ1MxbXoIIrZHZ33M+w5+dAP9o86rgpjoKr/ZmT7k= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463/go.mod h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f h1:N/PrbTw4kdkqNRzVfWPrBekzLuarFREcbFOiOLkXon4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -2332,8 +2357,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2353,8 +2378,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2367,8 +2392,6 @@ gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= @@ -2435,10 +2458,13 @@ modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= -pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= +pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY= +rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/proto/README.md b/proto/README.md index 582923f4..c39f85c3 100644 --- a/proto/README.md +++ b/proto/README.md @@ -2,7 +2,7 @@ set env variables: ```sh -GOLANG_PROTOBUF_VERSION=1.28.1 +GOLANG_PROTOBUF_VERSION=1.36.6 GRPC_GATEWAY_VERSION=1.16.0 ``` diff --git a/proto/bitsong/cadance/v1/query.proto b/proto/bitsong/cadance/v1/query.proto deleted file mode 100644 index 4da9063a..00000000 --- a/proto/bitsong/cadance/v1/query.proto +++ /dev/null @@ -1,65 +0,0 @@ -syntax = "proto3"; -package bitsong.cadance.v1; - -import "cosmos/base/query/v1beta1/pagination.proto"; -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "bitsong/cadance/v1/genesis.proto"; -import "bitsong/cadance/v1/cadance.proto"; - -option go_package = "github.com/bitsongofficial/go-bitsong/x/cadance/types"; - -// Query defines the gRPC querier service. -service Query { - // CadanceContracts - rpc CadanceContracts(QueryCadanceContracts) - returns (QueryCadanceContractsResponse) { - option (google.api.http).get = - "/bitsong/cadance/v1/contracts"; - } - // CadanceContract - rpc CadanceContract(QueryCadanceContract) - returns (QueryCadanceContractResponse) { - option (google.api.http).get = - "/bitsong/cadance/v1/contracts/{contract_address}"; - } - // Params - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/bitsong/cadance/v1/params"; - } -} - -// QueryCadanceContracts is the request type to get all contracts. -message QueryCadanceContracts { - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QueryCadanceContractsResponse is the response type for the Query/CadanceContracts RPC method. -message QueryCadanceContractsResponse { - // cadance_contracts are the cadance contract s. - repeated CadanceContract cadance_contracts = 1 [ (gogoproto.nullable) = false ]; - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryCadanceContract is the request type to get a single contract. -message QueryCadanceContract { - // contract_address is the address of the contract to query. - string contract_address = 1; -} - -// QueryCadanceContractResponse is the response type for the Query/CadanceContract RPC method. -message QueryCadanceContractResponse { - // contract is the cadance contract . - CadanceContract cadance_contract = 1 [(gogoproto.nullable) = false]; -} - -// QueryParams is the request type to get all module params. -message QueryParamsRequest {} - -// QueryCadanceContractsResponse is the response type for the Query/CadanceContracts RPC method. -message QueryParamsResponse { - Params params = 1 [(gogoproto.jsontag) = "params", (gogoproto.moretags) = "yaml:\"params\""]; -} diff --git a/proto/bitsong/cadance/v1/tx.proto b/proto/bitsong/cadance/v1/tx.proto deleted file mode 100644 index eb833362..00000000 --- a/proto/bitsong/cadance/v1/tx.proto +++ /dev/null @@ -1,99 +0,0 @@ -syntax = "proto3"; -package bitsong.cadance.v1; - -option go_package = "github.com/bitsongofficial/go-bitsong/x/cadance/types"; - -import "google/api/annotations.proto"; -import "cosmos/msg/v1/msg.proto"; -import "bitsong/cadance/v1/genesis.proto"; -import "gogoproto/gogo.proto"; -import "cosmos_proto/cosmos.proto"; -import "amino/amino.proto"; - -// Msg defines the Msg service. -service Msg { - - // RegisterCadanceContract defines the endpoint for - // registering a new cadance contract . - rpc RegisterCadanceContract(MsgRegisterCadanceContract) - returns (MsgRegisterCadanceContractResponse) { - option (google.api.http).post = "/bitsong/cadance/v1/tx/register"; - }; - - // UnregisterCadanceContract defines the endpoint for - // unregistering a cadance contract . - rpc UnregisterCadanceContract(MsgUnregisterCadanceContract) - returns (MsgUnregisterCadanceContractResponse) { - option (google.api.http).post = "/bitsong/cadance/v1/tx/unregister"; - }; - - // UnjailCadanceContract defines the endpoint for - // unjailing a cadance contract . - rpc UnjailCadanceContract(MsgUnjailCadanceContract) - returns (MsgUnjailCadanceContractResponse) { - option (google.api.http).post = "/bitsong/cadance/v1/tx/unjail"; - }; - - // UpdateParams defines a governance operation for updating the x/cadance module - // parameters. The authority is hard-coded to the x/gov module account. - // - // Since: cosmos-sdk 0.47 - rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); -} - -// MsgRegisterCadanceContract is the Msg/RegisterCadanceContract request type. -message MsgRegisterCadanceContract { - // The address of the sender. - string sender_address = 1; - // The address of the contract to register. - string contract_address = 2; -} - -// MsgRegisterCadanceContractResponse defines the response structure for executing a -// MsgRegisterCadanceContract message. -message MsgRegisterCadanceContractResponse {} - -// MsgUnregisterCadanceContract is the Msg/UnregisterCadanceContract request type. -message MsgUnregisterCadanceContract { - // The address of the sender. - string sender_address = 1; - // The address of the contract to unregister. - string contract_address = 2; -} - -// MsgUnregisterCadanceContractResponse defines the response structure for executing a -// MsgUnregisterCadanceContract message. -message MsgUnregisterCadanceContractResponse {} - -// MsgUnjailCadanceContract is the Msg/UnjailCadanceContract request type. -message MsgUnjailCadanceContract { - // The address of the sender. - string sender_address = 1; - // The address of the contract to unjail. - string contract_address = 2; -} - -// MsgUnjailCadanceContractResponse defines the response structure for executing a -// MsgUnjailCadanceContract message. -message MsgUnjailCadanceContractResponse {} - -// MsgUpdateParams is the Msg/UpdateParams request type. -// -// Since: cosmos-sdk 0.47 -message MsgUpdateParams { - option (cosmos.msg.v1.signer) = "authority"; - - // authority is the address of the governance account. - string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - - // params defines the x/cadance parameters to update. - // - // NOTE: All parameters must be supplied. - Params params = 2 [(gogoproto.nullable) = false]; -} - -// MsgUpdateParamsResponse defines the response structure for executing a -// MsgUpdateParams message. -// -// Since: cosmos-sdk 0.47 -message MsgUpdateParamsResponse {} diff --git a/proto/bitsong/cadance/v1/cadance.proto b/proto/bitsong/cadence/v1/cadence.proto similarity index 82% rename from proto/bitsong/cadance/v1/cadance.proto rename to proto/bitsong/cadence/v1/cadence.proto index c429491c..d6d9a4b4 100644 --- a/proto/bitsong/cadance/v1/cadance.proto +++ b/proto/bitsong/cadence/v1/cadence.proto @@ -1,11 +1,11 @@ syntax = "proto3"; -package bitsong.cadance.v1; +package bitsong.cadence.v1; -option go_package = "github.com/bitsongofficial/go-bitsong/x/cadance/types"; +option go_package = "github.com/bitsongofficial/go-bitsong/x/cadence/types"; // This object is used to store the contract address and the // jail status of the contract. -message CadanceContract { +message CadenceContract { // The address of the contract. string contract_address = 1; // The jail status of the contract. diff --git a/proto/bitsong/cadance/v1/genesis.proto b/proto/bitsong/cadence/v1/genesis.proto similarity index 88% rename from proto/bitsong/cadance/v1/genesis.proto rename to proto/bitsong/cadence/v1/genesis.proto index 893a8932..1e3041a1 100644 --- a/proto/bitsong/cadance/v1/genesis.proto +++ b/proto/bitsong/cadence/v1/genesis.proto @@ -1,11 +1,11 @@ syntax = "proto3"; -package bitsong.cadance.v1; +package bitsong.cadence.v1; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -import "bitsong/cadance/v1/cadance.proto"; +import "bitsong/cadence/v1/cadence.proto"; -option go_package = "github.com/bitsongofficial/go-bitsong/x/cadance/types"; +option go_package = "github.com/bitsongofficial/go-bitsong/x/cadence/types"; // GenesisState - initial state of module message GenesisState { diff --git a/proto/bitsong/cadence/v1/query.proto b/proto/bitsong/cadence/v1/query.proto new file mode 100644 index 00000000..99fc9a3b --- /dev/null +++ b/proto/bitsong/cadence/v1/query.proto @@ -0,0 +1,65 @@ +syntax = "proto3"; +package bitsong.cadence.v1; + +import "cosmos/base/query/v1beta1/pagination.proto"; +import "gogoproto/gogo.proto"; +import "google/api/annotations.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "bitsong/cadence/v1/genesis.proto"; +import "bitsong/cadence/v1/cadence.proto"; + +option go_package = "github.com/bitsongofficial/go-bitsong/x/cadence/types"; + +// Query defines the gRPC querier service. +service Query { + // CadenceContracts + rpc CadenceContracts(QueryCadenceContracts) + returns (QueryCadenceContractsResponse) { + option (google.api.http).get = + "/bitsong/cadence/v1/contracts"; + } + // CadenceContract + rpc CadenceContract(QueryCadenceContract) + returns (QueryCadenceContractResponse) { + option (google.api.http).get = + "/bitsong/cadence/v1/contracts/{contract_address}"; + } + // Params + rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { + option (google.api.http).get = "/bitsong/cadence/v1/params"; + } +} + +// QueryCadenceContracts is the request type to get all contracts. +message QueryCadenceContracts { + // pagination defines an optional pagination for the request. + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +// QueryCadenceContractsResponse is the response type for the Query/CadenceContracts RPC method. +message QueryCadenceContractsResponse { + // cadence_contracts are the cadence contract s. + repeated CadenceContract cadence_contracts = 1 [ (gogoproto.nullable) = false ]; + // pagination defines the pagination in the response. + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + +// QueryCadenceContract is the request type to get a single contract. +message QueryCadenceContract { + // contract_address is the address of the contract to query. + string contract_address = 1; +} + +// QueryCadenceContractResponse is the response type for the Query/CadenceContract RPC method. +message QueryCadenceContractResponse { + // contract is the cadence contract . + CadenceContract cadence_contract = 1 [(gogoproto.nullable) = false]; +} + +// QueryParams is the request type to get all module params. +message QueryParamsRequest {} + +// QueryCadenceContractsResponse is the response type for the Query/CadenceContracts RPC method. +message QueryParamsResponse { + Params params = 1 [(gogoproto.jsontag) = "params", (gogoproto.moretags) = "yaml:\"params\""]; +} diff --git a/proto/bitsong/cadence/v1/tx.proto b/proto/bitsong/cadence/v1/tx.proto new file mode 100644 index 00000000..bd392368 --- /dev/null +++ b/proto/bitsong/cadence/v1/tx.proto @@ -0,0 +1,99 @@ +syntax = "proto3"; +package bitsong.cadence.v1; + +option go_package = "github.com/bitsongofficial/go-bitsong/x/cadence/types"; + +import "google/api/annotations.proto"; +import "cosmos/msg/v1/msg.proto"; +import "bitsong/cadence/v1/genesis.proto"; +import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; +import "amino/amino.proto"; + +// Msg defines the Msg service. +service Msg { + + // RegisterCadenceContract defines the endpoint for + // registering a new cadence contract . + rpc RegisterCadenceContract(MsgRegisterCadenceContract) + returns (MsgRegisterCadenceContractResponse) { + option (google.api.http).post = "/bitsong/cadence/v1/tx/register"; + }; + + // UnregisterCadenceContract defines the endpoint for + // unregistering a cadence contract . + rpc UnregisterCadenceContract(MsgUnregisterCadenceContract) + returns (MsgUnregisterCadenceContractResponse) { + option (google.api.http).post = "/bitsong/cadence/v1/tx/unregister"; + }; + + // UnjailCadenceContract defines the endpoint for + // unjailing a cadence contract . + rpc UnjailCadenceContract(MsgUnjailCadenceContract) + returns (MsgUnjailCadenceContractResponse) { + option (google.api.http).post = "/bitsong/cadence/v1/tx/unjail"; + }; + + // UpdateParams defines a governance operation for updating the x/cadence module + // parameters. The authority is hard-coded to the x/gov module account. + // + // Since: cosmos-sdk 0.47 + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); +} + +// MsgRegisterCadenceContract is the Msg/RegisterCadenceContract request type. +message MsgRegisterCadenceContract { + // The address of the sender. + string sender_address = 1; + // The address of the contract to register. + string contract_address = 2; +} + +// MsgRegisterCadenceContractResponse defines the response structure for executing a +// MsgRegisterCadenceContract message. +message MsgRegisterCadenceContractResponse {} + +// MsgUnregisterCadenceContract is the Msg/UnregisterCadenceContract request type. +message MsgUnregisterCadenceContract { + // The address of the sender. + string sender_address = 1; + // The address of the contract to unregister. + string contract_address = 2; +} + +// MsgUnregisterCadenceContractResponse defines the response structure for executing a +// MsgUnregisterCadenceContract message. +message MsgUnregisterCadenceContractResponse {} + +// MsgUnjailCadenceContract is the Msg/UnjailCadenceContract request type. +message MsgUnjailCadenceContract { + // The address of the sender. + string sender_address = 1; + // The address of the contract to unjail. + string contract_address = 2; +} + +// MsgUnjailCadenceContractResponse defines the response structure for executing a +// MsgUnjailCadenceContract message. +message MsgUnjailCadenceContractResponse {} + +// MsgUpdateParams is the Msg/UpdateParams request type. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address of the governance account. + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // params defines the x/cadence parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 [(gogoproto.nullable) = false]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParamsResponse {} diff --git a/server/start.go b/server/start.go new file mode 100644 index 00000000..5234f8bc --- /dev/null +++ b/server/start.go @@ -0,0 +1,971 @@ +package server + +import ( + "bufio" + "context" + "encoding/json" + "fmt" + "io" + "net" + "os" + "path/filepath" + "runtime/pprof" + "strings" + "time" + + abciserver "github.com/cometbft/cometbft/abci/server" + cmtcmd "github.com/cometbft/cometbft/cmd/cometbft/commands" + cmtcfg "github.com/cometbft/cometbft/config" + cmtjson "github.com/cometbft/cometbft/libs/json" + "github.com/cometbft/cometbft/node" + "github.com/cometbft/cometbft/p2p" + pvm "github.com/cometbft/cometbft/privval" + cmtstate "github.com/cometbft/cometbft/proto/tendermint/state" + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + "github.com/cometbft/cometbft/proxy" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" + "github.com/cometbft/cometbft/rpc/client/local" + sm "github.com/cometbft/cometbft/state" + "github.com/cometbft/cometbft/store" + cmttypes "github.com/cometbft/cometbft/types" + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/server" + "github.com/hashicorp/go-metrics" + "github.com/spf13/cobra" + "github.com/spf13/pflag" + "golang.org/x/sync/errgroup" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + + pruningtypes "cosmossdk.io/store/pruning/types" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/server/api" + serverconfig "github.com/cosmos/cosmos-sdk/server/config" + servergrpc "github.com/cosmos/cosmos-sdk/server/grpc" + servercmtlog "github.com/cosmos/cosmos-sdk/server/log" + "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/telemetry" + "github.com/cosmos/cosmos-sdk/types/mempool" + "github.com/cosmos/cosmos-sdk/version" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" +) + +const ( + // CometBFT full-node start flags + flagWithComet = "with-comet" + flagAddress = "address" + flagTransport = "transport" + flagTraceStore = "trace-store" + flagCPUProfile = "cpu-profile" + FlagMinGasPrices = "minimum-gas-prices" + FlagQueryGasLimit = "query-gas-limit" + FlagHaltHeight = "halt-height" + FlagHaltTime = "halt-time" + FlagInterBlockCache = "inter-block-cache" + FlagUnsafeSkipUpgrades = "unsafe-skip-upgrades" + FlagTrace = "trace" + FlagInvCheckPeriod = "inv-check-period" + + FlagPruning = "pruning" + FlagPruningKeepRecent = "pruning-keep-recent" + FlagPruningInterval = "pruning-interval" + FlagIndexEvents = "index-events" + FlagMinRetainBlocks = "min-retain-blocks" + FlagIAVLCacheSize = "iavl-cache-size" + FlagDisableIAVLFastNode = "iavl-disable-fastnode" + FlagShutdownGrace = "shutdown-grace" + + // state sync-related flags + FlagStateSyncSnapshotInterval = "state-sync.snapshot-interval" + FlagStateSyncSnapshotKeepRecent = "state-sync.snapshot-keep-recent" + + // api-related flags + FlagAPIEnable = "api.enable" + FlagAPISwagger = "api.swagger" + FlagAPIAddress = "api.address" + FlagAPIMaxOpenConnections = "api.max-open-connections" + FlagRPCReadTimeout = "api.rpc-read-timeout" + FlagRPCWriteTimeout = "api.rpc-write-timeout" + FlagRPCMaxBodyBytes = "api.rpc-max-body-bytes" + FlagAPIEnableUnsafeCORS = "api.enabled-unsafe-cors" + + // gRPC-related flags + flagGRPCOnly = "grpc-only" + flagGRPCEnable = "grpc.enable" + flagGRPCAddress = "grpc.address" + flagGRPCWebEnable = "grpc-web.enable" + + // mempool flags + FlagMempoolMaxTxs = "mempool.max-txs" + + // testnet keys + KeyIsTestnet = "is-testnet" + KeyNewChainID = "new-chain-ID" + KeyBrokenValidator = "broken-vals" + KeyNewValsPowerJson = "new-vals-json" + KeyNewOpAddr = "new-operator-addr" + KeyNewValAddr = "new-validator-addr" + KeyUserPubKey = "user-pub-key" + KeyTriggerTestnetUpgrade = "trigger-testnet-upgrade" +) + +// InPlaceTestnetCreator utilizes the provided chainID and operatorAddress as well as the local private validator key to +// control the network represented in the data folder. This is useful to create testnets nearly identical to your +// mainnet environment. + +// If the --new-vals-json flag is set, the server expects a string path to a json file in the form: +// [{"val": "bitsong1val...", "num_dels": 20, "num_tokens": 200000000000,"jailed": false}] +func InPlaceTestnetCreator(testnetAppCreator types.AppCreator) *cobra.Command { + opts := server.StartCmdOptions{} + if opts.DBOpener == nil { + opts.DBOpener = openDB + } + + if opts.StartCommandHandler == nil { + opts.StartCommandHandler = start + } + + cmd := &cobra.Command{ + Use: "in-place-testnet [newChainID] [newOperatorAddress] ", + Short: "Create and start a testnet from current local state", + Long: `Create and start a testnet from current local state. +After utilizing this command the network will start. If the network is stopped, +the normal "start" command should be used. Re-using this command on state that +has already been modified by this command could result in unexpected behavior. + +If the --broken-vals flag is set, the server expects a bitsong1val... addr that has broken delegations. +The server will retain this p + +Additionally, the first block may take up to one minute to be committed, depending +on how old the block is. For instance, if a snapshot was taken weeks ago and we want +to turn this into a testnet, it is possible lots of pending state needs to be committed +(expiring locks, etc.). It is recommended that you should wait for this block to be committed +before stopping the daemon. + +If the --trigger-testnet-upgrade flag is set, the upgrade handler specified by the flag will be run +on the first block of the testnet. + +Regardless of whether the flag is set or not, if any new stores are introduced in the daemon being run, +those stores will be registered in order to prevent panics. Therefore, you only need to set the flag if +you want to test the upgrade handler itself. +`, + Example: "in-place-testnet sub-1 bitsong12smx2wdlyttvyzvzg54y2vnqwq2qjatecmlnr0", + Args: cobra.ExactArgs(3), + RunE: func(cmd *cobra.Command, args []string) error { + serverCtx := server.GetServerContextFromCmd(cmd) + _, err := server.GetPruningOptionsFromFlags(serverCtx.Viper) + if err != nil { + return err + } + + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + withCMT, _ := cmd.Flags().GetBool(flagWithComet) + if !withCMT { + serverCtx.Logger.Info("starting ABCI without CometBFT") + } + + newChainID := args[0] + newOperatorAddress := args[1] + brokenValidator := args[2] + + skipConfirmation, _ := cmd.Flags().GetBool("skip-confirmation") + + if !skipConfirmation { + // Confirmation prompt to prevent accidental modification of state. + reader := bufio.NewReader(os.Stdin) + fmt.Println("This operation will modify state in your data folder and cannot be undone. Do you want to continue? (y/n)") + text, _ := reader.ReadString('\n') + response := strings.TrimSpace(strings.ToLower(text)) + if response != "y" && response != "yes" { + fmt.Println("Operation canceled.") + return nil + } + } + + // Set testnet keys to be used by the application. + // This is done to prevent changes to existing start API. + serverCtx.Viper.Set(KeyIsTestnet, true) + serverCtx.Viper.Set(KeyNewChainID, newChainID) + serverCtx.Viper.Set(KeyNewOpAddr, newOperatorAddress) + serverCtx.Viper.Set(KeyBrokenValidator, brokenValidator) + + err = wrapCPUProfile(serverCtx, func() error { + return opts.StartCommandHandler(serverCtx, clientCtx, testnetAppCreator, withCMT, opts) + }) + + serverCtx.Logger.Debug("received quit signal") + graceDuration, _ := cmd.Flags().GetDuration(FlagShutdownGrace) + if graceDuration > 0 { + serverCtx.Logger.Info("graceful shutdown start", FlagShutdownGrace, graceDuration) + <-time.After(graceDuration) + serverCtx.Logger.Info("graceful shutdown complete") + } + + return err + }, + } + + addStartNodeFlags(cmd, opts) + cmd.Flags().String(KeyTriggerTestnetUpgrade, "", "If set (example: \"v21\"), triggers the v21 upgrade handler to run on the first block of the testnet") + cmd.Flags().Bool("skip-confirmation", false, "Skip the confirmation prompt") + return cmd +} + +// addStartNodeFlags should be added to any CLI commands that start the network. +func addStartNodeFlags(cmd *cobra.Command, opts server.StartCmdOptions) { + cmd.Flags().Bool(flagWithComet, true, "Run abci app embedded in-process with CometBFT") + cmd.Flags().String(flagAddress, "tcp://127.0.0.1:26658", "Listen address") + cmd.Flags().String(flagTransport, "socket", "Transport protocol: socket, grpc") + cmd.Flags().String(flagTraceStore, "", "Enable KVStore tracing to an output file") + cmd.Flags().String(FlagMinGasPrices, "", "Minimum gas prices to accept for transactions; Any fee in a tx must meet this minimum (e.g. 0.01photino;0.0001stake)") + cmd.Flags().Uint64(FlagQueryGasLimit, 0, "Maximum gas a Rest/Grpc query can consume. Blank and 0 imply unbounded.") + cmd.Flags().IntSlice(FlagUnsafeSkipUpgrades, []int{}, "Skip a set of upgrade heights to continue the old binary") + cmd.Flags().Uint64(FlagHaltHeight, 0, "Block height at which to gracefully halt the chain and shutdown the node") + cmd.Flags().Uint64(FlagHaltTime, 0, "Minimum block time (in Unix seconds) at which to gracefully halt the chain and shutdown the node") + cmd.Flags().Bool(FlagInterBlockCache, true, "Enable inter-block caching") + cmd.Flags().String(flagCPUProfile, "", "Enable CPU profiling and write to the provided file") + cmd.Flags().Bool(FlagTrace, false, "Provide full stack traces for errors in ABCI Log") + cmd.Flags().String(FlagPruning, pruningtypes.PruningOptionDefault, "Pruning strategy (default|nothing|everything|custom)") + cmd.Flags().Uint64(FlagPruningKeepRecent, 0, "Number of recent heights to keep on disk (ignored if pruning is not 'custom')") + cmd.Flags().Uint64(FlagPruningInterval, 0, "Height interval at which pruned heights are removed from disk (ignored if pruning is not 'custom')") + cmd.Flags().Uint(FlagInvCheckPeriod, 0, "Assert registered invariants every N blocks") + cmd.Flags().Uint64(FlagMinRetainBlocks, 0, "Minimum block height offset during ABCI commit to prune CometBFT blocks") + cmd.Flags().Bool(FlagAPIEnable, false, "Define if the API server should be enabled") + cmd.Flags().Bool(FlagAPISwagger, false, "Define if swagger documentation should automatically be registered (Note: the API must also be enabled)") + cmd.Flags().String(FlagAPIAddress, serverconfig.DefaultAPIAddress, "the API server address to listen on") + cmd.Flags().Uint(FlagAPIMaxOpenConnections, 1000, "Define the number of maximum open connections") + cmd.Flags().Uint(FlagRPCReadTimeout, 10, "Define the CometBFT RPC read timeout (in seconds)") + cmd.Flags().Uint(FlagRPCWriteTimeout, 0, "Define the CometBFT RPC write timeout (in seconds)") + cmd.Flags().Uint(FlagRPCMaxBodyBytes, 1000000, "Define the CometBFT maximum request body (in bytes)") + cmd.Flags().Bool(FlagAPIEnableUnsafeCORS, false, "Define if CORS should be enabled (unsafe - use it at your own risk)") + cmd.Flags().Bool(flagGRPCOnly, false, "Start the node in gRPC query only mode (no CometBFT process is started)") + cmd.Flags().Bool(flagGRPCEnable, true, "Define if the gRPC server should be enabled") + cmd.Flags().String(flagGRPCAddress, serverconfig.DefaultGRPCAddress, "the gRPC server address to listen on") + cmd.Flags().Bool(flagGRPCWebEnable, true, "Define if the gRPC-Web server should be enabled. (Note: gRPC must also be enabled)") + cmd.Flags().Uint64(FlagStateSyncSnapshotInterval, 0, "State sync snapshot interval") + cmd.Flags().Uint32(FlagStateSyncSnapshotKeepRecent, 2, "State sync snapshot to keep") + cmd.Flags().Bool(FlagDisableIAVLFastNode, false, "Disable fast node for IAVL tree") + cmd.Flags().Int(FlagMempoolMaxTxs, mempool.DefaultMaxTx, "Sets MaxTx value for the app-side mempool") + cmd.Flags().Duration(FlagShutdownGrace, 0*time.Second, "On Shutdown, duration to wait for resource clean up") + + // support old flags name for backwards compatibility + cmd.Flags().SetNormalizeFunc(func(f *pflag.FlagSet, name string) pflag.NormalizedName { + if name == "with-tendermint" { + name = flagWithComet + } + + return pflag.NormalizedName(name) + }) + + // add support for all CometBFT-specific command line options + cmtcmd.AddNodeFlags(cmd) + + if opts.AddFlags != nil { + opts.AddFlags(cmd) + } +} + +func getAndValidateConfig(svrCtx *server.Context) (serverconfig.Config, error) { + config, err := serverconfig.GetConfig(svrCtx.Viper) + if err != nil { + return config, err + } + + if err := config.ValidateBasic(); err != nil { + return config, err + } + return config, nil +} + +func start(svrCtx *server.Context, clientCtx client.Context, appCreator types.AppCreator, withCmt bool, opts server.StartCmdOptions) error { + svrCfg, err := getAndValidateConfig(svrCtx) + if err != nil { + return err + } + + app, appCleanupFn, err := startApp(svrCtx, appCreator, opts) + if err != nil { + return err + } + defer appCleanupFn() + + metrics, err := startTelemetry(svrCfg) + if err != nil { + return err + } + + emitServerInfoMetrics() + + if !withCmt { + return startStandAlone(svrCtx, svrCfg, clientCtx, app, metrics, opts) + } + return startInProcess(svrCtx, svrCfg, clientCtx, app, metrics, opts) +} + +// wrapCPUProfile starts CPU profiling, if enabled, and executes the provided +// callbackFn in a separate goroutine, then will wait for that callback to +// return. +// +// NOTE: We expect the caller to handle graceful shutdown and signal handling. +func wrapCPUProfile(svrCtx *server.Context, callbackFn func() error) error { + if cpuProfile := svrCtx.Viper.GetString(flagCPUProfile); cpuProfile != "" { + f, err := os.Create(cpuProfile) + if err != nil { + return err + } + + svrCtx.Logger.Info("starting CPU profiler", "profile", cpuProfile) + + if err := pprof.StartCPUProfile(f); err != nil { + return err + } + + defer func() { + svrCtx.Logger.Info("stopping CPU profiler", "profile", cpuProfile) + pprof.StopCPUProfile() + + if err := f.Close(); err != nil { + svrCtx.Logger.Info("failed to close cpu-profile file", "profile", cpuProfile, "err", err.Error()) + } + }() + } + + return callbackFn() +} + +func startApp(svrCtx *server.Context, appCreator types.AppCreator, opts server.StartCmdOptions) (app types.Application, cleanupFn func(), err error) { + traceWriter, traceCleanupFn, err := setupTraceWriter(svrCtx) + if err != nil { + return app, traceCleanupFn, err + } + + home := svrCtx.Config.RootDir + db, err := opts.DBOpener(home, server.GetAppDBBackend(svrCtx.Viper)) + if err != nil { + return app, traceCleanupFn, err + } + + if isTestnet, ok := svrCtx.Viper.Get(KeyIsTestnet).(bool); ok && isTestnet { + app, err = testnetify(svrCtx, appCreator, db, traceWriter) + if err != nil { + return app, traceCleanupFn, err + } + } else { + app = appCreator(svrCtx.Logger, db, traceWriter, svrCtx.Viper) + } + + cleanupFn = func() { + traceCleanupFn() + if localErr := app.Close(); localErr != nil { + svrCtx.Logger.Error(localErr.Error()) + } + } + return app, cleanupFn, nil +} + +func startTelemetry(cfg serverconfig.Config) (*telemetry.Metrics, error) { + return telemetry.New(cfg.Telemetry) +} + +// emitServerInfoMetrics emits server info related metrics using application telemetry. +func emitServerInfoMetrics() { + var ls []metrics.Label + + versionInfo := version.NewInfo() + if len(versionInfo.GoVersion) > 0 { + ls = append(ls, telemetry.NewLabel("go", versionInfo.GoVersion)) + } + if len(versionInfo.CosmosSdkVersion) > 0 { + ls = append(ls, telemetry.NewLabel("version", versionInfo.CosmosSdkVersion)) + } + + if len(ls) == 0 { + return + } + + telemetry.SetGaugeWithLabels([]string{"server", "info"}, 1, ls) +} + +func startStandAlone(svrCtx *server.Context, svrCfg serverconfig.Config, clientCtx client.Context, app types.Application, metrics *telemetry.Metrics, opts server.StartCmdOptions) error { + addr := svrCtx.Viper.GetString(flagAddress) + transport := svrCtx.Viper.GetString(flagTransport) + + cmtApp := server.NewCometABCIWrapper(app) + svr, err := abciserver.NewServer(addr, transport, cmtApp) + if err != nil { + return fmt.Errorf("error creating listener: %v", err) + } + + svr.SetLogger(servercmtlog.CometLoggerWrapper{Logger: svrCtx.Logger.With("module", "abci-server")}) + + g, ctx := getCtx(svrCtx, false) + + // Add the tx service to the gRPC router. We only need to register this + // service if API or gRPC is enabled, and avoid doing so in the general + // case, because it spawns a new local CometBFT RPC client. + if svrCfg.API.Enable || svrCfg.GRPC.Enable { + // create tendermint client + // assumes the rpc listen address is where tendermint has its rpc server + rpcclient, err := rpchttp.New(svrCtx.Config.RPC.ListenAddress, "/websocket") + if err != nil { + return err + } + // re-assign for making the client available below + // do not use := to avoid shadowing clientCtx + clientCtx = clientCtx.WithClient(rpcclient) + + // use the provided clientCtx to register the services + app.RegisterTxService(clientCtx) + app.RegisterTendermintService(clientCtx) + app.RegisterNodeService(clientCtx, svrCfg) + } + + grpcSrv, clientCtx, err := startGrpcServer(ctx, g, svrCfg.GRPC, clientCtx, svrCtx, app) + if err != nil { + return err + } + + err = startAPIServer(ctx, g, svrCfg, clientCtx, svrCtx, app, svrCtx.Config.RootDir, grpcSrv, metrics) + if err != nil { + return err + } + + if opts.PostSetupStandalone != nil { + if err := opts.PostSetupStandalone(svrCtx, clientCtx, ctx, g); err != nil { + return err + } + } + + g.Go(func() error { + if err := svr.Start(); err != nil { + svrCtx.Logger.Error("failed to start out-of-process ABCI server", "err", err) + return err + } + + // Wait for the calling process to be canceled or close the provided context, + // so we can gracefully stop the ABCI server. + <-ctx.Done() + svrCtx.Logger.Info("stopping the ABCI server...") + return svr.Stop() + }) + + return g.Wait() +} + +func startGrpcServer( + ctx context.Context, + g *errgroup.Group, + config serverconfig.GRPCConfig, + clientCtx client.Context, + svrCtx *server.Context, + app types.Application, +) (*grpc.Server, client.Context, error) { + if !config.Enable { + // return grpcServer as nil if gRPC is disabled + return nil, clientCtx, nil + } + _, _, err := net.SplitHostPort(config.Address) + if err != nil { + return nil, clientCtx, err + } + + maxSendMsgSize := config.MaxSendMsgSize + if maxSendMsgSize == 0 { + maxSendMsgSize = serverconfig.DefaultGRPCMaxSendMsgSize + } + + maxRecvMsgSize := config.MaxRecvMsgSize + if maxRecvMsgSize == 0 { + maxRecvMsgSize = serverconfig.DefaultGRPCMaxRecvMsgSize + } + + // if gRPC is enabled, configure gRPC client for gRPC gateway + grpcClient, err := grpc.Dial( //nolint: staticcheck // ignore this line for this linter + config.Address, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithDefaultCallOptions( + grpc.ForceCodec(codec.NewProtoCodec(clientCtx.InterfaceRegistry).GRPCCodec()), + grpc.MaxCallRecvMsgSize(maxRecvMsgSize), + grpc.MaxCallSendMsgSize(maxSendMsgSize), + ), + ) + if err != nil { + return nil, clientCtx, err + } + + clientCtx = clientCtx.WithGRPCClient(grpcClient) + svrCtx.Logger.Debug("gRPC client assigned to client context", "target", config.Address) + + grpcSrv, err := servergrpc.NewGRPCServer(clientCtx, app, config) + if err != nil { + return nil, clientCtx, err + } + + // Start the gRPC server in a goroutine. Note, the provided ctx will ensure + // that the server is gracefully shut down. + g.Go(func() error { + return servergrpc.StartGRPCServer(ctx, svrCtx.Logger.With("module", "grpc-server"), config, grpcSrv) + }) + return grpcSrv, clientCtx, nil +} + +func startAPIServer( + ctx context.Context, + g *errgroup.Group, + svrCfg serverconfig.Config, + clientCtx client.Context, + svrCtx *server.Context, + app types.Application, + home string, + grpcSrv *grpc.Server, + metrics *telemetry.Metrics, +) error { + if !svrCfg.API.Enable { + return nil + } + + clientCtx = clientCtx.WithHomeDir(home) + + apiSrv := api.New(clientCtx, svrCtx.Logger.With("module", "api-server"), grpcSrv) + app.RegisterAPIRoutes(apiSrv, svrCfg.API) + + if svrCfg.Telemetry.Enabled { + apiSrv.SetTelemetry(metrics) + } + + g.Go(func() error { + return apiSrv.Start(ctx, svrCfg) + }) + return nil +} + +func getCtx(svrCtx *server.Context, block bool) (*errgroup.Group, context.Context) { + ctx, cancelFn := context.WithCancel(context.Background()) + g, ctx := errgroup.WithContext(ctx) + // listen for quit signals so the calling parent process can gracefully exit + server.ListenForQuitSignals(g, block, cancelFn, svrCtx.Logger) + return g, ctx +} + +// testnetify modifies both state and blockStore, allowing the provided operator address and local validator key to control the network +// that the state in the data folder represents. The chainID of the local genesis file is modified to match the provided chainID. +func testnetify(ctx *server.Context, testnetAppCreator types.AppCreator, db dbm.DB, traceWriter io.WriteCloser) (types.Application, error) { + config := ctx.Config + + // Get the comma-separated string of validators to migrate consensus state + brokenValidators, ok := ctx.Viper.Get(KeyBrokenValidator).(string) + if !ok { + return nil, fmt.Errorf("expected comma-separated list of validators to patch info for %s", KeyNewChainID) + } + + fmt.Printf("validators to retain: %v\n", brokenValidators) + + newChainID, ok := ctx.Viper.Get(KeyNewChainID).(string) + if !ok { + return nil, fmt.Errorf("expected string for key %s", KeyNewChainID) + } + + // Modify app genesis chain ID and save to genesis file. + genFilePath := config.GenesisFile() + appGen, err := genutiltypes.AppGenesisFromFile(genFilePath) + if err != nil { + return nil, err + } + appGen.ChainID = newChainID + if err := appGen.ValidateAndComplete(); err != nil { + return nil, err + } + if err := appGen.SaveAs(genFilePath); err != nil { + return nil, err + } + + // Regenerate addrbook.json to prevent peers on old network from causing error logs. + addrBookPath := filepath.Join(config.RootDir, "config", "addrbook.json") + if err := os.Remove(addrBookPath); err != nil && !os.IsNotExist(err) { + return nil, fmt.Errorf("failed to remove existing addrbook.json: %w", err) + } + + emptyAddrBook := []byte("{}") + if err := os.WriteFile(addrBookPath, emptyAddrBook, 0o600); err != nil { + return nil, fmt.Errorf("failed to create empty addrbook.json: %w", err) + } + + // Load the comet genesis doc provider. + genDocProvider := node.DefaultGenesisDocProviderFunc(config) + + // Initialize blockStore and stateDB. + blockStoreDB, err := cmtcfg.DefaultDBProvider(&cmtcfg.DBContext{ID: "blockstore", Config: config}) + if err != nil { + return nil, err + } + blockStore := store.NewBlockStore(blockStoreDB) + + stateDB, err := cmtcfg.DefaultDBProvider(&cmtcfg.DBContext{ID: "state", Config: config}) + if err != nil { + return nil, err + } + + defer blockStore.Close() + defer stateDB.Close() + + privValidator := pvm.LoadOrGenFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) + userPubKey, err := privValidator.GetPubKey() + if err != nil { + return nil, err + } + validatorAddress := userPubKey.Address() + + stateStore := sm.NewStore(stateDB, sm.StoreOptions{ + DiscardABCIResponses: config.Storage.DiscardABCIResponses, + }) + + state, genDoc, err := node.LoadStateFromDBOrGenesisDocProvider(stateDB, genDocProvider) + if err != nil { + return nil, err + } + + ctx.Viper.Set(KeyNewValAddr, validatorAddress) + ctx.Viper.Set(KeyUserPubKey, userPubKey) + testnetApp := testnetAppCreator(ctx.Logger, db, traceWriter, ctx.Viper) + + // We need to create a temporary proxyApp to get the initial state of the application. + cmtApp := server.NewCometABCIWrapper(testnetApp) + _, context := getCtx(ctx, true) + clientCreator := proxy.NewLocalClientCreator(cmtApp) + metrics := node.DefaultMetricsProvider(cmtcfg.DefaultConfig().Instrumentation) + _, _, _, _, proxyMetrics, _, _ := metrics(genDoc.ChainID) + proxyApp := proxy.NewAppConns(clientCreator, proxyMetrics) + if err := proxyApp.Start(); err != nil { + return nil, fmt.Errorf("error starting proxy app connections: %v", err) + } + res, err := proxyApp.Query().Info(context, proxy.RequestInfo) + if err != nil { + return nil, fmt.Errorf("error calling Info: %v", err) + } + err = proxyApp.Stop() + if err != nil { + return nil, err + } + appHash := res.LastBlockAppHash + appHeight := res.LastBlockHeight + + var block *cmttypes.Block + switch { + case appHeight == blockStore.Height(): + block = blockStore.LoadBlock(blockStore.Height()) + if state.LastBlockHeight != appHeight { + state.LastBlockHeight = appHeight + block.AppHash = appHash + state.AppHash = appHash + } else { + // Node was likely stopped via SIGTERM, delete the next block's seen commit + err := blockStoreDB.Delete([]byte(fmt.Sprintf("SC:%v", blockStore.Height()+1))) + if err != nil { + return nil, err + } + } + case blockStore.Height() > state.LastBlockHeight: + // This state usually occurs when we gracefully stop the node. + err = blockStore.DeleteLatestBlock() + if err != nil { + return nil, err + } + block = blockStore.LoadBlock(blockStore.Height()) + default: + // If there is any other state, we just load the block + block = blockStore.LoadBlock(blockStore.Height()) + } + + block.ChainID = newChainID + state.ChainID = newChainID + + block.LastBlockID = state.LastBlockID + block.LastCommit.BlockID = state.LastBlockID + + // Create a vote from our validator + vote := cmttypes.Vote{ + Type: cmtproto.PrecommitType, + Height: state.LastBlockHeight, + Round: 0, + BlockID: state.LastBlockID, + Timestamp: time.Now(), + ValidatorAddress: validatorAddress, + ValidatorIndex: 0, + Signature: []byte{}, + } + + // Sign the vote, and copy the proto changes from the act of signing to the vote itself + voteProto := vote.ToProto() + err = privValidator.SignVote(newChainID, voteProto) + if err != nil { + return nil, err + } + vote.Signature = voteProto.Signature + vote.Timestamp = voteProto.Timestamp + + // Modify the block's lastCommit to be signed only by our validator + block.LastCommit.Signatures[0].ValidatorAddress = validatorAddress + block.LastCommit.Signatures[0].Signature = vote.Signature + block.LastCommit.Signatures = []cmttypes.CommitSig{block.LastCommit.Signatures[0]} + + // Load the extendedCommit of the lastBlockHeight and modify it to be signed from our validator + ec := blockStore.LoadBlockExtendedCommit(state.LastBlockHeight) + ec.BlockID = state.LastBlockID + ec.Round = vote.Round + ec.ExtendedSignatures[0].Signature = vote.Signature + ec.ExtendedSignatures[0].ValidatorAddress = validatorAddress + ec.ExtendedSignatures[0].Timestamp = vote.Timestamp + ec.ExtendedSignatures[0].BlockIDFlag = cmttypes.BlockIDFlagCommit + + extSignBytes := cmttypes.VoteExtensionSignBytes(newChainID, vote.ToProto()) + extSig, err := privValidator.Key.PrivKey.Sign(extSignBytes) + if err != nil { + return nil, err + } + + ec.ExtendedSignatures[0].ExtensionSignature = extSig + ec.ExtendedSignatures = []cmttypes.ExtendedCommitSig{ec.ExtendedSignatures[0]} + + // Create the part set from the block + blockParts, err := block.MakePartSet(cmttypes.BlockPartSizeBytes) + if err != nil { + return nil, err + } + + // Save the block with extended commit + blockStore.DeleteLatestBlock() + blockStore.SaveBlockWithExtendedCommit(block, blockParts, ec) + + // Create a list to store validators + var newValidators []*cmttypes.Validator + + // Add our validator with high voting power + newVal := &cmttypes.Validator{ + Address: validatorAddress, + PubKey: userPubKey, + VotingPower: 900000000000000, + } + newValidators = append(newValidators, newVal) + + // Parse and add other validators with low voting power + if brokenValidators != "" { + // Split the comma-separated list of validators + // validatorAddrs := strings.Split(brokenValidators, ",") + // for _, valAddrStr := range validatorAddrs { + + // Trim any whitespace + // valAddrStr = strings.TrimSpace(valAddrStr) + + // Decode the validator address + + // Create a validator with very low voting power (1) + // brokenVal := &cmttypes.Validator{ + // Address: valAddr, + // PubKey: nil, // You might want to fetch the actual pubkey if needed + // VotingPower: 1, // Minimal voting power to keep the validator in the set + // } + // newValidators = append(newValidators, brokenVal) + // } + } + + // Create new validator set + newValSet := &cmttypes.ValidatorSet{ + Validators: newValidators, + Proposer: newVal, // Our validator remains the proposer + } + + // Replace all valSets in state to be the new valSet + state.Validators = newValSet + state.LastValidators = newValSet + state.NextValidators = newValSet + state.LastHeightValidatorsChanged = blockStore.Height() + + err = stateStore.Save(state) + if err != nil { + return nil, err + } + + // Create a ValidatorsInfo struct to store in stateDB + valSet, err := state.Validators.ToProto() + if err != nil { + return nil, err + } + valInfo := &cmtstate.ValidatorsInfo{ + ValidatorSet: valSet, + LastHeightChanged: state.LastBlockHeight, + } + buf, err := valInfo.Marshal() + if err != nil { + return nil, err + } + + // Modify Validators stateDB entries + for _, height := range []int64{blockStore.Height(), blockStore.Height() - 1, blockStore.Height() + 1} { + err = stateDB.Set([]byte(fmt.Sprintf("validatorsKey:%v", height)), buf) + if err != nil { + return nil, err + } + } + + // Since we modified the chainID, we set the new genesisDoc in the stateDB + b, err := cmtjson.Marshal(genDoc) + if err != nil { + return nil, err + } + if err := stateDB.SetSync([]byte("genesisDoc"), b); err != nil { + return nil, err + } + + return testnetApp, err +} + +func ParseValidatorInfos(jsonPath string) ([]ValidatorInfo, error) { + data, err := os.ReadFile(jsonPath) + if err != nil { + return nil, fmt.Errorf("error reading JSON file: %v", err) + } + + var validatorInfos []ValidatorInfo + err = json.Unmarshal(data, &validatorInfos) + if err != nil { + return nil, fmt.Errorf("error unmarshaling JSON: %v", err) + } + + return validatorInfos, nil +} + +func setupTraceWriter(svrCtx *server.Context) (traceWriter io.WriteCloser, cleanup func(), err error) { + // clean up the traceWriter when the server is shutting down + cleanup = func() {} + + traceWriterFile := svrCtx.Viper.GetString(flagTraceStore) + traceWriter, err = openTraceWriter(traceWriterFile) + if err != nil { + return traceWriter, cleanup, err + } + + // if flagTraceStore is not used then traceWriter is nil + if traceWriter != nil { + cleanup = func() { + if err = traceWriter.Close(); err != nil { + svrCtx.Logger.Error("failed to close trace writer", "err", err) + } + } + } + + return traceWriter, cleanup, nil +} + +func startInProcess(svrCtx *server.Context, svrCfg serverconfig.Config, clientCtx client.Context, app types.Application, + metrics *telemetry.Metrics, opts server.StartCmdOptions, +) error { + cmtCfg := svrCtx.Config + gRPCOnly := svrCtx.Viper.GetBool(flagGRPCOnly) + + g, ctx := getCtx(svrCtx, true) + + if gRPCOnly { + // TODO: Generalize logic so that gRPC only is really in startStandAlone + svrCtx.Logger.Info("starting node in gRPC only mode; CometBFT is disabled") + svrCfg.GRPC.Enable = true + } else { + svrCtx.Logger.Info("starting node with ABCI CometBFT in-process") + tmNode, cleanupFn, err := startCmtNode(ctx, cmtCfg, app, svrCtx) + if err != nil { + return err + } + defer cleanupFn() + + // Add the tx service to the gRPC router. We only need to register this + // service if API or gRPC is enabled, and avoid doing so in the general + // case, because it spawns a new local CometBFT RPC client. + if svrCfg.API.Enable || svrCfg.GRPC.Enable { + // Re-assign for making the client available below do not use := to avoid + // shadowing the clientCtx variable. + clientCtx = clientCtx.WithClient(local.New(tmNode)) + + app.RegisterTxService(clientCtx) + app.RegisterTendermintService(clientCtx) + app.RegisterNodeService(clientCtx, svrCfg) + } + } + + grpcSrv, clientCtx, err := startGrpcServer(ctx, g, svrCfg.GRPC, clientCtx, svrCtx, app) + if err != nil { + return err + } + + err = startAPIServer(ctx, g, svrCfg, clientCtx, svrCtx, app, cmtCfg.RootDir, grpcSrv, metrics) + if err != nil { + return err + } + + if opts.PostSetup != nil { + if err := opts.PostSetup(svrCtx, clientCtx, ctx, g); err != nil { + return err + } + } + + // wait for signal capture and gracefully return + // we are guaranteed to be waiting for the "ListenForQuitSignals" goroutine. + return g.Wait() +} + +// TODO: Move nodeKey into being created within the function. +func startCmtNode( + ctx context.Context, + cfg *cmtcfg.Config, + app types.Application, + svrCtx *server.Context, +) (tmNode *node.Node, cleanupFn func(), err error) { + nodeKey, err := p2p.LoadOrGenNodeKey(cfg.NodeKeyFile()) + if err != nil { + return nil, cleanupFn, err + } + + cmtApp := server.NewCometABCIWrapper(app) + tmNode, err = node.NewNodeWithContext( + ctx, + cfg, + pvm.LoadOrGenFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile()), + nodeKey, + proxy.NewLocalClientCreator(cmtApp), + getGenDocProvider(cfg), + cmtcfg.DefaultDBProvider, + node.DefaultMetricsProvider(cfg.Instrumentation), + servercmtlog.CometLoggerWrapper{Logger: svrCtx.Logger}, + ) + if err != nil { + return tmNode, cleanupFn, err + } + + if err := tmNode.Start(); err != nil { + return tmNode, cleanupFn, err + } + + cleanupFn = func() { + if tmNode != nil && tmNode.IsRunning() { + _ = tmNode.Stop() + } + } + + return tmNode, cleanupFn, nil +} + +// returns a function which returns the genesis doc from the genesis file. +func getGenDocProvider(cfg *cmtcfg.Config) func() (*cmttypes.GenesisDoc, error) { + return func() (*cmttypes.GenesisDoc, error) { + appGenesis, err := genutiltypes.AppGenesisFromFile(cfg.GenesisFile()) + if err != nil { + return nil, err + } + + return appGenesis.ToGenesisDoc() + } +} diff --git a/server/types.go b/server/types.go new file mode 100644 index 00000000..d35ec371 --- /dev/null +++ b/server/types.go @@ -0,0 +1,8 @@ +package server + +type ValidatorInfo struct { + Val string `json:"val"` + NumDels int `json:"num_dels"` + NumTokens int `json:"num_tokens"` + Jailed bool `json:"jailed"` +} diff --git a/server/util.go b/server/util.go new file mode 100644 index 00000000..4b83362b --- /dev/null +++ b/server/util.go @@ -0,0 +1,34 @@ +package server + +import ( + "io" + "os" + "path/filepath" + + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/server/types" + "github.com/spf13/cobra" +) + +func openDB(rootDir string, backendType dbm.BackendType) (dbm.DB, error) { + dataDir := filepath.Join(rootDir, "data") + return dbm.NewDB("application", backendType, dataDir) +} + +func openTraceWriter(traceWriterFile string) (w io.WriteCloser, err error) { + if traceWriterFile == "" { + return + } + return os.OpenFile( + traceWriterFile, + os.O_WRONLY|os.O_APPEND|os.O_CREATE, + 0o666, + ) +} + +// AddTestnetCreatorCommand allows chains to create a testnet from the state existing in their node's data directory. +func AddTestnetCreatorCommand(rootCmd *cobra.Command, appCreator types.AppCreator, addStartFlags types.ModuleInitFlags) { + testnetCreateCmd := InPlaceTestnetCreator(appCreator) + addStartFlags(testnetCreateCmd) + rootCmd.AddCommand(testnetCreateCmd) +} diff --git a/tests/ict/basic_start_test.go b/tests/ict/basic_start_test.go index fb99d7fe..d3309771 100644 --- a/tests/ict/basic_start_test.go +++ b/tests/ict/basic_start_test.go @@ -12,6 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + pooltypes "github.com/cosmos/cosmos-sdk/x/protocolpool/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/strangelove-ventures/interchaintest/v8" "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" @@ -238,7 +239,8 @@ func testBank(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, user func testDistribution(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { var err error node := chain.GetNode() - acc := authtypes.NewModuleAddress("distribution") + distrAcc := authtypes.NewModuleAddress("distribution") + protocolPoolAcc := authtypes.NewModuleAddress("protocolpool") require := require.New(t) vals, err := chain.StakingQueryValidators(ctx, stakingtypes.Bonded.String()) @@ -280,42 +282,47 @@ func testDistribution(ctx context.Context, t *testing.T, chain *cosmos.CosmosCha err = node.StakingDelegate(ctx, users[2].KeyName(), valAddr, fmt.Sprintf("%d%s", uint64(100*math.Pow10(6)), chain.Config().Denom)) require.NoError(err) - before, err := chain.BankQueryBalance(ctx, acc.String(), chain.Config().Denom) + before, err := chain.BankQueryBalance(ctx, distrAcc.String(), chain.Config().Denom) require.NoError(err) fmt.Printf("before: %+v\n", before) err = node.DistributionWithdrawAllRewards(ctx, users[2].KeyName()) require.NoError(err) - after, err := chain.BankQueryBalance(ctx, acc.String(), chain.Config().Denom) + after, err := chain.BankQueryBalance(ctx, distrAcc.String(), chain.Config().Denom) require.NoError(err) fmt.Printf("after: %+v\n", after) require.True(after.GT(before)) }) t.Run("fund-pools", func(t *testing.T) { - bal, err := chain.BankQueryBalance(ctx, acc.String(), chain.Config().Denom) + bal, err := chain.BankQueryBalance(ctx, protocolPoolAcc.String(), chain.Config().Denom) require.NoError(err) fmt.Printf("CP balance: %+v\n", bal) amount := uint64(9_000 * math.Pow10(6)) + fmt.Printf("AMOUNT: %+v\n", amount) - err = node.DistributionFundCommunityPool(ctx, users[0].KeyName(), fmt.Sprintf("%d%s", amount, chain.Config().Denom)) + err = ProtocolPoolFundCommunityPool(ctx, node, users[0].KeyName(), fmt.Sprintf("%d%s", amount, chain.Config().Denom)) require.NoError(err) err = node.DistributionFundValidatorRewardsPool(ctx, users[0].KeyName(), valAddr, fmt.Sprintf("%d%s", uint64(100*math.Pow10(6)), chain.Config().Denom)) require.NoError(err) - bal2, err := chain.BankQueryBalance(ctx, acc.String(), chain.Config().Denom) + bal2, err := chain.BankQueryBalance(ctx, protocolPoolAcc.String(), chain.Config().Denom) require.NoError(err) - fmt.Printf("New CP balance: %+v\n", bal2) // 9147579661 + fmt.Printf("New CP balance: %+v\n", bal2) - require.True(bal2.Sub(bal).GT(sdkmath.NewInt(int64(amount)))) + lessThan := sdkmath.NewInt(int64(amount)) + greaterThan := bal2.Sub(bal) + fmt.Printf("greaterThan: %+v\n", greaterThan) + fmt.Printf("lessThan: %+v\n", lessThan) + require.True(greaterThan.GT(lessThan)) // queries - coins, err := chain.DistributionQueryCommunityPool(ctx) + coins, err := ProtocolPoolQueryCommunityPool(ctx, node) require.NoError(err) - require.True(coins.AmountOf(chain.Config().Denom).GT(sdkmath.LegacyNewDec(int64(amount)))) + require.True(coins.AmountOf(chain.Config().Denom).GT(sdkmath.NewInt(int64(amount)))) }) t.Run("set-custiom-withdraw-address", func(t *testing.T) { @@ -577,3 +584,17 @@ func testAuth(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain) { require.NoError(t, err) require.EqualValues(t, govAddr, accInfo.Address) } + +// DistributionFundCommunityPool funds the community pool with the specified amount of coins. +func ProtocolPoolFundCommunityPool(ctx context.Context, node *cosmos.ChainNode, keyName, amount string) error { + _, err := node.ExecTx(ctx, + keyName, "protocolpool", "fund-community-pool", amount, + ) + return err +} + +// DistributionCommunityPool returns the community pool +func ProtocolPoolQueryCommunityPool(ctx context.Context, node *cosmos.ChainNode) (*sdk.Coins, error) { + res, err := pooltypes.NewQueryClient(node.GrpcConn).CommunityPool(ctx, &pooltypes.QueryCommunityPoolRequest{}) + return &res.Pool, err +} diff --git a/tests/ict/go.mod b/tests/ict/go.mod index a0e2c6c0..06f6d98a 100644 --- a/tests/ict/go.mod +++ b/tests/ict/go.mod @@ -1,6 +1,6 @@ module github.com/bitsongofficial/go-bitsong/tests/e2e -go 1.23.0 +go 1.23.2 replace ( github.com/ChainSafe/go-schnorrkel => github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d @@ -8,9 +8,9 @@ replace ( ) require ( - cosmossdk.io/math v1.5.0 + cosmossdk.io/math v1.5.3 cosmossdk.io/x/upgrade v0.1.4 - github.com/cosmos/cosmos-sdk v0.50.11 + github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/ibc-go/v8 v8.6.1 github.com/docker/docker v24.0.9+incompatible github.com/strangelove-ventures/interchaintest/v8 v8.4.0 @@ -19,7 +19,7 @@ require ( ) require ( - cel.dev/expr v0.19.0 // indirect + cel.dev/expr v0.20.0 // indirect cloud.google.com/go v0.118.2 // indirect cloud.google.com/go/auth v0.14.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect @@ -27,16 +27,17 @@ require ( cloud.google.com/go/iam v1.4.0 // indirect cloud.google.com/go/monitoring v1.23.0 // indirect cloud.google.com/go/storage v1.50.0 // indirect - cosmossdk.io/api v0.7.6 // indirect - cosmossdk.io/collections v0.4.0 // indirect - cosmossdk.io/core v0.11.1 // indirect - cosmossdk.io/depinject v1.1.0 // indirect - cosmossdk.io/errors v1.0.1 // indirect - cosmossdk.io/log v1.5.0 // indirect - cosmossdk.io/store v1.1.1 // indirect + cosmossdk.io/api v0.9.2 // indirect + cosmossdk.io/collections v1.2.0 // indirect + cosmossdk.io/core v0.11.3 // indirect + cosmossdk.io/depinject v1.2.0 // indirect + cosmossdk.io/errors v1.0.2 // indirect + cosmossdk.io/log v1.5.1 // indirect + cosmossdk.io/schema v1.1.0 // indirect + cosmossdk.io/store v1.1.2 // indirect cosmossdk.io/x/evidence v0.1.1 // indirect cosmossdk.io/x/feegrant v0.1.1 // indirect - cosmossdk.io/x/tx v0.13.7 // indirect + cosmossdk.io/x/tx v0.14.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect @@ -45,10 +46,10 @@ require ( github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 // indirect github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect - github.com/DataDog/zstd v1.5.6 // indirect + github.com/DataDog/zstd v1.5.7 // indirect github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.49.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect @@ -58,23 +59,21 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect - github.com/bits-and-blooms/bitset v1.20.0 // indirect - github.com/bytedance/sonic v1.12.3 // indirect - github.com/bytedance/sonic/loader v0.2.0 // indirect + github.com/bits-and-blooms/bitset v1.22.0 // indirect + github.com/bytedance/sonic v1.13.2 // indirect + github.com/bytedance/sonic/loader v0.2.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect - github.com/cloudwego/base64x v0.1.4 // indirect - github.com/cloudwego/iasm v0.2.0 // indirect - github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect - github.com/cockroachdb/apd/v3 v3.2.1 // indirect + github.com/cloudwego/base64x v0.1.5 // indirect + github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect - github.com/cockroachdb/pebble v1.1.4 // indirect + github.com/cockroachdb/pebble v1.1.5 // indirect github.com/cockroachdb/redact v1.1.6 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft v0.38.15 // indirect + github.com/cometbft/cometbft v0.38.17 // indirect github.com/cometbft/cometbft-db v0.14.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.1.1 // indirect @@ -93,7 +92,7 @@ require ( github.com/decred/base58 v1.0.5 // indirect github.com/decred/dcrd/crypto/blake256 v1.1.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/desertbit/timer v1.0.1 // indirect github.com/dgraph-io/badger/v4 v4.5.1 // indirect github.com/dgraph-io/ristretto/v2 v2.1.0 // indirect @@ -108,23 +107,24 @@ require ( github.com/ethereum/go-ethereum v1.15.0 // indirect github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/getsentry/sentry-go v0.31.1 // indirect + github.com/go-jose/go-jose/v4 v4.0.4 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect - github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.3 // indirect github.com/google/flatbuffers v25.2.10+incompatible // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect @@ -148,7 +148,6 @@ require ( github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.2 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect github.com/holiman/uint256 v1.3.2 // indirect @@ -160,15 +159,14 @@ require ( github.com/ipfs/go-cid v0.5.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.11 // indirect - github.com/klauspost/cpuid/v2 v2.2.9 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-libp2p v0.39.1 // indirect github.com/linxGnu/grocksdb v1.9.8 // indirect - github.com/magiconair/properties v1.8.9 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -178,7 +176,6 @@ require ( github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20240603204351-26b456ae3afe // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/morikuni/aec v1.0.0 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -197,31 +194,31 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/petermattis/goid v0.0.0-20250211185408-f2b9d978cd7a // indirect github.com/pierrec/xxHash v0.1.5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.5 // indirect + github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/rs/zerolog v1.33.0 // indirect + github.com/rs/zerolog v1.34.0 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.7.1 // indirect - github.com/spf13/cobra v1.8.1 // indirect + github.com/spf13/cobra v1.9.1 // indirect github.com/spf13/pflag v1.0.6 // indirect - github.com/spf13/viper v1.19.0 // indirect + github.com/spf13/viper v1.20.1 // indirect + github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect @@ -230,39 +227,40 @@ require ( github.com/tyler-smith/go-bip32 v1.0.0 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/ulikunitz/xz v0.5.12 // indirect + github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v1.0.0 // indirect go.etcd.io/bbolt v1.4.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.33.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.34.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect go.opentelemetry.io/otel v1.34.0 // indirect go.opentelemetry.io/otel/metric v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.34.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect go.opentelemetry.io/otel/trace v1.34.0 // indirect + go.uber.org/mock v0.5.2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect - golang.org/x/crypto v0.33.0 // indirect - golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.23.0 // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/arch v0.15.0 // indirect + golang.org/x/crypto v0.37.0 // indirect + golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect + golang.org/x/mod v0.24.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/oauth2 v0.26.0 // indirect - golang.org/x/sync v0.11.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/term v0.29.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/sync v0.13.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/term v0.31.0 // indirect + golang.org/x/text v0.24.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.30.0 // indirect + golang.org/x/tools v0.31.0 // indirect google.golang.org/api v0.221.0 // indirect google.golang.org/genproto v0.0.0-20250212204824-5a70512c5d8b // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250212204824-5a70512c5d8b // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b // indirect - google.golang.org/grpc v1.70.0 // indirect - google.golang.org/protobuf v1.36.5 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f // indirect + google.golang.org/grpc v1.72.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -273,7 +271,7 @@ require ( modernc.org/memory v1.8.2 // indirect modernc.org/sqlite v1.34.5 // indirect nhooyr.io/websocket v1.8.17 // indirect - pgregory.net/rapid v1.1.0 // indirect + pgregory.net/rapid v1.2.0 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/tests/ict/go.sum b/tests/ict/go.sum index 64f39c56..370c90fd 100644 --- a/tests/ict/go.sum +++ b/tests/ict/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.19.0 h1:lXuo+nDhpyJSpWxpPVi5cPUwzKb+dsdOiw6IreM5yt0= -cel.dev/expr v0.19.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.20.0 h1:OunBvVCfvpWlt4dN7zg3FM6TDkzOePe1+foGJ9AXeeI= +cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -614,32 +614,34 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= -cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY= -cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= +cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= cosmossdk.io/client/v2 v2.0.0-beta.3 h1:+TTuH0DwQYsUq2JFAl3fDZzKq5gQG7nt3dAattkjFDU= cosmossdk.io/client/v2 v2.0.0-beta.3/go.mod h1:CZcL41HpJPOOayTCO28j8weNBQprG+SRiKX39votypo= -cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= -cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= -cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= -cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= -cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E= -cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI= -cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= -cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= -cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= -cosmossdk.io/math v1.5.0 h1:sbOASxee9Zxdjd6OkzogvBZ25/hP929vdcYcBJQbkLc= -cosmossdk.io/math v1.5.0/go.mod h1:AAwwBmUhqtk2nlku174JwSll+/DepUXW3rWIXN5q+Nw= -cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= -cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +cosmossdk.io/collections v1.2.0 h1:IesfVG8G/+FYCMVMP01frS/Cw99Omk5vBh3cHbO01Gg= +cosmossdk.io/collections v1.2.0/go.mod h1:4NkMoYw6qRA8fnSH/yn1D/MOutr8qyQnwsO50Mz9ItU= +cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= +cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= +cosmossdk.io/depinject v1.2.0 h1:6NW/FSK1IkWTrX7XxUpBmX1QMBozpEI9SsWkKTBc5zw= +cosmossdk.io/depinject v1.2.0/go.mod h1:pvitjtUxZZZTQESKNS9KhGjWVslJZxtO9VooRJYyPjk= +cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= +cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= +cosmossdk.io/log v1.5.1 h1:wLwiYXmfrort/O+j6EkjF+HvbdrRQd+4cYCPKFSm+zM= +cosmossdk.io/log v1.5.1/go.mod h1:5cXXBvfBkR2/BcXmosdCSLXllvgSjphrrDVdfVRmBGM= +cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= +cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= +cosmossdk.io/schema v1.1.0 h1:mmpuz3dzouCoyjjcMcA/xHBEmMChN+EHh8EHxHRHhzE= +cosmossdk.io/schema v1.1.0/go.mod h1:Gb7pqO+tpR+jLW5qDcNOSv0KtppYs7881kfzakguhhI= +cosmossdk.io/store v1.1.2 h1:3HOZG8+CuThREKv6cn3WSohAc6yccxO3hLzwK6rBC7o= +cosmossdk.io/store v1.1.2/go.mod h1:60rAGzTHevGm592kFhiUVkNC9w7gooSEn5iUBPzHQ6A= cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q= cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc= cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= -cosmossdk.io/x/tx v0.13.7 h1:8WSk6B/OHJLYjiZeMKhq7DK7lHDMyK0UfDbBMxVmeOI= -cosmossdk.io/x/tx v0.13.7/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +cosmossdk.io/x/tx v0.14.0 h1:hB3O25kIcyDW/7kMTLMaO8Ripj3yqs5imceVd6c/heA= +cosmossdk.io/x/tx v0.14.0/go.mod h1:Tn30rSRA1PRfdGB3Yz55W4Sn6EIutr9xtMKSHij+9PM= cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -666,14 +668,14 @@ github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420/go.mod h1:KYkiMX5AbOlXXYfxkr github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q= github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY= -github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= +github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw= github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc= github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 h1:f2Qw/Ehhimh5uO1fayV0QIW7DShEQqhtUfhYc+cBPlw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0/go.mod h1:2bIszWvQRlJVmJLiuLhukLImRjKPcYdzzsx6darK02A= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0 h1:o90wcURuxekmXrtxmYWTyNla0+ZEHhud6DI1ZTxd1vI= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0/go.mod h1:6fTWu4m3jocfUZLYF5KsZC1TUfRvEjs7lM4crme/irw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.49.0 h1:jJKWl98inONJAr/IZrdFQUWcwUO95DLY1XMD1ZIut+g= @@ -737,23 +739,23 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= -github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.22.0 h1:Tquv9S8+SGaS3EhyA+up3FXzmkhxPGjQQCkcs2uw7w4= +github.com/bits-and-blooms/bitset v1.22.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= 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/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= -github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= -github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= -github.com/bytedance/sonic v1.12.3 h1:W2MGa7RCU1QTeYRTPE3+88mVC0yXmsRQRChiyVocVjU= -github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= +github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= +github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= -github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= +github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -782,9 +784,8 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= -github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= -github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= +github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e h1:0XBUw73chJ1VYSsfvcPvVT7auykAJce9FpRr10L6Qhw= github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:P13beTBKr5Q18lJe1rIoLUqjM+CB1zYrRg44ZqGuQSA= @@ -801,12 +802,10 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= -github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg= -github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 h1:1MLK4YpFtIEo3ZtMA5C795Wtv5VuUnrXX7mQG+aHg6o= github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= @@ -816,15 +815,15 @@ github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 h1:pU88SPhIFid6/k github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILMqgNeV5jiqR4j+sTuvQNHdf2chuKj1M5k= github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506/go.mod h1:Mw7HqKr2kdtu6aYGn3tPmAftiP3QPX63LdK/zcariIo= -github.com/cockroachdb/pebble v1.1.4 h1:5II1uEP4MyHLDnsrbv/EZ36arcb9Mxg3n+owhZ3GrG8= -github.com/cockroachdb/pebble v1.1.4/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw= +github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo= github.com/cockroachdb/redact v1.1.6 h1:zXJBwDZ84xJNlHl1rMyCojqyIxv+7YUpQiJLQ7n4314= github.com/cockroachdb/redact v1.1.6/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.15 h1:5veFd8k1uXM27PBg9sMO3hAfRJ3vbh4OmmLf6cVrqXg= -github.com/cometbft/cometbft v0.38.15/go.mod h1:+wh6ap6xctVG+JOHwbl8pPKZ0GeqdPYqISu7F4b43cQ= +github.com/cometbft/cometbft v0.38.17 h1:FkrQNbAjiFqXydeAO81FUzriL4Bz0abYxN/eOHrQGOk= +github.com/cometbft/cometbft v0.38.17/go.mod h1:5l0SkgeLRXi6bBfQuevXjKqML1jjfJJlvI1Ulp02/o4= github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -839,8 +838,8 @@ github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNC github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/cosmos-sdk v0.50.11 h1:LxR1aAc8kixdrs3itO+3a44sFoc+vjxVAOyPFx22yjk= -github.com/cosmos/cosmos-sdk v0.50.11/go.mod h1:gt14Meok2IDCjbDtjwkbUcgVNEpUBDN/4hg9cCUtLgw= +github.com/cosmos/cosmos-sdk v0.53.0 h1:ZsB2tnBVudumV059oPuElcr0K1lLOutaI6WJ+osNTbI= +github.com/cosmos/cosmos-sdk v0.53.0/go.mod h1:UPcRyFwOUy2PfSFBWxBceO/HTjZOuBVqY583WyazIGs= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -862,7 +861,7 @@ github.com/cosmos/interchain-security/v5 v5.2.0/go.mod h1:vmeTcTxFCl1eV0o6xpl/IR github.com/cosmos/ledger-cosmos-go v0.14.0 h1:WfCHricT3rPbkPSVKRH+L4fQGKYHuGOK9Edpel8TYpE= github.com/cosmos/ledger-cosmos-go v0.14.0/go.mod h1:E07xCWSBl3mTGofZ2QnL4cIUzMbbGVyik84QYKbX3RA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0= @@ -884,8 +883,8 @@ github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 h1:18HurQ6DfHeNvwIjvOmrgr44bPdtVaQAe/WWwHg9goM= github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1/go.mod h1:XmyzkaXBy7ZvHdrTAlXAjpog8qKSAWa3ze7yqzWmgmc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo= github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE= @@ -960,8 +959,8 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/getsentry/sentry-go v0.31.1 h1:ELVc0h7gwyhnXHDouXkhqTFSO5oslsRDk0++eyE0KJ4= github.com/getsentry/sentry-go v0.31.1/go.mod h1:CYNcMMz73YigoHljQRG+qPF+eMq8gG72XcGN/p71BAY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -977,6 +976,8 @@ github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmn github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v4 v4.0.4 h1:VsjPI33J0SB9vQM6PLmNjoHqMQNGPiZ0rHL7Ni7Q6/E= +github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= @@ -1008,6 +1009,8 @@ github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GO github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= @@ -1094,8 +1097,9 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -1228,8 +1232,6 @@ github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iP github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= @@ -1261,8 +1263,8 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/ipfs/go-cid v0.5.0 h1:goEKKhaGm0ul11IHA7I6p1GmKz8kEYniqFopaB5Otwg= github.com/ipfs/go-cid v0.5.0/go.mod h1:0L7vmeNXpQpUS9vt+yEARkJ8rOg43DF3iPgn4GIN0mk= -github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= -github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= +github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= +github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -1295,11 +1297,11 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= -github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= +github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= +github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -1331,8 +1333,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/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= -github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= +github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -1376,8 +1378,6 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -1471,8 +1471,8 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/petermattis/goid v0.0.0-20250211185408-f2b9d978cd7a h1:ckxP/kGzsxvxXo8jO6E/0QJ8MMmwI7IRj4Fys9QbAZA= @@ -1508,8 +1508,8 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1526,8 +1526,8 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1548,14 +1548,14 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= @@ -1563,8 +1563,6 @@ github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= -github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= @@ -1595,14 +1593,16 @@ github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4 github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= -github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= +github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= +github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/strangelove-ventures/interchaintest/v8 v8.4.0 h1:UHLmJfmkFXuJHfSE8qmOuEy4FWZWuRw4G6XZHm9hC6w= github.com/strangelove-ventures/interchaintest/v8 v8.4.0/go.mod h1:nfPgRi1yjnzi+qF+0Fs9qN9kkS1Fk0oqgpKvqg5a200= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1664,6 +1664,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= +github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= @@ -1686,8 +1688,8 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.33.0 h1:FVPoXEoILwgbZUu4X7YSgsESsAmGRgoYcnXkzgQPhP4= -go.opentelemetry.io/contrib/detectors/gcp v1.33.0/go.mod h1:ZHrLmr4ikK2AwRj9QL+c9s2SOlgoSRyMpNVzUj2fZqI= +go.opentelemetry.io/contrib/detectors/gcp v1.34.0 h1:JRxssobiPg23otYU5SbWtQC//snGVIM3Tx6QRzlQBao= +go.opentelemetry.io/contrib/detectors/gcp v1.34.0/go.mod h1:cV4BMFcscUR/ckqLkbfQmF0PRsq8w/lMGzdbCSveBHo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s= @@ -1700,8 +1702,8 @@ go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -1714,8 +1716,8 @@ go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= -go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= +go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko= +go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= @@ -1727,8 +1729,8 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU= -golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= +golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1748,8 +1750,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1766,8 +1768,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac h1:l5+whBCLH3iH2ZNHYLbAe58bo7yrN4mVcnkHDYz5vvs= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac/go.mod h1:hH+7mtFmImwwcMvScyxUhjuVHR3HGaDPMn9rMSUUbxo= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1813,8 +1815,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= 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= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1889,8 +1891,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1942,8 +1944,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2053,8 +2055,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2069,8 +2071,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= -golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2091,8 +2093,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2176,8 +2178,8 @@ 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/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= -golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= +golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= 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= @@ -2401,10 +2403,10 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20250212204824-5a70512c5d8b h1:TdBaFxGAABTI8sz9jYHPtjje677pS4XXup9vJMlj8hQ= google.golang.org/genproto v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:0TrvLFkilZy+XULmuoWfiTbTRXLWXJ1S44jQTW3lWwE= -google.golang.org/genproto/googleapis/api v0.0.0-20250212204824-5a70512c5d8b h1:i+d0RZa8Hs2L/MuaOQYI+krthcxdEbEM2N+Tf3kJ4zk= -google.golang.org/genproto/googleapis/api v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b h1:FQtJ1MxbXoIIrZHZ33M+w5+dAP9o86rgpjoKr/ZmT7k= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463/go.mod h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f h1:N/PrbTw4kdkqNRzVfWPrBekzLuarFREcbFOiOLkXon4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -2452,8 +2454,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2473,8 +2475,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2487,8 +2489,6 @@ gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -2586,8 +2586,8 @@ nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0 nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= -pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= +pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= diff --git a/x/README.md b/x/README.md index 474c9114..34754425 100644 --- a/x/README.md +++ b/x/README.md @@ -7,5 +7,5 @@ order: 0 Here are some production-grade modules that can be used in BitSong applications, along with their respective documentation: - [fantoken](fantoken/spec/README.md) - Fantoken managing functionalities. -- [cadance](cadance/spec/README.md) - Cadance automates smart contract actions for each block. +- [cadence](cadence/spec/README.md) - Cadence automates smart contract actions for each block. - [smart-accounts](smart-accounts/spec/README.md) - Smart accounts allow authentication of actions for accounts in programmable manners. diff --git a/x/cadance/README.md b/x/cadence/README.md similarity index 70% rename from x/cadance/README.md rename to x/cadence/README.md index a3eefb90..862b57d6 100644 --- a/x/cadance/README.md +++ b/x/cadence/README.md @@ -1,5 +1,5 @@ -# Cadance +# Cadence This module allows smart contracts to execute logic at the end of every block without an external bot. -[Cadance Spec](./spec/README.md) +[Cadence Spec](./spec/README.md) diff --git a/x/cadance/abci.go b/x/cadence/abci.go similarity index 96% rename from x/cadance/abci.go rename to x/cadence/abci.go index 622bf2b6..47921df7 100644 --- a/x/cadance/abci.go +++ b/x/cadence/abci.go @@ -1,4 +1,4 @@ -package cadance +package cadence import ( "time" @@ -11,8 +11,8 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/bitsongofficial/go-bitsong/x/cadance/keeper" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/keeper" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) var endBlockSudoMessage = []byte(types.EndBlockSudoMessage) diff --git a/x/cadance/abci_test.go b/x/cadence/abci_test.go similarity index 79% rename from x/cadance/abci_test.go rename to x/cadence/abci_test.go index b1a70c1c..9fbaa77e 100644 --- a/x/cadance/abci_test.go +++ b/x/cadence/abci_test.go @@ -1,4 +1,4 @@ -package cadance_test +package cadence_test import ( "crypto/sha256" @@ -12,8 +12,8 @@ import ( _ "embed" - cadance "github.com/bitsongofficial/go-bitsong/x/cadance" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + cadence "github.com/bitsongofficial/go-bitsong/x/cadence" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" @@ -33,7 +33,7 @@ func (s *EndBlockerTestSuite) SetupTest() { } //go:embed keeper/testdata/clock_example.wasm -var cadanceContract []byte +var cadenceContract []byte //go:embed keeper/testdata/cw_testburn.wasm var burnContract []byte @@ -52,7 +52,7 @@ func (s *EndBlockerTestSuite) StoreCode(wasmContract []byte) { expHash := sha256.Sum256(wasmContract) s.Require().Equal(expHash[:], result.Checksum) // and - info := s.App.AppKeepers.WasmKeeper.GetCodeInfo(s.Ctx, 1) + info := s.App.WasmKeeper.GetCodeInfo(s.Ctx, 1) s.Require().NotNil(info) s.Require().Equal(expHash[:], info.CodeHash) s.Require().Equal(sender.String(), info.Creator) @@ -61,7 +61,7 @@ func (s *EndBlockerTestSuite) StoreCode(wasmContract []byte) { func (s *EndBlockerTestSuite) InstantiateContract(sender string, admin string) string { msgStoreCode := wasmtypes.MsgStoreCodeFixture(func(m *wasmtypes.MsgStoreCode) { - m.WASMByteCode = cadanceContract + m.WASMByteCode = cadenceContract m.Sender = sender }) _, err := s.App.MsgServiceRouter().Handler(msgStoreCode)(s.Ctx, msgStoreCode) @@ -76,7 +76,7 @@ func (s *EndBlockerTestSuite) InstantiateContract(sender string, admin string) s s.Require().NoError(err) var result wasmtypes.MsgInstantiateContractResponse s.Require().NoError(s.App.AppCodec().Unmarshal(resp.Data, &result)) - contractInfo := s.App.AppKeepers.WasmKeeper.GetContractInfo(s.Ctx, sdk.MustAccAddressFromBech32(result.Address)) + contractInfo := s.App.WasmKeeper.GetContractInfo(s.Ctx, sdk.MustAccAddressFromBech32(result.Address)) s.Require().Equal(contractInfo.CodeID, uint64(1)) s.Require().Equal(contractInfo.Admin, admin) s.Require().Equal(contractInfo.Creator, sender) @@ -85,11 +85,11 @@ func (s *EndBlockerTestSuite) InstantiateContract(sender string, admin string) s } func (s *EndBlockerTestSuite) FundAccount(ctx sdk.Context, addr sdk.AccAddress, amounts sdk.Coins) error { - if err := s.App.AppKeepers.BankKeeper.MintCoins(ctx, minttypes.ModuleName, amounts); err != nil { + if err := s.App.BankKeeper.MintCoins(ctx, minttypes.ModuleName, amounts); err != nil { return err } - return s.App.AppKeepers.BankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, amounts) + return s.App.BankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, amounts) } // Register a contract. You must store the contract code before registering. @@ -104,12 +104,12 @@ func (s *EndBlockerTestSuite) registerContract() string { contractAddress := s.InstantiateContract(sender.String(), admin.String()) // Register contract - cadanceKeeper := s.App.AppKeepers.CadanceKeeper - err := cadanceKeeper.RegisterContract(s.Ctx, admin.String(), contractAddress) + cadenceKeeper := s.App.CadenceKeeper + err := cadenceKeeper.RegisterContract(s.Ctx, admin.String(), contractAddress) s.Require().NoError(err) // Assert contract is registered - contract, err := cadanceKeeper.GetCadanceContract(s.Ctx, contractAddress) + contract, err := cadenceKeeper.GetCadenceContract(s.Ctx, contractAddress) s.Require().NoError(err) s.Require().Equal(contractAddress, contract.ContractAddress) @@ -123,8 +123,8 @@ func (s *EndBlockerTestSuite) registerContract() string { // too little gas, and also ensures the unjailing process functions. func (s *EndBlockerTestSuite) TestEndBlocker() { // Setup test - cadanceKeeper := s.App.AppKeepers.CadanceKeeper - s.StoreCode(cadanceContract) + cadenceKeeper := s.App.CadenceKeeper + s.StoreCode(cadenceContract) contractAddress := s.registerContract() // Query contract @@ -145,7 +145,7 @@ func (s *EndBlockerTestSuite) TestEndBlocker() { s.callEndBlocker() // Ensure contract is now jailed - contract, err := cadanceKeeper.GetCadanceContract(s.Ctx, contractAddress) + contract, err := cadenceKeeper.GetCadenceContract(s.Ctx, contractAddress) s.Require().NoError(err) s.Require().True(contract.IsJailed) @@ -156,11 +156,11 @@ func (s *EndBlockerTestSuite) TestEndBlocker() { s.callEndBlocker() // Unjail contract - err = cadanceKeeper.SetJailStatus(s.Ctx, contractAddress, false) + err = cadenceKeeper.SetJailStatus(s.Ctx, contractAddress, false) s.Require().NoError(err) // Ensure contract is no longer jailed - contract, err = cadanceKeeper.GetCadanceContract(s.Ctx, contractAddress) + contract, err = cadenceKeeper.GetCadenceContract(s.Ctx, contractAddress) s.Require().NoError(err) s.Require().False(contract.IsJailed) @@ -175,7 +175,7 @@ func (s *EndBlockerTestSuite) TestEndBlocker() { // Test a contract which does not handle the sudo EndBlock msg. func (s *EndBlockerTestSuite) TestInvalidContract() { // Setup test - cadanceKeeper := s.App.AppKeepers.CadanceKeeper + cadenceKeeper := s.App.CadenceKeeper s.StoreCode(burnContract) contractAddress := s.registerContract() @@ -183,7 +183,7 @@ func (s *EndBlockerTestSuite) TestInvalidContract() { s.callEndBlocker() // Ensure contract is now jailed - contract, err := cadanceKeeper.GetCadanceContract(s.Ctx, contractAddress) + contract, err := cadenceKeeper.GetCadenceContract(s.Ctx, contractAddress) s.Require().NoError(err) s.Require().True(contract.IsJailed) } @@ -201,8 +201,8 @@ func (s *EndBlockerTestSuite) TestPerformance() { } // Ensure contracts exist - cadanceKeeper := s.App.AppKeepers.CadanceKeeper - contracts, err := cadanceKeeper.GetAllContracts(s.Ctx) + cadenceKeeper := s.App.CadenceKeeper + contracts, err := cadenceKeeper.GetAllContracts(s.Ctx) s.Require().NoError(err) s.Require().Len(contracts, numContracts) @@ -210,7 +210,7 @@ func (s *EndBlockerTestSuite) TestPerformance() { s.callEndBlocker() // Ensure contracts are jailed - contracts, err = cadanceKeeper.GetAllContracts(s.Ctx) + contracts, err = cadenceKeeper.GetAllContracts(s.Ctx) s.Require().NoError(err) for _, contract := range contracts { s.Require().True(contract.IsJailed) @@ -221,7 +221,7 @@ func (s *EndBlockerTestSuite) TestPerformance() { func (s *EndBlockerTestSuite) updateGasLimit(gasLimit uint64) { params := types.DefaultParams() params.ContractGasLimit = gasLimit - k := s.App.AppKeepers.CadanceKeeper + k := s.App.CadenceKeeper store := s.Ctx.KVStore(k.GetStore()) bz := k.GetCdc().MustMarshal(¶ms) @@ -232,14 +232,14 @@ func (s *EndBlockerTestSuite) updateGasLimit(gasLimit uint64) { // Call the end blocker, incrementing the block height func (s *EndBlockerTestSuite) callEndBlocker() { - cadance.EndBlocker(s.Ctx, s.App.AppKeepers.CadanceKeeper) + cadence.EndBlocker(s.Ctx, s.App.CadenceKeeper) s.Ctx = s.Ctx.WithBlockHeight(s.Ctx.BlockHeight() + 1) } -// Query the cadance contract +// Query the cadence contract func (s *EndBlockerTestSuite) queryContract(contractAddress string) int64 { query := `{"get_config":{}}` - output, err := s.App.AppKeepers.WasmKeeper.QuerySmart(s.Ctx, sdk.MustAccAddressFromBech32(contractAddress), []byte(query)) + output, err := s.App.WasmKeeper.QuerySmart(s.Ctx, sdk.MustAccAddressFromBech32(contractAddress), []byte(query)) s.Require().NoError(err) var val struct { diff --git a/x/cadance/client/cli/query.go b/x/cadence/client/cli/query.go similarity index 88% rename from x/cadance/client/cli/query.go rename to x/cadence/client/cli/query.go index ea0765b5..d228ebec 100644 --- a/x/cadance/client/cli/query.go +++ b/x/cadence/client/cli/query.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) func GetQueryCmd() *cobra.Command { @@ -28,7 +28,7 @@ func GetQueryCmd() *cobra.Command { func GetCmdShowContracts() *cobra.Command { cmd := &cobra.Command{ Use: "contracts", - Short: "Show addresses of all current cadance contract s", + Short: "Show addresses of all current cadence contract s", Args: cobra.ExactArgs(0), RunE: func(cmd *cobra.Command, _ []string) error { clientCtx, err := client.GetClientQueryContext(cmd) @@ -42,7 +42,7 @@ func GetCmdShowContracts() *cobra.Command { return err } - res, err := queryClient.CadanceContracts(cmd.Context(), &types.QueryCadanceContracts{ + res, err := queryClient.CadenceContracts(cmd.Context(), &types.QueryCadenceContracts{ Pagination: pageReq, }) if err != nil { @@ -70,11 +70,11 @@ func GetCmdShowContract() *cobra.Command { queryClient := types.NewQueryClient(clientCtx) - req := &types.QueryCadanceContract{ + req := &types.QueryCadenceContract{ ContractAddress: args[0], } - res, err := queryClient.CadanceContract(cmd.Context(), req) + res, err := queryClient.CadenceContract(cmd.Context(), req) if err != nil { return err } diff --git a/x/cadance/client/cli/tx.go b/x/cadence/client/cli/tx.go similarity index 69% rename from x/cadance/client/cli/tx.go rename to x/cadence/client/cli/tx.go index 3c8d6c40..51391d67 100644 --- a/x/cadance/client/cli/tx.go +++ b/x/cadence/client/cli/tx.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) // NewTxCmd returns a root CLI command handler for certain modules/Clock @@ -22,20 +22,20 @@ func NewTxCmd() *cobra.Command { } txCmd.AddCommand( - NewRegisterCadanceContract(), - NewUnregisterCadanceContract(), - NewUnjailCadanceContract(), + NewRegisterCadenceContract(), + NewUnregisterCadenceContract(), + NewUnjailCadenceContract(), ) return txCmd } -// NewRegisterCadanceContract returns a CLI command handler for registering a -// contract for the cadance module. -func NewRegisterCadanceContract() *cobra.Command { +// NewRegisterCadenceContract returns a CLI command handler for registering a +// contract for the cadence module. +func NewRegisterCadenceContract() *cobra.Command { cmd := &cobra.Command{ Use: "register [contract_bech32]", - Short: "Register a cadance contract .", - Long: "Register a cadance contract . Sender must be admin of the contract.", + Short: "Register a cadence contract .", + Long: "Register a cadence contract . Sender must be admin of the contract.", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { cliCtx, err := client.GetClientTxContext(cmd) @@ -46,7 +46,7 @@ func NewRegisterCadanceContract() *cobra.Command { senderAddress := cliCtx.GetFromAddress() contractAddress := args[0] - msg := &types.MsgRegisterCadanceContract{ + msg := &types.MsgRegisterCadenceContract{ SenderAddress: senderAddress.String(), ContractAddress: contractAddress, } @@ -63,13 +63,13 @@ func NewRegisterCadanceContract() *cobra.Command { return cmd } -// NewUnregisterCadanceContract returns a CLI command handler for unregistering a -// contract for the cadance module. -func NewUnregisterCadanceContract() *cobra.Command { +// NewUnregisterCadenceContract returns a CLI command handler for unregistering a +// contract for the cadence module. +func NewUnregisterCadenceContract() *cobra.Command { cmd := &cobra.Command{ Use: "unregister [contract_bech32]", - Short: "Unregister a cadance contract .", - Long: "Unregister a cadance contract . Sender must be admin of the contract.", + Short: "Unregister a cadence contract .", + Long: "Unregister a cadence contract . Sender must be admin of the contract.", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { cliCtx, err := client.GetClientTxContext(cmd) @@ -80,7 +80,7 @@ func NewUnregisterCadanceContract() *cobra.Command { senderAddress := cliCtx.GetFromAddress() contractAddress := args[0] - msg := &types.MsgUnregisterCadanceContract{ + msg := &types.MsgUnregisterCadenceContract{ SenderAddress: senderAddress.String(), ContractAddress: contractAddress, } @@ -97,13 +97,13 @@ func NewUnregisterCadanceContract() *cobra.Command { return cmd } -// NewUnjailCadanceContract returns a CLI command handler for unjailing a -// contract for the cadance module. -func NewUnjailCadanceContract() *cobra.Command { +// NewUnjailCadenceContract returns a CLI command handler for unjailing a +// contract for the cadence module. +func NewUnjailCadenceContract() *cobra.Command { cmd := &cobra.Command{ Use: "unjail [contract_bech32]", - Short: "Unjail a cadance contract .", - Long: "Unjail a cadance contract . Sender must be admin of the contract.", + Short: "Unjail a cadence contract .", + Long: "Unjail a cadence contract . Sender must be admin of the contract.", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { cliCtx, err := client.GetClientTxContext(cmd) @@ -114,7 +114,7 @@ func NewUnjailCadanceContract() *cobra.Command { senderAddress := cliCtx.GetFromAddress() contractAddress := args[0] - msg := &types.MsgUnjailCadanceContract{ + msg := &types.MsgUnjailCadenceContract{ SenderAddress: senderAddress.String(), ContractAddress: contractAddress, } diff --git a/x/cadance/genesis.go b/x/cadence/genesis.go similarity index 91% rename from x/cadance/genesis.go rename to x/cadence/genesis.go index 716f5525..a7efef29 100644 --- a/x/cadance/genesis.go +++ b/x/cadence/genesis.go @@ -1,4 +1,4 @@ -package cadance +package cadence import ( "encoding/json" @@ -6,8 +6,8 @@ import ( "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/bitsongofficial/go-bitsong/x/cadance/keeper" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/keeper" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) // NewGenesisState - Create a new genesis state diff --git a/x/cadance/genesis_test.go b/x/cadence/genesis_test.go similarity index 61% rename from x/cadance/genesis_test.go rename to x/cadence/genesis_test.go index bbc3b256..4ba99b69 100644 --- a/x/cadance/genesis_test.go +++ b/x/cadence/genesis_test.go @@ -1,4 +1,4 @@ -package cadance_test +package cadence_test import ( "fmt" @@ -6,19 +6,19 @@ import ( "github.com/stretchr/testify/suite" - "github.com/bitsongofficial/go-bitsong/x/cadance" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) func TestGenesisTestSuite(t *testing.T) { - suite.Run(t, new(CadanceModuleSuite)) + suite.Run(t, new(CadenceModuleSuite)) } -func (suite *CadanceModuleSuite) SetupTest() { +func (suite *CadenceModuleSuite) SetupTest() { suite.Setup() } -func (suite *CadanceModuleSuite) TestClockInitGenesis() { +func (suite *CadenceModuleSuite) TestClockInitGenesis() { testCases := []struct { name string genesis types.GenesisState @@ -26,7 +26,7 @@ func (suite *CadanceModuleSuite) TestClockInitGenesis() { }{ { "Success - Default Genesis", - *cadance.DefaultGenesisState(), + *cadence.DefaultGenesisState(), true, }, { @@ -55,14 +55,14 @@ func (suite *CadanceModuleSuite) TestClockInitGenesis() { if tc.success { suite.Require().NotPanics(func() { - cadance.InitGenesis(suite.Ctx, suite.App.AppKeepers.CadanceKeeper, tc.genesis) + cadence.InitGenesis(suite.Ctx, suite.App.CadenceKeeper, tc.genesis) }) - params := suite.App.AppKeepers.CadanceKeeper.GetParams(suite.Ctx) + params := suite.App.CadenceKeeper.GetParams(suite.Ctx) suite.Require().Equal(tc.genesis.Params, params) } else { suite.Require().Panics(func() { - cadance.InitGenesis(suite.Ctx, suite.App.AppKeepers.CadanceKeeper, tc.genesis) + cadence.InitGenesis(suite.Ctx, suite.App.CadenceKeeper, tc.genesis) }) } }) diff --git a/x/cadance/keeper/cadance.go b/x/cadence/keeper/cadance.go similarity index 74% rename from x/cadance/keeper/cadance.go rename to x/cadence/keeper/cadance.go index c132f704..5e43bcd0 100644 --- a/x/cadance/keeper/cadance.go +++ b/x/cadence/keeper/cadance.go @@ -5,23 +5,23 @@ import ( "cosmossdk.io/store/prefix" storetypes "cosmossdk.io/store/types" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" ) -// Store Keys for cadance contract s (both jailed and unjailed) +// Store Keys for cadence contract s (both jailed and unjailed) var ( StoreKeyContracts = []byte("contracts") ) -// Get the store for the cadance contract s. +// Get the store for the cadence contract s. func (k Keeper) getStore(ctx sdk.Context) prefix.Store { return prefix.NewStore(ctx.KVStore(k.storeKey), StoreKeyContracts) } -// Set a cadance contract address in the KV store. -func (k Keeper) SetCadanceContract(ctx sdk.Context, contract types.CadanceContract) error { +// Set a cadence contract address in the KV store. +func (k Keeper) SetCadenceContract(ctx sdk.Context, contract types.CadenceContract) error { // Get store, marshal content store := k.getStore(ctx) bz, err := k.cdc.Marshal(&contract) @@ -34,16 +34,16 @@ func (k Keeper) SetCadanceContract(ctx sdk.Context, contract types.CadanceContra return nil } -// Check if a cadance contract address is in the KV store. -func (k Keeper) IsCadanceContract(ctx sdk.Context, contractAddress string) bool { +// Check if a cadence contract address is in the KV store. +func (k Keeper) IsCadenceContract(ctx sdk.Context, contractAddress string) bool { store := k.getStore(ctx) return store.Has([]byte(contractAddress)) } -// Get a cadance contract address from the KV store. -func (k Keeper) GetCadanceContract(ctx sdk.Context, contractAddress string) (*types.CadanceContract, error) { +// Get a cadence contract address from the KV store. +func (k Keeper) GetCadenceContract(ctx sdk.Context, contractAddress string) (*types.CadenceContract, error) { // Check if the contract is registered - if !k.IsCadanceContract(ctx, contractAddress) { + if !k.IsCadenceContract(ctx, contractAddress) { return nil, types.ErrContractNotRegistered } @@ -52,7 +52,7 @@ func (k Keeper) GetCadanceContract(ctx sdk.Context, contractAddress string) (*ty bz := store.Get([]byte(contractAddress)) // Unmarshal the contract - var contract types.CadanceContract + var contract types.CadenceContract err := k.cdc.Unmarshal(bz, &contract) if err != nil { return nil, fmt.Errorf("failed to unmarshal contract %s: %w", contractAddress, err) @@ -62,8 +62,8 @@ func (k Keeper) GetCadanceContract(ctx sdk.Context, contractAddress string) (*ty return &contract, nil } -// Get all cadance contract addresses from the KV store. -func (k Keeper) GetAllContracts(ctx sdk.Context) ([]types.CadanceContract, error) { +// Get all cadence contract addresses from the KV store. +func (k Keeper) GetAllContracts(ctx sdk.Context) ([]types.CadenceContract, error) { // Get the KV store store := k.getStore(ctx) @@ -72,11 +72,11 @@ func (k Keeper) GetAllContracts(ctx sdk.Context) ([]types.CadanceContract, error defer iterator.Close() // Iterate over all contracts - contracts := []types.CadanceContract{} + contracts := []types.CadenceContract{} for ; iterator.Valid(); iterator.Next() { // Unmarshal iterator - var contract types.CadanceContract + var contract types.CadenceContract err := k.cdc.Unmarshal(iterator.Value(), &contract) if err != nil { return nil, err @@ -90,7 +90,7 @@ func (k Keeper) GetAllContracts(ctx sdk.Context) ([]types.CadanceContract, error } // Get all registered fee pay contracts -func (k Keeper) GetPaginatedContracts(ctx sdk.Context, pag *query.PageRequest) (*types.QueryCadanceContractsResponse, error) { +func (k Keeper) GetPaginatedContracts(ctx sdk.Context, pag *query.PageRequest) (*types.QueryCadenceContractsResponse, error) { store := k.getStore(ctx) // Filter and paginate all contracts @@ -98,11 +98,11 @@ func (k Keeper) GetPaginatedContracts(ctx sdk.Context, pag *query.PageRequest) ( k.cdc, store, pag, - func(_ []byte, value *types.CadanceContract) (*types.CadanceContract, error) { + func(_ []byte, value *types.CadenceContract) (*types.CadenceContract, error) { return value, nil }, - func() *types.CadanceContract { - return &types.CadanceContract{} + func() *types.CadenceContract { + return &types.CadenceContract{} }, ) if err != nil { @@ -110,19 +110,19 @@ func (k Keeper) GetPaginatedContracts(ctx sdk.Context, pag *query.PageRequest) ( } // Dereference pointer array of contracts - var contracts []types.CadanceContract + var contracts []types.CadenceContract for _, contract := range results { contracts = append(contracts, *contract) } // Return paginated contracts - return &types.QueryCadanceContractsResponse{ - CadanceContracts: contracts, + return &types.QueryCadenceContractsResponse{ + CadenceContracts: contracts, Pagination: pageRes, }, nil } -// Remove a cadance contract address from the KV store. +// Remove a cadence contract address from the KV store. func (k Keeper) RemoveContract(ctx sdk.Context, contractAddress string) { store := k.getStore(ctx) key := []byte(contractAddress) @@ -132,10 +132,10 @@ func (k Keeper) RemoveContract(ctx sdk.Context, contractAddress string) { } } -// Register a cadance contract address in the KV store. +// Register a cadence contract address in the KV store. func (k Keeper) RegisterContract(ctx sdk.Context, senderAddress string, contractAddress string) error { // Check if the contract is already registered - if k.IsCadanceContract(ctx, contractAddress) { + if k.IsCadenceContract(ctx, contractAddress) { return types.ErrContractAlreadyRegistered } @@ -145,16 +145,16 @@ func (k Keeper) RegisterContract(ctx sdk.Context, senderAddress string, contract } // Register contract - return k.SetCadanceContract(ctx, types.CadanceContract{ + return k.SetCadenceContract(ctx, types.CadenceContract{ ContractAddress: contractAddress, IsJailed: false, }) } -// Unregister a cadance contract from either the jailed or unjailed KV store. +// Unregister a cadence contract from either the jailed or unjailed KV store. func (k Keeper) UnregisterContract(ctx sdk.Context, senderAddress string, contractAddress string) error { // Check if the contract is registered in either store - if !k.IsCadanceContract(ctx, contractAddress) { + if !k.IsCadenceContract(ctx, contractAddress) { return types.ErrContractNotRegistered } @@ -168,10 +168,10 @@ func (k Keeper) UnregisterContract(ctx sdk.Context, senderAddress string, contra return nil } -// Set the jail status of a cadance contract in the KV store. +// Set the jail status of a cadence contract in the KV store. func (k Keeper) SetJailStatus(ctx sdk.Context, contractAddress string, isJailed bool) error { // Get the contract - contract, err := k.GetCadanceContract(ctx, contractAddress) + contract, err := k.GetCadenceContract(ctx, contractAddress) if err != nil { return err } @@ -189,10 +189,10 @@ func (k Keeper) SetJailStatus(ctx sdk.Context, contractAddress string, isJailed contract.IsJailed = isJailed // Set the contract - return k.SetCadanceContract(ctx, *contract) + return k.SetCadenceContract(ctx, *contract) } -// Set the jail status of a cadance contract by the sender address. +// Set the jail status of a cadence contract by the sender address. func (k Keeper) SetJailStatusBySender(ctx sdk.Context, senderAddress string, contractAddress string, jailStatus bool) error { // Ensure the sender is the contract admin or creator if ok, err := k.IsContractManager(ctx, senderAddress, contractAddress); !ok { diff --git a/x/cadance/keeper/keeper.go b/x/cadence/keeper/keeper.go similarity index 82% rename from x/cadance/keeper/keeper.go rename to x/cadence/keeper/keeper.go index cd8723b1..3605a07d 100644 --- a/x/cadance/keeper/keeper.go +++ b/x/cadence/keeper/keeper.go @@ -11,10 +11,10 @@ import ( "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) -// Keeper of the cadance store +// Keeper of the cadence store type Keeper struct { storeKey storetypes.StoreKey cdc codec.BinaryCodec @@ -46,12 +46,12 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("go-bitsong/%s", types.ModuleName)) } -// GetAuthority returns the x/cadance module's authority. +// GetAuthority returns the x/cadence module's authority. func (k Keeper) GetAuthority() string { return k.authority } -// SetParams sets the x/cadance module parameters. +// SetParams sets the x/cadence module parameters. func (k Keeper) SetParams(ctx sdk.Context, p types.Params) error { if err := p.Validate(); err != nil { return err @@ -64,7 +64,7 @@ func (k Keeper) SetParams(ctx sdk.Context, p types.Params) error { return nil } -// GetParams returns the current x/cadance module parameters. +// GetParams returns the current x/cadence module parameters. func (k Keeper) GetParams(ctx sdk.Context) (p types.Params) { store := ctx.KVStore(k.storeKey) bz := store.Get(types.ParamsKey) @@ -81,12 +81,12 @@ func (k Keeper) GetContractKeeper() *wasmkeeper.PermissionedKeeper { return k.contractKeeper } -// GetCdc returns the x/cadance module's codec. +// GetCdc returns the x/cadence module's codec. func (k Keeper) GetCdc() codec.BinaryCodec { return k.cdc } -// GetStore returns the x/cadance module's store key. +// GetStore returns the x/cadence module's store key. func (k Keeper) GetStore() storetypes.StoreKey { return k.storeKey } diff --git a/x/cadance/keeper/keeper_test.go b/x/cadence/keeper/keeper_test.go similarity index 69% rename from x/cadance/keeper/keeper_test.go rename to x/cadence/keeper/keeper_test.go index e32e7b6a..b9469d48 100644 --- a/x/cadance/keeper/keeper_test.go +++ b/x/cadence/keeper/keeper_test.go @@ -11,8 +11,8 @@ import ( wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" apptesting "github.com/bitsongofficial/go-bitsong/app/testing" - "github.com/bitsongofficial/go-bitsong/x/cadance/keeper" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/keeper" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" @@ -23,7 +23,7 @@ type IntegrationTestSuite struct { apptesting.KeeperTestHelper bk minttypes.BankKeeper wk wasmkeeper.Keeper - cadanceMsgServer types.MsgServer + cadenceMsgServer types.MsgServer queryClient types.QueryClient } @@ -33,13 +33,13 @@ func TestIntegrationTestSuite(t *testing.T) { func (s *IntegrationTestSuite) SetupTest() { s.Setup() - s.bk = s.App.AppKeepers.BankKeeper - s.wk = s.App.AppKeepers.WasmKeeper + s.bk = s.App.BankKeeper + s.wk = s.App.WasmKeeper // encCfg := app.MakeEncodingConfig() // types.RegisterInterfaces(encCfg.InterfaceRegistry) s.queryClient = types.NewQueryClient(s.QueryHelper) - s.cadanceMsgServer = keeper.NewMsgServerImpl(s.App.AppKeepers.CadanceKeeper) + s.cadenceMsgServer = keeper.NewMsgServerImpl(s.App.CadenceKeeper) } func (s *IntegrationTestSuite) FundAccount(ctx sdk.Context, addr sdk.AccAddress, amounts sdk.Coins) error { @@ -57,9 +57,9 @@ var wasmContract []byte func (s *IntegrationTestSuite) StoreCode() { _, _, sender := testdata.KeyTestPubAddr() - params := s.App.AppKeepers.WasmKeeper.GetParams(s.Ctx) + params := s.App.WasmKeeper.GetParams(s.Ctx) params.InstantiateDefaultPermission = wasmtypes.AccessTypeEverybody - err := s.App.AppKeepers.WasmKeeper.SetParams(s.Ctx, params) + err := s.App.WasmKeeper.SetParams(s.Ctx, params) s.Require().NoError(err) msg := wasmtypes.MsgStoreCodeFixture(func(m *wasmtypes.MsgStoreCode) { m.WASMByteCode = wasmContract @@ -73,7 +73,7 @@ func (s *IntegrationTestSuite) StoreCode() { expHash := sha256.Sum256(wasmContract) s.Require().Equal(expHash[:], result.Checksum) // and - info := s.App.AppKeepers.WasmKeeper.GetCodeInfo(s.Ctx, 1) + info := s.App.WasmKeeper.GetCodeInfo(s.Ctx, 1) s.Require().NotNil(info) s.Require().Equal(expHash[:], info.CodeHash) s.Require().Equal(sender.String(), info.Creator) @@ -97,7 +97,7 @@ func (s *IntegrationTestSuite) InstantiateContract(sender string, admin string) s.Require().NoError(err) var result wasmtypes.MsgInstantiateContractResponse s.Require().NoError(s.App.AppCodec().Unmarshal(resp.Data, &result)) - contractInfo := s.App.AppKeepers.WasmKeeper.GetContractInfo(s.Ctx, sdk.MustAccAddressFromBech32(result.Address)) + contractInfo := s.App.WasmKeeper.GetContractInfo(s.Ctx, sdk.MustAccAddressFromBech32(result.Address)) s.Require().Equal(contractInfo.CodeID, uint64(1)) s.Require().Equal(contractInfo.Admin, admin) s.Require().Equal(contractInfo.Creator, sender) @@ -105,26 +105,26 @@ func (s *IntegrationTestSuite) InstantiateContract(sender string, admin string) return result.Address } -// Helper method for quickly registering a cadance contract -func (s *IntegrationTestSuite) RegisterCadanceContract(senderAddress string, contractAddress string) { - err := s.App.AppKeepers.CadanceKeeper.RegisterContract(s.Ctx, senderAddress, contractAddress) +// Helper method for quickly registering a cadence contract +func (s *IntegrationTestSuite) RegisterCadenceContract(senderAddress string, contractAddress string) { + err := s.App.CadenceKeeper.RegisterContract(s.Ctx, senderAddress, contractAddress) s.Require().NoError(err) } -// Helper method for quickly unregistering a cadance contract -func (s *IntegrationTestSuite) UnregisterCadanceContract(senderAddress string, contractAddress string) { - err := s.App.AppKeepers.CadanceKeeper.UnregisterContract(s.Ctx, senderAddress, contractAddress) +// Helper method for quickly unregistering a cadence contract +func (s *IntegrationTestSuite) UnregisterCadenceContract(senderAddress string, contractAddress string) { + err := s.App.CadenceKeeper.UnregisterContract(s.Ctx, senderAddress, contractAddress) s.Require().NoError(err) } -// Helper method for quickly jailing a cadance contract -func (s *IntegrationTestSuite) JailCadanceContract(contractAddress string) { - err := s.App.AppKeepers.CadanceKeeper.SetJailStatus(s.Ctx, contractAddress, true) +// Helper method for quickly jailing a cadence contract +func (s *IntegrationTestSuite) JailCadenceContract(contractAddress string) { + err := s.App.CadenceKeeper.SetJailStatus(s.Ctx, contractAddress, true) s.Require().NoError(err) } -// Helper method for quickly unjailing a cadance contract -func (s *IntegrationTestSuite) UnjailCadanceContract(senderAddress string, contractAddress string) { - err := s.App.AppKeepers.CadanceKeeper.SetJailStatusBySender(s.Ctx, senderAddress, contractAddress, false) +// Helper method for quickly unjailing a cadence contract +func (s *IntegrationTestSuite) UnjailCadenceContract(senderAddress string, contractAddress string) { + err := s.App.CadenceKeeper.SetJailStatusBySender(s.Ctx, senderAddress, contractAddress, false) s.Require().NoError(err) } diff --git a/x/cadance/keeper/msg_server.go b/x/cadence/keeper/msg_server.go similarity index 59% rename from x/cadance/keeper/msg_server.go rename to x/cadence/keeper/msg_server.go index 862a01c8..bf19818f 100644 --- a/x/cadance/keeper/msg_server.go +++ b/x/cadence/keeper/msg_server.go @@ -8,7 +8,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) var _ types.MsgServer = &msgServer{} @@ -18,15 +18,15 @@ type msgServer struct { Keeper } -// NewMsgServerImpl returns an implementation of the x/cadance MsgServer interface. +// NewMsgServerImpl returns an implementation of the x/cadence MsgServer interface. func NewMsgServerImpl(k Keeper) types.MsgServer { return &msgServer{ Keeper: k, } } -// RegisterCadanceContract handles incoming transactions to register cadance contract s. -func (k msgServer) RegisterCadanceContract(goCtx context.Context, req *types.MsgRegisterCadanceContract) (*types.MsgRegisterCadanceContractResponse, error) { +// RegisterCadenceContract handles incoming transactions to register cadence contract s. +func (k msgServer) RegisterCadenceContract(goCtx context.Context, req *types.MsgRegisterCadenceContract) (*types.MsgRegisterCadenceContractResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) // Validate request @@ -34,11 +34,11 @@ func (k msgServer) RegisterCadanceContract(goCtx context.Context, req *types.Msg return nil, err } - return &types.MsgRegisterCadanceContractResponse{}, k.RegisterContract(ctx, req.SenderAddress, req.ContractAddress) + return &types.MsgRegisterCadenceContractResponse{}, k.RegisterContract(ctx, req.SenderAddress, req.ContractAddress) } -// UnregisterCadanceContract handles incoming transactions to unregister cadance contract s. -func (k msgServer) UnregisterCadanceContract(goCtx context.Context, req *types.MsgUnregisterCadanceContract) (*types.MsgUnregisterCadanceContractResponse, error) { +// UnregisterCadenceContract handles incoming transactions to unregister cadence contract s. +func (k msgServer) UnregisterCadenceContract(goCtx context.Context, req *types.MsgUnregisterCadenceContract) (*types.MsgUnregisterCadenceContractResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) // Validate request @@ -46,11 +46,11 @@ func (k msgServer) UnregisterCadanceContract(goCtx context.Context, req *types.M return nil, err } - return &types.MsgUnregisterCadanceContractResponse{}, k.UnregisterContract(ctx, req.SenderAddress, req.ContractAddress) + return &types.MsgUnregisterCadenceContractResponse{}, k.UnregisterContract(ctx, req.SenderAddress, req.ContractAddress) } -// UnjailCadanceContract handles incoming transactions to unjail cadance contract s. -func (k msgServer) UnjailCadanceContract(goCtx context.Context, req *types.MsgUnjailCadanceContract) (*types.MsgUnjailCadanceContractResponse, error) { +// UnjailCadenceContract handles incoming transactions to unjail cadence contract s. +func (k msgServer) UnjailCadenceContract(goCtx context.Context, req *types.MsgUnjailCadenceContract) (*types.MsgUnjailCadenceContractResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) // Validate request @@ -58,7 +58,7 @@ func (k msgServer) UnjailCadanceContract(goCtx context.Context, req *types.MsgUn return nil, err } - return &types.MsgUnjailCadanceContractResponse{}, k.SetJailStatusBySender(ctx, req.SenderAddress, req.ContractAddress, false) + return &types.MsgUnjailCadenceContractResponse{}, k.SetJailStatusBySender(ctx, req.SenderAddress, req.ContractAddress, false) } func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { diff --git a/x/cadance/keeper/msg_server_test.go b/x/cadence/keeper/msg_server_test.go similarity index 71% rename from x/cadance/keeper/msg_server_test.go rename to x/cadence/keeper/msg_server_test.go index 8091d347..caf0f3c7 100644 --- a/x/cadance/keeper/msg_server_test.go +++ b/x/cadence/keeper/msg_server_test.go @@ -7,11 +7,11 @@ import ( "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) -// Test register cadance contract . -func (s *IntegrationTestSuite) TestRegisterCadanceContract() { +// Test register cadence contract . +func (s *IntegrationTestSuite) TestRegisterCadenceContract() { _, _, addr := testdata.KeyTestPubAddr() _, _, addr2 := testdata.KeyTestPubAddr() _ = s.FundAccount(s.Ctx, addr, sdk.NewCoins(sdk.NewCoin("stake", math.NewInt(1_000_000)))) @@ -76,18 +76,18 @@ func (s *IntegrationTestSuite) TestRegisterCadanceContract() { s.Run(tc.desc, func() { // Set params params := types.DefaultParams() - err := s.App.AppKeepers.CadanceKeeper.SetParams(s.Ctx, params) + err := s.App.CadenceKeeper.SetParams(s.Ctx, params) s.Require().NoError(err) // Jail contract if needed if tc.isJailed { - s.RegisterCadanceContract(tc.sender, tc.contract) - err := s.App.AppKeepers.CadanceKeeper.SetJailStatus(s.Ctx, tc.contract, true) + s.RegisterCadenceContract(tc.sender, tc.contract) + err := s.App.CadenceKeeper.SetJailStatus(s.Ctx, tc.contract, true) s.Require().NoError(err) } // Try to register contract - res, err := s.cadanceMsgServer.RegisterCadanceContract(s.Ctx, &types.MsgRegisterCadanceContract{ + res, err := s.cadenceMsgServer.RegisterCadenceContract(s.Ctx, &types.MsgRegisterCadenceContract{ SenderAddress: tc.sender, ContractAddress: tc.contract, }) @@ -96,18 +96,18 @@ func (s *IntegrationTestSuite) TestRegisterCadanceContract() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().Equal(res, &types.MsgRegisterCadanceContractResponse{}) + s.Require().Equal(res, &types.MsgRegisterCadenceContractResponse{}) } // Ensure contract is unregistered - s.App.AppKeepers.CadanceKeeper.RemoveContract(s.Ctx, contractAddress) - s.App.AppKeepers.CadanceKeeper.RemoveContract(s.Ctx, contractAddressWithAdmin) + s.App.CadenceKeeper.RemoveContract(s.Ctx, contractAddress) + s.App.CadenceKeeper.RemoveContract(s.Ctx, contractAddressWithAdmin) }) } } -// Test standard unregistration of cadance contract s. -func (s *IntegrationTestSuite) TestUnregisterCadanceContract() { +// Test standard unregistration of cadence contract s. +func (s *IntegrationTestSuite) TestUnregisterCadenceContract() { _, _, addr := testdata.KeyTestPubAddr() _, _, addr2 := testdata.KeyTestPubAddr() _ = s.FundAccount(s.Ctx, addr, sdk.NewCoins(sdk.NewCoin("stake", math.NewInt(1_000_000)))) @@ -161,16 +161,16 @@ func (s *IntegrationTestSuite) TestUnregisterCadanceContract() { } { tc := tc s.Run(tc.desc, func() { - s.RegisterCadanceContract(addr.String(), contractAddress) - s.RegisterCadanceContract(addr2.String(), contractAddressWithAdmin) + s.RegisterCadenceContract(addr.String(), contractAddress) + s.RegisterCadenceContract(addr2.String(), contractAddressWithAdmin) // Set params params := types.DefaultParams() - err := s.App.AppKeepers.CadanceKeeper.SetParams(s.Ctx, params) + err := s.App.CadenceKeeper.SetParams(s.Ctx, params) s.Require().NoError(err) // Try to register all contracts - res, err := s.cadanceMsgServer.UnregisterCadanceContract(s.Ctx, &types.MsgUnregisterCadanceContract{ + res, err := s.cadenceMsgServer.UnregisterCadenceContract(s.Ctx, &types.MsgUnregisterCadenceContract{ SenderAddress: tc.sender, ContractAddress: tc.contract, }) @@ -179,17 +179,17 @@ func (s *IntegrationTestSuite) TestUnregisterCadanceContract() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().Equal(res, &types.MsgUnregisterCadanceContractResponse{}) + s.Require().Equal(res, &types.MsgUnregisterCadenceContractResponse{}) } // Ensure contract is unregistered - s.App.AppKeepers.CadanceKeeper.RemoveContract(s.Ctx, contractAddress) - s.App.AppKeepers.CadanceKeeper.RemoveContract(s.Ctx, contractAddressWithAdmin) + s.App.CadenceKeeper.RemoveContract(s.Ctx, contractAddress) + s.App.CadenceKeeper.RemoveContract(s.Ctx, contractAddressWithAdmin) }) } } -// Test duplicate register/unregister cadance contract s. +// Test duplicate register/unregister cadence contract s. func (s *IntegrationTestSuite) TestDuplicateRegistrationChecks() { _, _, addr := testdata.KeyTestPubAddr() _ = s.FundAccount(s.Ctx, addr, sdk.NewCoins(sdk.NewCoin("stake", math.NewInt(1_000_000)))) @@ -198,34 +198,34 @@ func (s *IntegrationTestSuite) TestDuplicateRegistrationChecks() { contractAddress := s.InstantiateContract(addr.String(), "") // Test double register, first succeed, second fail - _, err := s.cadanceMsgServer.RegisterCadanceContract(s.Ctx, &types.MsgRegisterCadanceContract{ + _, err := s.cadenceMsgServer.RegisterCadenceContract(s.Ctx, &types.MsgRegisterCadenceContract{ SenderAddress: addr.String(), ContractAddress: contractAddress, }) s.Require().NoError(err) - _, err = s.cadanceMsgServer.RegisterCadanceContract(s.Ctx, &types.MsgRegisterCadanceContract{ + _, err = s.cadenceMsgServer.RegisterCadenceContract(s.Ctx, &types.MsgRegisterCadenceContract{ SenderAddress: addr.String(), ContractAddress: contractAddress, }) s.Require().Error(err) // Test double unregister, first succeed, second fail - _, err = s.cadanceMsgServer.UnregisterCadanceContract(s.Ctx, &types.MsgUnregisterCadanceContract{ + _, err = s.cadenceMsgServer.UnregisterCadenceContract(s.Ctx, &types.MsgUnregisterCadenceContract{ SenderAddress: addr.String(), ContractAddress: contractAddress, }) s.Require().NoError(err) - _, err = s.cadanceMsgServer.UnregisterCadanceContract(s.Ctx, &types.MsgUnregisterCadanceContract{ + _, err = s.cadenceMsgServer.UnregisterCadenceContract(s.Ctx, &types.MsgUnregisterCadenceContract{ SenderAddress: addr.String(), ContractAddress: contractAddress, }) s.Require().Error(err) } -// Test unjailing cadance contract s. -func (s *IntegrationTestSuite) TestUnjailCadanceContract() { +// Test unjailing cadence contract s. +func (s *IntegrationTestSuite) TestUnjailCadenceContract() { _, _, addr := testdata.KeyTestPubAddr() _, _, addr2 := testdata.KeyTestPubAddr() _ = s.FundAccount(s.Ctx, addr, sdk.NewCoins(sdk.NewCoin("stake", math.NewInt(1_000_000)))) @@ -287,24 +287,24 @@ func (s *IntegrationTestSuite) TestUnjailCadanceContract() { } { tc := tc s.Run(tc.desc, func() { - s.RegisterCadanceContract(addr.String(), contractAddress) - s.JailCadanceContract(contractAddress) - s.RegisterCadanceContract(addr2.String(), contractAddressWithAdmin) - s.JailCadanceContract(contractAddressWithAdmin) + s.RegisterCadenceContract(addr.String(), contractAddress) + s.JailCadenceContract(contractAddress) + s.RegisterCadenceContract(addr2.String(), contractAddressWithAdmin) + s.JailCadenceContract(contractAddressWithAdmin) // Unjail contract if needed if tc.unjail { - s.UnjailCadanceContract(addr.String(), contractAddress) - s.UnjailCadanceContract(addr2.String(), contractAddressWithAdmin) + s.UnjailCadenceContract(addr.String(), contractAddress) + s.UnjailCadenceContract(addr2.String(), contractAddressWithAdmin) } // Set params params := types.DefaultParams() - err := s.App.AppKeepers.CadanceKeeper.SetParams(s.Ctx, params) + err := s.App.CadenceKeeper.SetParams(s.Ctx, params) s.Require().NoError(err) // Try to register all contracts - res, err := s.cadanceMsgServer.UnjailCadanceContract(s.Ctx, &types.MsgUnjailCadanceContract{ + res, err := s.cadenceMsgServer.UnjailCadenceContract(s.Ctx, &types.MsgUnjailCadenceContract{ SenderAddress: tc.sender, ContractAddress: tc.contract, }) @@ -313,12 +313,12 @@ func (s *IntegrationTestSuite) TestUnjailCadanceContract() { s.Require().Error(err) } else { s.Require().NoError(err) - s.Require().Equal(res, &types.MsgUnjailCadanceContractResponse{}) + s.Require().Equal(res, &types.MsgUnjailCadenceContractResponse{}) } // Ensure contract is unregistered - s.App.AppKeepers.CadanceKeeper.RemoveContract(s.Ctx, contractAddress) - s.App.AppKeepers.CadanceKeeper.RemoveContract(s.Ctx, contractAddressWithAdmin) + s.App.CadenceKeeper.RemoveContract(s.Ctx, contractAddress) + s.App.CadenceKeeper.RemoveContract(s.Ctx, contractAddressWithAdmin) }) } } diff --git a/x/cadance/keeper/querier.go b/x/cadence/keeper/querier.go similarity index 64% rename from x/cadance/keeper/querier.go rename to x/cadence/keeper/querier.go index 2b360fe4..5a1757d6 100644 --- a/x/cadance/keeper/querier.go +++ b/x/cadence/keeper/querier.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) var _ types.QueryServer = &Querier{} @@ -21,8 +21,8 @@ func NewQuerier(k Keeper) Querier { } } -// ContractModules returns contract addresses which are using the cadance -func (q Querier) CadanceContracts(stdCtx context.Context, req *types.QueryCadanceContracts) (*types.QueryCadanceContractsResponse, error) { +// ContractModules returns contract addresses which are using the cadence +func (q Querier) CadenceContracts(stdCtx context.Context, req *types.QueryCadenceContracts) (*types.QueryCadenceContractsResponse, error) { ctx := sdk.UnwrapSDKContext(stdCtx) contracts, err := q.keeper.GetPaginatedContracts(ctx, req.Pagination) @@ -33,8 +33,8 @@ func (q Querier) CadanceContracts(stdCtx context.Context, req *types.QueryCadanc return contracts, nil } -// CadanceContract returns the cadance contract information -func (q Querier) CadanceContract(stdCtx context.Context, req *types.QueryCadanceContract) (*types.QueryCadanceContractResponse, error) { +// CadenceContract returns the cadence contract information +func (q Querier) CadenceContract(stdCtx context.Context, req *types.QueryCadenceContract) (*types.QueryCadenceContractResponse, error) { ctx := sdk.UnwrapSDKContext(stdCtx) // Ensure the contract address is valid @@ -42,17 +42,17 @@ func (q Querier) CadanceContract(stdCtx context.Context, req *types.QueryCadance return nil, sdkerrors.ErrInvalidAddress } - contract, err := q.keeper.GetCadanceContract(ctx, req.ContractAddress) + contract, err := q.keeper.GetCadenceContract(ctx, req.ContractAddress) if err != nil { return nil, err } - return &types.QueryCadanceContractResponse{ - CadanceContract: *contract, + return &types.QueryCadenceContractResponse{ + CadenceContract: *contract, }, nil } -// Params returns the total set of cadance parameters. +// Params returns the total set of cadence parameters. func (q Querier) Params(stdCtx context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { ctx := sdk.UnwrapSDKContext(stdCtx) diff --git a/x/cadance/keeper/querier_test.go b/x/cadence/keeper/querier_test.go similarity index 77% rename from x/cadance/keeper/querier_test.go rename to x/cadence/keeper/querier_test.go index 2503a0fa..b29cea61 100644 --- a/x/cadance/keeper/querier_test.go +++ b/x/cadence/keeper/querier_test.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) // Query Clock Params @@ -34,7 +34,7 @@ func (s *IntegrationTestSuite) TestQueryClockParams() { tc := tc s.Run(tc.desc, func() { // Set params - err := s.App.AppKeepers.CadanceKeeper.SetParams(s.Ctx, tc.params) + err := s.App.CadenceKeeper.SetParams(s.Ctx, tc.params) s.Require().NoError(err) // Query params @@ -49,7 +49,7 @@ func (s *IntegrationTestSuite) TestQueryClockParams() { } // Query Clock Contracts -func (s *IntegrationTestSuite) TestQueryCadanceContracts() { +func (s *IntegrationTestSuite) TestQueryCadenceContracts() { _, _, addr := testdata.KeyTestPubAddr() _ = s.FundAccount(s.Ctx, addr, sdk.NewCoins(sdk.NewCoin("stake", math.NewInt(1_000_000)))) @@ -82,30 +82,30 @@ func (s *IntegrationTestSuite) TestQueryCadanceContracts() { s.Run(tc.desc, func() { // Loop through contracts & register for _, contract := range tc.contracts { - s.RegisterCadanceContract(addr.String(), contract) + s.RegisterCadenceContract(addr.String(), contract) } // Contracts check - resp, err := s.queryClient.CadanceContracts(s.Ctx, &types.QueryCadanceContracts{}) + resp, err := s.queryClient.CadenceContracts(s.Ctx, &types.QueryCadenceContracts{}) // Response check s.Require().NoError(err) s.Require().NotNil(resp) - for _, contract := range resp.CadanceContracts { + for _, contract := range resp.CadenceContracts { s.Require().Contains(tc.contracts, contract.ContractAddress) s.Require().False(contract.IsJailed) } // Remove all contracts for _, contract := range tc.contracts { - s.App.AppKeepers.CadanceKeeper.RemoveContract(s.Ctx, contract) + s.App.CadenceKeeper.RemoveContract(s.Ctx, contract) } }) } } // Query Jailed Clock Contracts -func (s *IntegrationTestSuite) TestQueryJailedCadanceContracts() { +func (s *IntegrationTestSuite) TestQueryJailedCadenceContracts() { _, _, addr := testdata.KeyTestPubAddr() _ = s.FundAccount(s.Ctx, addr, sdk.NewCoins(sdk.NewCoin("stake", math.NewInt(1_000_000)))) @@ -138,31 +138,31 @@ func (s *IntegrationTestSuite) TestQueryJailedCadanceContracts() { s.Run(tc.desc, func() { // Loop through contracts & register for _, contract := range tc.contracts { - s.RegisterCadanceContract(addr.String(), contract) - s.JailCadanceContract(contract) + s.RegisterCadenceContract(addr.String(), contract) + s.JailCadenceContract(contract) } // Contracts check - resp, err := s.queryClient.CadanceContracts(s.Ctx, &types.QueryCadanceContracts{}) + resp, err := s.queryClient.CadenceContracts(s.Ctx, &types.QueryCadenceContracts{}) // Response check s.Require().NoError(err) s.Require().NotNil(resp) - for _, contract := range resp.CadanceContracts { + for _, contract := range resp.CadenceContracts { s.Require().Contains(tc.contracts, contract.ContractAddress) s.Require().True(contract.IsJailed) } // Remove all contracts for _, contract := range tc.contracts { - s.App.AppKeepers.CadanceKeeper.RemoveContract(s.Ctx, contract) + s.App.CadenceKeeper.RemoveContract(s.Ctx, contract) } }) } } // Query Clock Contract -func (s *IntegrationTestSuite) TestQueryCadanceContract() { +func (s *IntegrationTestSuite) TestQueryCadenceContract() { _, _, addr := testdata.KeyTestPubAddr() _ = s.FundAccount(s.Ctx, addr, sdk.NewCoins(sdk.NewCoin("stake", math.NewInt(1_000_000)))) _, _, invalidAddr := testdata.KeyTestPubAddr() @@ -170,13 +170,13 @@ func (s *IntegrationTestSuite) TestQueryCadanceContract() { s.StoreCode() unjailedContract := s.InstantiateContract(addr.String(), "") - _ = s.App.AppKeepers.CadanceKeeper.SetCadanceContract(s.Ctx, types.CadanceContract{ + _ = s.App.CadenceKeeper.SetCadenceContract(s.Ctx, types.CadenceContract{ ContractAddress: unjailedContract, IsJailed: false, }) jailedContract := s.InstantiateContract(addr.String(), "") - _ = s.App.AppKeepers.CadanceKeeper.SetCadanceContract(s.Ctx, types.CadanceContract{ + _ = s.App.CadenceKeeper.SetCadenceContract(s.Ctx, types.CadenceContract{ ContractAddress: jailedContract, IsJailed: true, }) @@ -215,15 +215,15 @@ func (s *IntegrationTestSuite) TestQueryCadanceContract() { tc := tc s.Run(tc.desc, func() { // Query contract - resp, err := s.queryClient.CadanceContract(s.Ctx, &types.QueryCadanceContract{ + resp, err := s.queryClient.CadenceContract(s.Ctx, &types.QueryCadenceContract{ ContractAddress: tc.contract, }) // Validate responses if tc.success { s.Require().NoError(err) - s.Require().Equal(resp.CadanceContract.ContractAddress, tc.contract) - s.Require().Equal(resp.CadanceContract.IsJailed, tc.isJailed) + s.Require().Equal(resp.CadenceContract.ContractAddress, tc.contract) + s.Require().Equal(resp.CadenceContract.IsJailed, tc.isJailed) } else { s.Require().Error(err) } diff --git a/x/cadance/keeper/testdata/clock_example.wasm b/x/cadence/keeper/testdata/clock_example.wasm similarity index 100% rename from x/cadance/keeper/testdata/clock_example.wasm rename to x/cadence/keeper/testdata/clock_example.wasm diff --git a/x/cadance/keeper/testdata/cw_testburn.wasm b/x/cadence/keeper/testdata/cw_testburn.wasm similarity index 100% rename from x/cadance/keeper/testdata/cw_testburn.wasm rename to x/cadence/keeper/testdata/cw_testburn.wasm diff --git a/x/cadance/module.go b/x/cadence/module.go similarity index 93% rename from x/cadance/module.go rename to x/cadence/module.go index a60089f8..0f14082f 100644 --- a/x/cadance/module.go +++ b/x/cadence/module.go @@ -1,4 +1,4 @@ -package cadance +package cadence import ( "context" @@ -18,15 +18,15 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/bitsongofficial/go-bitsong/x/cadance/client/cli" - "github.com/bitsongofficial/go-bitsong/x/cadance/keeper" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/client/cli" + "github.com/bitsongofficial/go-bitsong/x/cadence/keeper" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) const ( ModuleName = types.ModuleName - // ConsensusVersion defines the current x/cadance module consensus version. + // ConsensusVersion defines the current x/cadence module consensus version. ConsensusVersion = 1 ) diff --git a/x/cadance/module_test.go b/x/cadence/module_test.go similarity index 65% rename from x/cadance/module_test.go rename to x/cadence/module_test.go index d58fd1f6..1bd4641f 100644 --- a/x/cadance/module_test.go +++ b/x/cadence/module_test.go @@ -1,7 +1,7 @@ -package cadance_test +package cadence_test import apptesting "github.com/bitsongofficial/go-bitsong/app/testing" -type CadanceModuleSuite struct { +type CadenceModuleSuite struct { apptesting.KeeperTestHelper } diff --git a/x/cadance/spec/01_concepts.md b/x/cadence/spec/01_concepts.md similarity index 93% rename from x/cadance/spec/01_concepts.md rename to x/cadence/spec/01_concepts.md index b0dfb15d..9bc18cf6 100644 --- a/x/cadance/spec/01_concepts.md +++ b/x/cadence/spec/01_concepts.md @@ -10,7 +10,7 @@ The Clock module allows registered contracts to be executed at the end of every Register a contract with x/Clock by executing the following transaction: ```bash -bsd tx cadance register [contract_address] +bsd tx cadence register [contract_address] ``` > Note: the sender of this transaction must be the contract admin, if exists, or else the contract creator. @@ -22,7 +22,7 @@ The `contract_address` is the bech32 address of the contract to be executed at t A contract can be unjailed by executing the following transaction: ```bash -btsgd tx cadance unjail [contract_address] +btsgd tx cadence unjail [contract_address] ``` > Note: the sender of this transaction must be the contract admin, if exists, or else the contract creator. @@ -34,7 +34,7 @@ The `contract_address` is the bech32 address of the contract to be unjailed. Unj A contract can be unregistered by executing the following transaction: ```bash -btsgd tx cadance unregister [contract_address] +btsgd tx cadence unregister [contract_address] ``` > Note: the sender of this transaction must be the contract admin, if exists, or else the contract creator. diff --git a/x/cadance/spec/02_state.md b/x/cadence/spec/02_state.md similarity index 74% rename from x/cadance/spec/02_state.md rename to x/cadence/spec/02_state.md index 1d620452..9f41c013 100644 --- a/x/cadance/spec/02_state.md +++ b/x/cadence/spec/02_state.md @@ -2,12 +2,12 @@ ## State Objects -The `x/cadance` module only manages the following object in state: CadanceContract. This object is used to store the address of the contract and its jail status. The jail status is used to determine if the contract should be executed at the end of every block. If the contract is jailed, it will not be executed. +The `x/cadence` module only manages the following object in state: CadenceContract. This object is used to store the address of the contract and its jail status. The jail status is used to determine if the contract should be executed at the end of every block. If the contract is jailed, it will not be executed. ```go // This object is used to store the contract address and the // jail status of the contract. -message CadanceContract { +message CadenceContract { // The address of the contract. string contract_address = 1; // The jail status of the contract. @@ -17,7 +17,7 @@ message CadanceContract { ## Genesis & Params -The `x/cadance` module's `GenesisState` defines the state necessary for initializing the chain from a previously exported height. It simply contains the gas limit parameter which is used to determine the maximum amount of gas that can be used by a contract. This value can be modified with a governance proposal. +The `x/cadence` module's `GenesisState` defines the state necessary for initializing the chain from a previously exported height. It simply contains the gas limit parameter which is used to determine the maximum amount of gas that can be used by a contract. This value can be modified with a governance proposal. ```go // GenesisState - initial state of module @@ -43,7 +43,7 @@ message Params { The following state transitions are possible: -- Register a contract creates a new CadanceContract object in state. -- Jailing a contract updates the is_jailed field of a CadanceContract object in state. -- Unjailing a contract updates the is_jailed field of a CadanceContract object in state. -- Unregister a contract deletes a CadanceContract object from state. \ No newline at end of file +- Register a contract creates a new CadenceContract object in state. +- Jailing a contract updates the is_jailed field of a CadenceContract object in state. +- Unjailing a contract updates the is_jailed field of a CadenceContract object in state. +- Unregister a contract deletes a CadenceContract object from state. \ No newline at end of file diff --git a/x/cadance/spec/03_integration.md b/x/cadence/spec/03_integration.md similarity index 86% rename from x/cadance/spec/03_integration.md rename to x/cadence/spec/03_integration.md index 73df543a..00e5fbde 100644 --- a/x/cadance/spec/03_integration.md +++ b/x/cadence/spec/03_integration.md @@ -1,8 +1,8 @@ # CosmWasm Integration -This `x/cadance` module does not require any custom bindings. Rather, you must add a Sudo message to your contract. If your contract does not implement this Sudo message, it will be jailed. Please review the following sections below for more information. +This `x/cadence` module does not require any custom bindings. Rather, you must add a Sudo message to your contract. If your contract does not implement this Sudo message, it will be jailed. Please review the following sections below for more information. -> Note: you can find a basic [cw-cadance contract here](https://github.com/Reecepbcups/cw-clock-example). +> Note: you can find a basic [cw-cadence contract here](https://github.com/Reecepbcups/cw-clock-example). ## Implementation @@ -12,14 +12,14 @@ To satisfy the module's requirements, add the following message and entry point // msg.rs #[cw_serde] pub enum SudoMsg { - CadanceEndBlock { }, + CadenceEndBlock { }, } // contract.rs #[cfg_attr(not(feature = "library"), entry_point)] pub fn sudo(deps: DepsMut, _env: Env, msg: SudoMsg) -> Result { match msg { - SudoMsg::CadanceEndBlock { } => { + SudoMsg::CadenceEndBlock { } => { // TODO: PERFORM LOGIC HERE @@ -29,7 +29,7 @@ pub fn sudo(deps: DepsMut, _env: Env, msg: SudoMsg) -> Result Result { match msg { - SudoMsg::CadanceEndBlock { } => { + SudoMsg::CadenceEndBlock { } => { let mut config = CONFIG.load(deps.storage)?; config.val += 1; CONFIG.save(deps.storage, &config)?; @@ -63,14 +63,14 @@ To perform an action occasionally rather than every block, use the `env` variabl // msg.rs #[cw_serde] pub enum SudoMsg { - CadanceEndBlock { }, + CadenceEndBlock { }, } // contract.rs #[cfg_attr(not(feature = "library"), entry_point)] pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { match msg { - SudoMsg::CadanceEndBlock { } => { + SudoMsg::CadenceEndBlock { } => { // If the block is not divisible by ten, do nothing. if env.block.height % 10 != 0 { return Ok(Response::new()); diff --git a/x/cadance/spec/README.md b/x/cadence/spec/README.md similarity index 78% rename from x/cadance/spec/README.md rename to x/cadence/spec/README.md index c61ac16e..ba07d102 100644 --- a/x/cadance/spec/README.md +++ b/x/cadence/spec/README.md @@ -1,10 +1,10 @@ -# `cadance` +# `cadence` ## Abstract -This document specifies the internal `x/cadance` module of Bitsong Network. This is a fork of the `x/clock` module from Juno. +This document specifies the internal `x/cadence` module of Bitsong Network. This is a fork of the `x/clock` module from Juno. -The `x/cadance` module allows specific contracts to be executed at the end of every block. This allows the smart contract to perform actions that may need to happen every block or at set block intervals. +The `x/cadence` module allows specific contracts to be executed at the end of every block. This allows the smart contract to perform actions that may need to happen every block or at set block intervals. By using this module, your application can remove the headache of external whitelisted bots and instead depend on the chain itself for constant executions. diff --git a/x/cadance/types/cadance.pb.go b/x/cadence/types/cadence.pb.go similarity index 69% rename from x/cadance/types/cadance.pb.go rename to x/cadence/types/cadence.pb.go index 0ed17ee0..09d2cc4e 100644 --- a/x/cadance/types/cadance.pb.go +++ b/x/cadence/types/cadence.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: bitsong/cadance/v1/cadance.proto +// source: bitsong/cadence/v1/cadence.proto package types @@ -24,25 +24,25 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // This object is used to store the contract address and the // jail status of the contract. -type CadanceContract struct { +type CadenceContract struct { // The address of the contract. ContractAddress string `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` // The jail status of the contract. IsJailed bool `protobuf:"varint,2,opt,name=is_jailed,json=isJailed,proto3" json:"is_jailed,omitempty"` } -func (m *CadanceContract) Reset() { *m = CadanceContract{} } -func (m *CadanceContract) String() string { return proto.CompactTextString(m) } -func (*CadanceContract) ProtoMessage() {} -func (*CadanceContract) Descriptor() ([]byte, []int) { - return fileDescriptor_0723a625e9a372d5, []int{0} +func (m *CadenceContract) Reset() { *m = CadenceContract{} } +func (m *CadenceContract) String() string { return proto.CompactTextString(m) } +func (*CadenceContract) ProtoMessage() {} +func (*CadenceContract) Descriptor() ([]byte, []int) { + return fileDescriptor_e537fdddbc42c8c8, []int{0} } -func (m *CadanceContract) XXX_Unmarshal(b []byte) error { +func (m *CadenceContract) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *CadanceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *CadenceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_CadanceContract.Marshal(b, m, deterministic) + return xxx_messageInfo_CadenceContract.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -52,26 +52,26 @@ func (m *CadanceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, err return b[:n], nil } } -func (m *CadanceContract) XXX_Merge(src proto.Message) { - xxx_messageInfo_CadanceContract.Merge(m, src) +func (m *CadenceContract) XXX_Merge(src proto.Message) { + xxx_messageInfo_CadenceContract.Merge(m, src) } -func (m *CadanceContract) XXX_Size() int { +func (m *CadenceContract) XXX_Size() int { return m.Size() } -func (m *CadanceContract) XXX_DiscardUnknown() { - xxx_messageInfo_CadanceContract.DiscardUnknown(m) +func (m *CadenceContract) XXX_DiscardUnknown() { + xxx_messageInfo_CadenceContract.DiscardUnknown(m) } -var xxx_messageInfo_CadanceContract proto.InternalMessageInfo +var xxx_messageInfo_CadenceContract proto.InternalMessageInfo -func (m *CadanceContract) GetContractAddress() string { +func (m *CadenceContract) GetContractAddress() string { if m != nil { return m.ContractAddress } return "" } -func (m *CadanceContract) GetIsJailed() bool { +func (m *CadenceContract) GetIsJailed() bool { if m != nil { return m.IsJailed } @@ -79,15 +79,15 @@ func (m *CadanceContract) GetIsJailed() bool { } func init() { - proto.RegisterType((*CadanceContract)(nil), "bitsong.cadance.v1.CadanceContract") + proto.RegisterType((*CadenceContract)(nil), "bitsong.cadence.v1.CadenceContract") } -func init() { proto.RegisterFile("bitsong/cadance/v1/cadance.proto", fileDescriptor_0723a625e9a372d5) } +func init() { proto.RegisterFile("bitsong/cadence/v1/cadence.proto", fileDescriptor_e537fdddbc42c8c8) } -var fileDescriptor_0723a625e9a372d5 = []byte{ +var fileDescriptor_e537fdddbc42c8c8 = []byte{ // 199 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0xca, 0x2c, 0x29, - 0xce, 0xcf, 0x4b, 0xd7, 0x4f, 0x4e, 0x4c, 0x49, 0xcc, 0x4b, 0x4e, 0xd5, 0x2f, 0x33, 0x84, 0x31, + 0xce, 0xcf, 0x4b, 0xd7, 0x4f, 0x4e, 0x4c, 0x49, 0xcd, 0x4b, 0x4e, 0xd5, 0x2f, 0x33, 0x84, 0x31, 0xf5, 0x0a, 0x8a, 0xf2, 0x4b, 0xf2, 0x85, 0x84, 0xa0, 0x2a, 0xf4, 0x60, 0xc2, 0x65, 0x86, 0x4a, 0x91, 0x5c, 0xfc, 0xce, 0x10, 0x9e, 0x73, 0x7e, 0x5e, 0x49, 0x51, 0x62, 0x72, 0x89, 0x90, 0x26, 0x97, 0x40, 0x32, 0x94, 0x1d, 0x9f, 0x98, 0x92, 0x52, 0x94, 0x5a, 0x5c, 0x2c, 0xc1, 0xa8, 0xc0, @@ -97,11 +97,11 @@ var fileDescriptor_0723a625e9a372d5 = []byte{ 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x9a, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0x75, 0x53, 0x7e, 0x5a, 0x5a, 0x66, 0x72, 0x66, 0x62, 0x8e, 0x7e, 0x7a, 0xbe, 0x2e, 0xcc, 0x23, 0x15, 0x70, 0xaf, 0x94, - 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0xbd, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xf4, - 0xf6, 0xe2, 0x17, 0xea, 0x00, 0x00, 0x00, + 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0xbd, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x81, + 0xfb, 0xa6, 0x92, 0xea, 0x00, 0x00, 0x00, } -func (m *CadanceContract) Marshal() (dAtA []byte, err error) { +func (m *CadenceContract) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -111,12 +111,12 @@ func (m *CadanceContract) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *CadanceContract) MarshalTo(dAtA []byte) (int, error) { +func (m *CadenceContract) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *CadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *CadenceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -134,15 +134,15 @@ func (m *CadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { if len(m.ContractAddress) > 0 { i -= len(m.ContractAddress) copy(dAtA[i:], m.ContractAddress) - i = encodeVarintCadance(dAtA, i, uint64(len(m.ContractAddress))) + i = encodeVarintCadence(dAtA, i, uint64(len(m.ContractAddress))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func encodeVarintCadance(dAtA []byte, offset int, v uint64) int { - offset -= sovCadance(v) +func encodeVarintCadence(dAtA []byte, offset int, v uint64) int { + offset -= sovCadence(v) base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) @@ -152,7 +152,7 @@ func encodeVarintCadance(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *CadanceContract) Size() (n int) { +func (m *CadenceContract) Size() (n int) { if m == nil { return 0 } @@ -160,7 +160,7 @@ func (m *CadanceContract) Size() (n int) { _ = l l = len(m.ContractAddress) if l > 0 { - n += 1 + l + sovCadance(uint64(l)) + n += 1 + l + sovCadence(uint64(l)) } if m.IsJailed { n += 2 @@ -168,13 +168,13 @@ func (m *CadanceContract) Size() (n int) { return n } -func sovCadance(x uint64) (n int) { +func sovCadence(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } -func sozCadance(x uint64) (n int) { - return sovCadance(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +func sozCadence(x uint64) (n int) { + return sovCadence(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *CadanceContract) Unmarshal(dAtA []byte) error { +func (m *CadenceContract) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -182,7 +182,7 @@ func (m *CadanceContract) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowCadance + return ErrIntOverflowCadence } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -197,10 +197,10 @@ func (m *CadanceContract) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CadanceContract: wiretype end group for non-group") + return fmt.Errorf("proto: CadenceContract: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CadanceContract: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CadenceContract: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -210,7 +210,7 @@ func (m *CadanceContract) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowCadance + return ErrIntOverflowCadence } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -224,11 +224,11 @@ func (m *CadanceContract) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthCadance + return ErrInvalidLengthCadence } postIndex := iNdEx + intStringLen if postIndex < 0 { - return ErrInvalidLengthCadance + return ErrInvalidLengthCadence } if postIndex > l { return io.ErrUnexpectedEOF @@ -242,7 +242,7 @@ func (m *CadanceContract) Unmarshal(dAtA []byte) error { var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowCadance + return ErrIntOverflowCadence } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -257,12 +257,12 @@ func (m *CadanceContract) Unmarshal(dAtA []byte) error { m.IsJailed = bool(v != 0) default: iNdEx = preIndex - skippy, err := skipCadance(dAtA[iNdEx:]) + skippy, err := skipCadence(dAtA[iNdEx:]) if err != nil { return err } if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthCadance + return ErrInvalidLengthCadence } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -276,7 +276,7 @@ func (m *CadanceContract) Unmarshal(dAtA []byte) error { } return nil } -func skipCadance(dAtA []byte) (n int, err error) { +func skipCadence(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 depth := 0 @@ -284,7 +284,7 @@ func skipCadance(dAtA []byte) (n int, err error) { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowCadance + return 0, ErrIntOverflowCadence } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -301,7 +301,7 @@ func skipCadance(dAtA []byte) (n int, err error) { case 0: for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowCadance + return 0, ErrIntOverflowCadence } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -317,7 +317,7 @@ func skipCadance(dAtA []byte) (n int, err error) { var length int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowCadance + return 0, ErrIntOverflowCadence } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -330,14 +330,14 @@ func skipCadance(dAtA []byte) (n int, err error) { } } if length < 0 { - return 0, ErrInvalidLengthCadance + return 0, ErrInvalidLengthCadence } iNdEx += length case 3: depth++ case 4: if depth == 0 { - return 0, ErrUnexpectedEndOfGroupCadance + return 0, ErrUnexpectedEndOfGroupCadence } depth-- case 5: @@ -346,7 +346,7 @@ func skipCadance(dAtA []byte) (n int, err error) { return 0, fmt.Errorf("proto: illegal wireType %d", wireType) } if iNdEx < 0 { - return 0, ErrInvalidLengthCadance + return 0, ErrInvalidLengthCadence } if depth == 0 { return iNdEx, nil @@ -356,7 +356,7 @@ func skipCadance(dAtA []byte) (n int, err error) { } var ( - ErrInvalidLengthCadance = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowCadance = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupCadance = fmt.Errorf("proto: unexpected end of group") + ErrInvalidLengthCadence = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowCadence = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupCadence = fmt.Errorf("proto: unexpected end of group") ) diff --git a/x/cadance/types/codec.go b/x/cadence/types/codec.go similarity index 64% rename from x/cadance/types/codec.go rename to x/cadence/types/codec.go index 150cc1b7..e9f782d7 100644 --- a/x/cadance/types/codec.go +++ b/x/cadence/types/codec.go @@ -22,18 +22,18 @@ func init() { // RegisterLegacyAminoCodec registers concrete types on the LegacyAmino codec func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - cdc.RegisterConcrete(&MsgRegisterCadanceContract{}, "cadance/MsgRegisterCadanceContract", nil) - cdc.RegisterConcrete(&MsgUnregisterCadanceContract{}, "cadance/MsgUnregisterCadanceContract", nil) - cdc.RegisterConcrete(&MsgUnjailCadanceContract{}, "cadance/MsgUnjailCadanceContract", nil) - cdc.RegisterConcrete(&MsgUpdateParams{}, "cadance/MsgUpdateParams", nil) + cdc.RegisterConcrete(&MsgRegisterCadenceContract{}, "cadence/MsgRegisterCadenceContract", nil) + cdc.RegisterConcrete(&MsgUnregisterCadenceContract{}, "cadence/MsgUnregisterCadenceContract", nil) + cdc.RegisterConcrete(&MsgUnjailCadenceContract{}, "cadence/MsgUnjailCadenceContract", nil) + cdc.RegisterConcrete(&MsgUpdateParams{}, "cadence/MsgUpdateParams", nil) } func RegisterInterfaces(registry types.InterfaceRegistry) { registry.RegisterImplementations( (*sdk.Msg)(nil), - &MsgRegisterCadanceContract{}, - &MsgUnregisterCadanceContract{}, - &MsgUnjailCadanceContract{}, + &MsgRegisterCadenceContract{}, + &MsgUnregisterCadenceContract{}, + &MsgUnjailCadenceContract{}, &MsgUpdateParams{}, ) diff --git a/x/cadance/types/codec_test.go b/x/cadence/types/codec_test.go similarity index 76% rename from x/cadance/types/codec_test.go rename to x/cadence/types/codec_test.go index 7a167065..b68bf4fc 100644 --- a/x/cadance/types/codec_test.go +++ b/x/cadence/types/codec_test.go @@ -25,9 +25,9 @@ func (suite *CodecTestSuite) TestRegisterInterfaces() { impls := registry.ListImplementations(sdk.MsgInterfaceProtoName) suite.Require().Equal(4, len(impls)) suite.Require().ElementsMatch([]string{ - "/bitsong.cadance.v1.MsgUpdateParams", - "/bitsong.cadance.v1.MsgRegisterCadanceContract", - "/bitsong.cadance.v1.MsgUnregisterCadanceContract", - "/bitsong.cadance.v1.MsgUnjailCadanceContract", + "/bitsong.cadence.v1.MsgUpdateParams", + "/bitsong.cadence.v1.MsgRegisterCadenceContract", + "/bitsong.cadence.v1.MsgUnregisterCadenceContract", + "/bitsong.cadence.v1.MsgUnjailCadenceContract", }, impls) } diff --git a/x/cadance/types/errors.go b/x/cadence/types/errors.go similarity index 100% rename from x/cadance/types/errors.go rename to x/cadence/types/errors.go diff --git a/x/cadance/types/genesis.pb.go b/x/cadence/types/genesis.pb.go similarity index 82% rename from x/cadance/types/genesis.pb.go rename to x/cadence/types/genesis.pb.go index 6342e547..158fb5d9 100644 --- a/x/cadance/types/genesis.pb.go +++ b/x/cadence/types/genesis.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: bitsong/cadance/v1/genesis.proto +// source: bitsong/cadence/v1/genesis.proto package types @@ -34,7 +34,7 @@ func (m *GenesisState) Reset() { *m = GenesisState{} } func (m *GenesisState) String() string { return proto.CompactTextString(m) } func (*GenesisState) ProtoMessage() {} func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_b848209c12354efe, []int{0} + return fileDescriptor_6205108368536aab, []int{0} } func (m *GenesisState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -80,7 +80,7 @@ func (m *Params) Reset() { *m = Params{} } func (m *Params) String() string { return proto.CompactTextString(m) } func (*Params) ProtoMessage() {} func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_b848209c12354efe, []int{1} + return fileDescriptor_6205108368536aab, []int{1} } func (m *Params) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -117,33 +117,33 @@ func (m *Params) GetContractGasLimit() uint64 { } func init() { - proto.RegisterType((*GenesisState)(nil), "bitsong.cadance.v1.GenesisState") - proto.RegisterType((*Params)(nil), "bitsong.cadance.v1.Params") + proto.RegisterType((*GenesisState)(nil), "bitsong.cadence.v1.GenesisState") + proto.RegisterType((*Params)(nil), "bitsong.cadence.v1.Params") } -func init() { proto.RegisterFile("bitsong/cadance/v1/genesis.proto", fileDescriptor_b848209c12354efe) } +func init() { proto.RegisterFile("bitsong/cadence/v1/genesis.proto", fileDescriptor_6205108368536aab) } -var fileDescriptor_b848209c12354efe = []byte{ +var fileDescriptor_6205108368536aab = []byte{ // 307 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xbf, 0x4a, 0x33, 0x41, - 0x14, 0xc5, 0x77, 0xe1, 0x23, 0xc5, 0x7e, 0x16, 0x61, 0xb1, 0x88, 0x41, 0x66, 0xc3, 0x56, 0x16, - 0x3a, 0x43, 0x14, 0x1b, 0xc1, 0x26, 0x4d, 0x9a, 0x80, 0x12, 0x3b, 0x11, 0xc2, 0xdd, 0x71, 0x32, - 0x0e, 0x66, 0xf6, 0x2e, 0x99, 0x9b, 0x60, 0xde, 0xc2, 0xc7, 0x4a, 0x99, 0xd2, 0x6a, 0x91, 0xa4, - 0x4b, 0xe9, 0x13, 0x48, 0xf6, 0x8f, 0x16, 0x6b, 0x37, 0x9c, 0xf3, 0x9b, 0x73, 0x66, 0x4e, 0xd0, - 0x4b, 0x0c, 0x39, 0x4c, 0xb5, 0x90, 0xf0, 0x0c, 0xa9, 0x54, 0x62, 0xd9, 0x17, 0x5a, 0xa5, 0xca, - 0x19, 0xc7, 0xb3, 0x39, 0x12, 0x86, 0x61, 0x45, 0xf0, 0x8a, 0xe0, 0xcb, 0x7e, 0xf7, 0x58, 0xa3, - 0xc6, 0xc2, 0x16, 0x87, 0x53, 0x49, 0x76, 0x99, 0x44, 0x67, 0xd1, 0x89, 0x04, 0xdc, 0x21, 0x27, - 0x51, 0x04, 0x7d, 0x21, 0xd1, 0xa4, 0x95, 0xff, 0x57, 0x57, 0x1d, 0x5a, 0x10, 0xf1, 0x53, 0x70, - 0x34, 0x2c, 0xcb, 0x1f, 0x08, 0x48, 0x85, 0xa3, 0xa0, 0x95, 0xc1, 0x1c, 0xac, 0xeb, 0xf8, 0x3d, - 0xff, 0xec, 0xff, 0x65, 0x97, 0x37, 0x1f, 0xc3, 0xef, 0x0b, 0x62, 0xd0, 0x59, 0xe7, 0x91, 0xb7, - 0xcf, 0xa3, 0x76, 0x79, 0xe3, 0x1c, 0xad, 0x21, 0x65, 0x33, 0x5a, 0x8d, 0xab, 0x8c, 0x78, 0x11, - 0xb4, 0x4a, 0x36, 0x7c, 0x0d, 0x42, 0x89, 0x29, 0xcd, 0x41, 0xd2, 0x44, 0x83, 0x9b, 0xcc, 0x8c, - 0x35, 0x54, 0x74, 0xfc, 0x1b, 0xdc, 0xee, 0xf3, 0xe8, 0xb4, 0xe9, 0xfe, 0xe6, 0x7d, 0xe5, 0xd1, - 0xc9, 0x0a, 0xec, 0xec, 0x26, 0x6e, 0x52, 0xf1, 0xb8, 0x5d, 0x8b, 0x43, 0x70, 0xa3, 0x83, 0x34, - 0xb8, 0x5b, 0x6f, 0x99, 0xbf, 0xd9, 0x32, 0xff, 0x73, 0xcb, 0xfc, 0xf7, 0x1d, 0xf3, 0x36, 0x3b, - 0xe6, 0x7d, 0xec, 0x98, 0xf7, 0x78, 0xad, 0x0d, 0xbd, 0x2c, 0x12, 0x2e, 0xd1, 0x8a, 0xea, 0x63, - 0x38, 0x9d, 0x1a, 0x69, 0x60, 0x26, 0x34, 0x5e, 0xd4, 0x73, 0xbd, 0xfd, 0x0c, 0x46, 0xab, 0x4c, - 0xb9, 0xa4, 0x55, 0x8c, 0x75, 0xf5, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x08, 0xee, 0x11, 0xe4, 0xbc, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0x3f, 0x4f, 0xf3, 0x30, + 0x18, 0xc4, 0x13, 0xe9, 0x55, 0x87, 0xbc, 0x0c, 0x55, 0xc4, 0x50, 0x2a, 0xe4, 0x54, 0x99, 0x18, + 0xc0, 0x56, 0x41, 0x2c, 0x48, 0x2c, 0x5d, 0xba, 0x54, 0x02, 0x95, 0x0d, 0x21, 0x55, 0x8e, 0x71, + 0x8d, 0x45, 0x9d, 0x27, 0xaa, 0x9f, 0x56, 0xe4, 0x5b, 0xf0, 0xb1, 0x3a, 0x76, 0x64, 0x8a, 0x50, + 0xb2, 0x75, 0xe4, 0x13, 0xa0, 0xfc, 0x83, 0x21, 0x6c, 0xd6, 0xdd, 0xcf, 0x77, 0xf6, 0x79, 0xa3, + 0x48, 0xa3, 0x85, 0x58, 0x31, 0xc1, 0x9f, 0x65, 0x2c, 0x24, 0xdb, 0x8e, 0x99, 0x92, 0xb1, 0xb4, + 0xda, 0xd2, 0x64, 0x0d, 0x08, 0xbe, 0xdf, 0x10, 0xb4, 0x21, 0xe8, 0x76, 0x3c, 0x3c, 0x56, 0xa0, + 0xa0, 0xb2, 0x59, 0x79, 0xaa, 0xc9, 0x21, 0x11, 0x60, 0x0d, 0x58, 0x16, 0x71, 0x5b, 0xe6, 0x44, + 0x12, 0xf9, 0x98, 0x09, 0xd0, 0x71, 0xe3, 0xff, 0xd5, 0xd5, 0x86, 0x56, 0x44, 0xf8, 0xe4, 0x1d, + 0x4d, 0xeb, 0xf2, 0x07, 0xe4, 0x28, 0xfd, 0x99, 0xd7, 0x4b, 0xf8, 0x9a, 0x1b, 0x3b, 0x70, 0x47, + 0xee, 0xd9, 0xff, 0xcb, 0x21, 0xed, 0x3e, 0x86, 0xde, 0x57, 0xc4, 0x64, 0xb0, 0xcb, 0x02, 0xe7, + 0x90, 0x05, 0xfd, 0xfa, 0xc6, 0x39, 0x18, 0x8d, 0xd2, 0x24, 0x98, 0xce, 0x9b, 0x8c, 0x70, 0xe3, + 0xf5, 0x6a, 0xd6, 0x7f, 0xf5, 0x7c, 0x01, 0x31, 0xae, 0xb9, 0xc0, 0x85, 0xe2, 0x76, 0xb1, 0xd2, + 0x46, 0x63, 0xd5, 0xf1, 0x6f, 0x72, 0x7b, 0xc8, 0x82, 0xd3, 0xae, 0xfb, 0x9b, 0xf7, 0x95, 0x05, + 0x27, 0x29, 0x37, 0xab, 0x9b, 0xb0, 0x4b, 0x85, 0xf3, 0x7e, 0x2b, 0x4e, 0xb9, 0x9d, 0x95, 0xd2, + 0xe4, 0x6e, 0x97, 0x13, 0x77, 0x9f, 0x13, 0xf7, 0x33, 0x27, 0xee, 0x7b, 0x41, 0x9c, 0x7d, 0x41, + 0x9c, 0x8f, 0x82, 0x38, 0x8f, 0xd7, 0x4a, 0xe3, 0xcb, 0x26, 0xa2, 0x02, 0x0c, 0x6b, 0x3e, 0x06, + 0xcb, 0xa5, 0x16, 0x9a, 0xaf, 0x98, 0x82, 0x8b, 0x76, 0xae, 0xb7, 0x9f, 0xc1, 0x30, 0x4d, 0xa4, + 0x8d, 0x7a, 0xd5, 0x58, 0x57, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x57, 0x4e, 0xf0, 0x10, 0xbc, 0x01, 0x00, 0x00, } diff --git a/x/cadance/types/keys.go b/x/cadence/types/keys.go similarity index 100% rename from x/cadance/types/keys.go rename to x/cadence/types/keys.go diff --git a/x/cadance/types/msgs.go b/x/cadence/types/msgs.go similarity index 67% rename from x/cadance/types/msgs.go rename to x/cadence/types/msgs.go index bc0a13e4..eda87f55 100644 --- a/x/cadance/types/msgs.go +++ b/x/cadence/types/msgs.go @@ -8,86 +8,86 @@ import ( const ( // Sudo Message called on the contracts - EndBlockSudoMessage = `{"cadance_end_block":{}}` + EndBlockSudoMessage = `{"cadence_end_block":{}}` ) // == MsgUpdateParams == const ( - TypeMsgRegisterCadanceContract = "register_cadance_contract" - TypeMsgUnregisterCadanceContract = "unregister_cadance_contract" - TypeMsgUnjailCadanceContract = "unjail_cadance_contract" - TypeMsgUpdateParams = "update_cadance_params" + TypeMsgRegisterCadenceContract = "register_cadence_contract" + TypeMsgUnregisterCadenceContract = "unregister_cadence_contract" + TypeMsgUnjailCadenceContract = "unjail_cadence_contract" + TypeMsgUpdateParams = "update_cadence_params" ) var ( - _ sdk.Msg = &MsgRegisterCadanceContract{} - _ sdk.Msg = &MsgUnregisterCadanceContract{} - _ sdk.Msg = &MsgUnjailCadanceContract{} + _ sdk.Msg = &MsgRegisterCadenceContract{} + _ sdk.Msg = &MsgUnregisterCadenceContract{} + _ sdk.Msg = &MsgUnjailCadenceContract{} _ sdk.Msg = &MsgUpdateParams{} ) // Route returns the name of the module -func (msg MsgRegisterCadanceContract) Route() string { return RouterKey } +func (msg MsgRegisterCadenceContract) Route() string { return RouterKey } // Type returns the the action -func (msg MsgRegisterCadanceContract) Type() string { return TypeMsgRegisterCadanceContract } +func (msg MsgRegisterCadenceContract) Type() string { return TypeMsgRegisterCadenceContract } // ValidateBasic runs stateless checks on the message -func (msg MsgRegisterCadanceContract) ValidateBasic() error { +func (msg MsgRegisterCadenceContract) ValidateBasic() error { return validateAddresses(msg.SenderAddress, msg.ContractAddress) } // GetSignBytes encodes the message for signing -func (msg *MsgRegisterCadanceContract) GetSignBytes() []byte { +func (msg *MsgRegisterCadenceContract) GetSignBytes() []byte { return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(msg)) } // GetSigners defines whose signature is required -func (msg MsgRegisterCadanceContract) GetSigners() []sdk.AccAddress { +func (msg MsgRegisterCadenceContract) GetSigners() []sdk.AccAddress { from, _ := sdk.AccAddressFromBech32(msg.SenderAddress) return []sdk.AccAddress{from} } // Route returns the name of the module -func (msg MsgUnregisterCadanceContract) Route() string { return RouterKey } +func (msg MsgUnregisterCadenceContract) Route() string { return RouterKey } // Type returns the the action -func (msg MsgUnregisterCadanceContract) Type() string { return TypeMsgUnregisterCadanceContract } +func (msg MsgUnregisterCadenceContract) Type() string { return TypeMsgUnregisterCadenceContract } // ValidateBasic runs stateless checks on the message -func (msg MsgUnregisterCadanceContract) ValidateBasic() error { +func (msg MsgUnregisterCadenceContract) ValidateBasic() error { return validateAddresses(msg.SenderAddress, msg.ContractAddress) } // GetSignBytes encodes the message for signing -func (msg *MsgUnregisterCadanceContract) GetSignBytes() []byte { +func (msg *MsgUnregisterCadenceContract) GetSignBytes() []byte { return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(msg)) } // GetSigners defines whose signature is required -func (msg MsgUnregisterCadanceContract) GetSigners() []sdk.AccAddress { +func (msg MsgUnregisterCadenceContract) GetSigners() []sdk.AccAddress { from, _ := sdk.AccAddressFromBech32(msg.SenderAddress) return []sdk.AccAddress{from} } // Route returns the name of the module -func (msg MsgUnjailCadanceContract) Route() string { return RouterKey } +func (msg MsgUnjailCadenceContract) Route() string { return RouterKey } // Type returns the the action -func (msg MsgUnjailCadanceContract) Type() string { return TypeMsgUnjailCadanceContract } +func (msg MsgUnjailCadenceContract) Type() string { return TypeMsgUnjailCadenceContract } // ValidateBasic runs stateless checks on the message -func (msg MsgUnjailCadanceContract) ValidateBasic() error { +func (msg MsgUnjailCadenceContract) ValidateBasic() error { return validateAddresses(msg.SenderAddress, msg.ContractAddress) } // GetSignBytes encodes the message for signing -func (msg *MsgUnjailCadanceContract) GetSignBytes() []byte { +func (msg *MsgUnjailCadenceContract) GetSignBytes() []byte { return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(msg)) } // GetSigners defines whose signature is required -func (msg MsgUnjailCadanceContract) GetSigners() []sdk.AccAddress { +func (msg MsgUnjailCadenceContract) GetSigners() []sdk.AccAddress { from, _ := sdk.AccAddressFromBech32(msg.SenderAddress) return []sdk.AccAddress{from} } diff --git a/x/cadance/types/msgs_test.go b/x/cadence/types/msgs_test.go similarity index 100% rename from x/cadance/types/msgs_test.go rename to x/cadence/types/msgs_test.go diff --git a/x/cadance/types/params.go b/x/cadence/types/params.go similarity index 100% rename from x/cadance/types/params.go rename to x/cadence/types/params.go diff --git a/x/cadance/types/params_test.go b/x/cadence/types/params_test.go similarity index 94% rename from x/cadance/types/params_test.go rename to x/cadence/types/params_test.go index f65731fc..0fdcd4d1 100644 --- a/x/cadance/types/params_test.go +++ b/x/cadence/types/params_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/bitsongofficial/go-bitsong/x/cadance/types" + "github.com/bitsongofficial/go-bitsong/x/cadence/types" ) func TestParamsValidate(t *testing.T) { diff --git a/x/cadance/types/query.pb.go b/x/cadence/types/query.pb.go similarity index 73% rename from x/cadance/types/query.pb.go rename to x/cadence/types/query.pb.go index 585d7608..d8de92c9 100644 --- a/x/cadance/types/query.pb.go +++ b/x/cadence/types/query.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: bitsong/cadance/v1/query.proto +// source: bitsong/cadence/v1/query.proto package types @@ -31,24 +31,24 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// QueryCadanceContracts is the request type to get all contracts. -type QueryCadanceContracts struct { +// QueryCadenceContracts is the request type to get all contracts. +type QueryCadenceContracts struct { // pagination defines an optional pagination for the request. Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (m *QueryCadanceContracts) Reset() { *m = QueryCadanceContracts{} } -func (m *QueryCadanceContracts) String() string { return proto.CompactTextString(m) } -func (*QueryCadanceContracts) ProtoMessage() {} -func (*QueryCadanceContracts) Descriptor() ([]byte, []int) { - return fileDescriptor_9e04f5f91761cd4d, []int{0} +func (m *QueryCadenceContracts) Reset() { *m = QueryCadenceContracts{} } +func (m *QueryCadenceContracts) String() string { return proto.CompactTextString(m) } +func (*QueryCadenceContracts) ProtoMessage() {} +func (*QueryCadenceContracts) Descriptor() ([]byte, []int) { + return fileDescriptor_cdacd241438a1f98, []int{0} } -func (m *QueryCadanceContracts) XXX_Unmarshal(b []byte) error { +func (m *QueryCadenceContracts) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryCadanceContracts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryCadenceContracts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryCadanceContracts.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryCadenceContracts.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -58,45 +58,45 @@ func (m *QueryCadanceContracts) XXX_Marshal(b []byte, deterministic bool) ([]byt return b[:n], nil } } -func (m *QueryCadanceContracts) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryCadanceContracts.Merge(m, src) +func (m *QueryCadenceContracts) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCadenceContracts.Merge(m, src) } -func (m *QueryCadanceContracts) XXX_Size() int { +func (m *QueryCadenceContracts) XXX_Size() int { return m.Size() } -func (m *QueryCadanceContracts) XXX_DiscardUnknown() { - xxx_messageInfo_QueryCadanceContracts.DiscardUnknown(m) +func (m *QueryCadenceContracts) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCadenceContracts.DiscardUnknown(m) } -var xxx_messageInfo_QueryCadanceContracts proto.InternalMessageInfo +var xxx_messageInfo_QueryCadenceContracts proto.InternalMessageInfo -func (m *QueryCadanceContracts) GetPagination() *query.PageRequest { +func (m *QueryCadenceContracts) GetPagination() *query.PageRequest { if m != nil { return m.Pagination } return nil } -// QueryCadanceContractsResponse is the response type for the Query/CadanceContracts RPC method. -type QueryCadanceContractsResponse struct { - // cadance_contracts are the cadance contract s. - CadanceContracts []CadanceContract `protobuf:"bytes,1,rep,name=cadance_contracts,json=cadanceContracts,proto3" json:"cadance_contracts"` +// QueryCadenceContractsResponse is the response type for the Query/CadenceContracts RPC method. +type QueryCadenceContractsResponse struct { + // cadence_contracts are the cadence contract s. + CadenceContracts []CadenceContract `protobuf:"bytes,1,rep,name=cadence_contracts,json=cadenceContracts,proto3" json:"cadence_contracts"` // pagination defines the pagination in the response. Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (m *QueryCadanceContractsResponse) Reset() { *m = QueryCadanceContractsResponse{} } -func (m *QueryCadanceContractsResponse) String() string { return proto.CompactTextString(m) } -func (*QueryCadanceContractsResponse) ProtoMessage() {} -func (*QueryCadanceContractsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9e04f5f91761cd4d, []int{1} +func (m *QueryCadenceContractsResponse) Reset() { *m = QueryCadenceContractsResponse{} } +func (m *QueryCadenceContractsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryCadenceContractsResponse) ProtoMessage() {} +func (*QueryCadenceContractsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_cdacd241438a1f98, []int{1} } -func (m *QueryCadanceContractsResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryCadenceContractsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryCadanceContractsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryCadenceContractsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryCadanceContractsResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryCadenceContractsResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -106,50 +106,50 @@ func (m *QueryCadanceContractsResponse) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } -func (m *QueryCadanceContractsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryCadanceContractsResponse.Merge(m, src) +func (m *QueryCadenceContractsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCadenceContractsResponse.Merge(m, src) } -func (m *QueryCadanceContractsResponse) XXX_Size() int { +func (m *QueryCadenceContractsResponse) XXX_Size() int { return m.Size() } -func (m *QueryCadanceContractsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryCadanceContractsResponse.DiscardUnknown(m) +func (m *QueryCadenceContractsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCadenceContractsResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryCadanceContractsResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryCadenceContractsResponse proto.InternalMessageInfo -func (m *QueryCadanceContractsResponse) GetCadanceContracts() []CadanceContract { +func (m *QueryCadenceContractsResponse) GetCadenceContracts() []CadenceContract { if m != nil { - return m.CadanceContracts + return m.CadenceContracts } return nil } -func (m *QueryCadanceContractsResponse) GetPagination() *query.PageResponse { +func (m *QueryCadenceContractsResponse) GetPagination() *query.PageResponse { if m != nil { return m.Pagination } return nil } -// QueryCadanceContract is the request type to get a single contract. -type QueryCadanceContract struct { +// QueryCadenceContract is the request type to get a single contract. +type QueryCadenceContract struct { // contract_address is the address of the contract to query. ContractAddress string `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` } -func (m *QueryCadanceContract) Reset() { *m = QueryCadanceContract{} } -func (m *QueryCadanceContract) String() string { return proto.CompactTextString(m) } -func (*QueryCadanceContract) ProtoMessage() {} -func (*QueryCadanceContract) Descriptor() ([]byte, []int) { - return fileDescriptor_9e04f5f91761cd4d, []int{2} +func (m *QueryCadenceContract) Reset() { *m = QueryCadenceContract{} } +func (m *QueryCadenceContract) String() string { return proto.CompactTextString(m) } +func (*QueryCadenceContract) ProtoMessage() {} +func (*QueryCadenceContract) Descriptor() ([]byte, []int) { + return fileDescriptor_cdacd241438a1f98, []int{2} } -func (m *QueryCadanceContract) XXX_Unmarshal(b []byte) error { +func (m *QueryCadenceContract) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryCadanceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryCadenceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryCadanceContract.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryCadenceContract.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -159,43 +159,43 @@ func (m *QueryCadanceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte return b[:n], nil } } -func (m *QueryCadanceContract) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryCadanceContract.Merge(m, src) +func (m *QueryCadenceContract) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCadenceContract.Merge(m, src) } -func (m *QueryCadanceContract) XXX_Size() int { +func (m *QueryCadenceContract) XXX_Size() int { return m.Size() } -func (m *QueryCadanceContract) XXX_DiscardUnknown() { - xxx_messageInfo_QueryCadanceContract.DiscardUnknown(m) +func (m *QueryCadenceContract) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCadenceContract.DiscardUnknown(m) } -var xxx_messageInfo_QueryCadanceContract proto.InternalMessageInfo +var xxx_messageInfo_QueryCadenceContract proto.InternalMessageInfo -func (m *QueryCadanceContract) GetContractAddress() string { +func (m *QueryCadenceContract) GetContractAddress() string { if m != nil { return m.ContractAddress } return "" } -// QueryCadanceContractResponse is the response type for the Query/CadanceContract RPC method. -type QueryCadanceContractResponse struct { - // contract is the cadance contract . - CadanceContract CadanceContract `protobuf:"bytes,1,opt,name=cadance_contract,json=cadanceContract,proto3" json:"cadance_contract"` +// QueryCadenceContractResponse is the response type for the Query/CadenceContract RPC method. +type QueryCadenceContractResponse struct { + // contract is the cadence contract . + CadenceContract CadenceContract `protobuf:"bytes,1,opt,name=cadence_contract,json=cadenceContract,proto3" json:"cadence_contract"` } -func (m *QueryCadanceContractResponse) Reset() { *m = QueryCadanceContractResponse{} } -func (m *QueryCadanceContractResponse) String() string { return proto.CompactTextString(m) } -func (*QueryCadanceContractResponse) ProtoMessage() {} -func (*QueryCadanceContractResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9e04f5f91761cd4d, []int{3} +func (m *QueryCadenceContractResponse) Reset() { *m = QueryCadenceContractResponse{} } +func (m *QueryCadenceContractResponse) String() string { return proto.CompactTextString(m) } +func (*QueryCadenceContractResponse) ProtoMessage() {} +func (*QueryCadenceContractResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_cdacd241438a1f98, []int{3} } -func (m *QueryCadanceContractResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryCadenceContractResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryCadanceContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryCadenceContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryCadanceContractResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryCadenceContractResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -205,23 +205,23 @@ func (m *QueryCadanceContractResponse) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryCadanceContractResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryCadanceContractResponse.Merge(m, src) +func (m *QueryCadenceContractResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCadenceContractResponse.Merge(m, src) } -func (m *QueryCadanceContractResponse) XXX_Size() int { +func (m *QueryCadenceContractResponse) XXX_Size() int { return m.Size() } -func (m *QueryCadanceContractResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryCadanceContractResponse.DiscardUnknown(m) +func (m *QueryCadenceContractResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCadenceContractResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryCadanceContractResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryCadenceContractResponse proto.InternalMessageInfo -func (m *QueryCadanceContractResponse) GetCadanceContract() CadanceContract { +func (m *QueryCadenceContractResponse) GetCadenceContract() CadenceContract { if m != nil { - return m.CadanceContract + return m.CadenceContract } - return CadanceContract{} + return CadenceContract{} } // QueryParams is the request type to get all module params. @@ -232,7 +232,7 @@ func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } func (*QueryParamsRequest) ProtoMessage() {} func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9e04f5f91761cd4d, []int{4} + return fileDescriptor_cdacd241438a1f98, []int{4} } func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -261,7 +261,7 @@ func (m *QueryParamsRequest) XXX_DiscardUnknown() { var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo -// QueryCadanceContractsResponse is the response type for the Query/CadanceContracts RPC method. +// QueryCadenceContractsResponse is the response type for the Query/CadenceContracts RPC method. type QueryParamsResponse struct { Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params" yaml:"params"` } @@ -270,7 +270,7 @@ func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } func (*QueryParamsResponse) ProtoMessage() {} func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9e04f5f91761cd4d, []int{5} + return fileDescriptor_cdacd241438a1f98, []int{5} } func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -307,17 +307,17 @@ func (m *QueryParamsResponse) GetParams() *Params { } func init() { - proto.RegisterType((*QueryCadanceContracts)(nil), "bitsong.cadance.v1.QueryCadanceContracts") - proto.RegisterType((*QueryCadanceContractsResponse)(nil), "bitsong.cadance.v1.QueryCadanceContractsResponse") - proto.RegisterType((*QueryCadanceContract)(nil), "bitsong.cadance.v1.QueryCadanceContract") - proto.RegisterType((*QueryCadanceContractResponse)(nil), "bitsong.cadance.v1.QueryCadanceContractResponse") - proto.RegisterType((*QueryParamsRequest)(nil), "bitsong.cadance.v1.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "bitsong.cadance.v1.QueryParamsResponse") + proto.RegisterType((*QueryCadenceContracts)(nil), "bitsong.cadence.v1.QueryCadenceContracts") + proto.RegisterType((*QueryCadenceContractsResponse)(nil), "bitsong.cadence.v1.QueryCadenceContractsResponse") + proto.RegisterType((*QueryCadenceContract)(nil), "bitsong.cadence.v1.QueryCadenceContract") + proto.RegisterType((*QueryCadenceContractResponse)(nil), "bitsong.cadence.v1.QueryCadenceContractResponse") + proto.RegisterType((*QueryParamsRequest)(nil), "bitsong.cadence.v1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "bitsong.cadence.v1.QueryParamsResponse") } -func init() { proto.RegisterFile("bitsong/cadance/v1/query.proto", fileDescriptor_9e04f5f91761cd4d) } +func init() { proto.RegisterFile("bitsong/cadence/v1/query.proto", fileDescriptor_cdacd241438a1f98) } -var fileDescriptor_9e04f5f91761cd4d = []byte{ +var fileDescriptor_cdacd241438a1f98 = []byte{ // 559 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xcf, 0x6a, 0x13, 0x41, 0x1c, 0xc7, 0xb3, 0xad, 0x06, 0x9c, 0x22, 0x89, 0x63, 0x84, 0xb2, 0xa6, 0x9b, 0xb0, 0x62, 0x9b, @@ -325,7 +325,7 @@ var fileDescriptor_9e04f5f91761cd4d = []byte{ 0x4c, 0xc6, 0x85, 0x64, 0x67, 0xbb, 0x33, 0x09, 0x06, 0xe9, 0xc5, 0x27, 0x10, 0x3c, 0xf8, 0x08, 0xbe, 0x86, 0xc7, 0xe2, 0xa9, 0xe0, 0xc5, 0x53, 0x90, 0xc4, 0x93, 0x47, 0x9f, 0x40, 0x32, 0x33, 0x1b, 0x9b, 0xed, 0xda, 0xc6, 0xdb, 0xe4, 0xf7, 0xf7, 0xf3, 0xfd, 0xce, 0x64, 0x81, 0xe3, 0x87, - 0x52, 0xf0, 0x88, 0xe1, 0x80, 0x74, 0x49, 0x14, 0x50, 0x3c, 0x6a, 0xe2, 0xe3, 0x21, 0x4d, 0xc6, + 0x52, 0xf0, 0x88, 0xe1, 0x80, 0x74, 0x69, 0x14, 0x50, 0x3c, 0x6a, 0xe2, 0xe3, 0x21, 0x4d, 0xc6, 0x28, 0x4e, 0xb8, 0xe4, 0x10, 0x9a, 0x3c, 0x32, 0x79, 0x34, 0x6a, 0xda, 0x0f, 0x02, 0x2e, 0x06, 0x5c, 0x60, 0x9f, 0x08, 0xaa, 0x8b, 0xf1, 0xa8, 0xe9, 0x53, 0x49, 0x9a, 0x38, 0x26, 0x2c, 0x8c, 0x88, 0x0c, 0x79, 0xa4, 0xfb, 0xed, 0x0a, 0xe3, 0x8c, 0xab, 0x23, 0x9e, 0x9f, 0x4c, 0xb4, 0xca, @@ -353,7 +353,7 @@ var fileDescriptor_9e04f5f91761cd4d = []byte{ 0x1f, 0x53, 0xc7, 0xfa, 0x30, 0x73, 0x0a, 0x67, 0x33, 0xa7, 0xf0, 0x7d, 0xe6, 0x14, 0x5e, 0x3f, 0x66, 0xa1, 0x7c, 0x33, 0xf4, 0x51, 0xc0, 0x07, 0x69, 0x3f, 0xef, 0xf5, 0xc2, 0x20, 0x24, 0x7d, 0xcc, 0xf8, 0xc3, 0x74, 0xe4, 0xdb, 0xc5, 0x50, 0x39, 0x8e, 0xa9, 0xf0, 0x8b, 0xea, 0xfb, 0xf3, - 0xe8, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xba, 0xba, 0xe9, 0xd8, 0x79, 0x05, 0x00, 0x00, + 0xe8, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa2, 0xc5, 0x53, 0x55, 0x79, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -368,10 +368,10 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type QueryClient interface { - // CadanceContracts - CadanceContracts(ctx context.Context, in *QueryCadanceContracts, opts ...grpc.CallOption) (*QueryCadanceContractsResponse, error) - // CadanceContract - CadanceContract(ctx context.Context, in *QueryCadanceContract, opts ...grpc.CallOption) (*QueryCadanceContractResponse, error) + // CadenceContracts + CadenceContracts(ctx context.Context, in *QueryCadenceContracts, opts ...grpc.CallOption) (*QueryCadenceContractsResponse, error) + // CadenceContract + CadenceContract(ctx context.Context, in *QueryCadenceContract, opts ...grpc.CallOption) (*QueryCadenceContractResponse, error) // Params Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) } @@ -384,18 +384,18 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { return &queryClient{cc} } -func (c *queryClient) CadanceContracts(ctx context.Context, in *QueryCadanceContracts, opts ...grpc.CallOption) (*QueryCadanceContractsResponse, error) { - out := new(QueryCadanceContractsResponse) - err := c.cc.Invoke(ctx, "/bitsong.cadance.v1.Query/CadanceContracts", in, out, opts...) +func (c *queryClient) CadenceContracts(ctx context.Context, in *QueryCadenceContracts, opts ...grpc.CallOption) (*QueryCadenceContractsResponse, error) { + out := new(QueryCadenceContractsResponse) + err := c.cc.Invoke(ctx, "/bitsong.cadence.v1.Query/CadenceContracts", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *queryClient) CadanceContract(ctx context.Context, in *QueryCadanceContract, opts ...grpc.CallOption) (*QueryCadanceContractResponse, error) { - out := new(QueryCadanceContractResponse) - err := c.cc.Invoke(ctx, "/bitsong.cadance.v1.Query/CadanceContract", in, out, opts...) +func (c *queryClient) CadenceContract(ctx context.Context, in *QueryCadenceContract, opts ...grpc.CallOption) (*QueryCadenceContractResponse, error) { + out := new(QueryCadenceContractResponse) + err := c.cc.Invoke(ctx, "/bitsong.cadence.v1.Query/CadenceContract", in, out, opts...) if err != nil { return nil, err } @@ -404,7 +404,7 @@ func (c *queryClient) CadanceContract(ctx context.Context, in *QueryCadanceContr func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/bitsong.cadance.v1.Query/Params", in, out, opts...) + err := c.cc.Invoke(ctx, "/bitsong.cadence.v1.Query/Params", in, out, opts...) if err != nil { return nil, err } @@ -413,10 +413,10 @@ func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts . // QueryServer is the server API for Query service. type QueryServer interface { - // CadanceContracts - CadanceContracts(context.Context, *QueryCadanceContracts) (*QueryCadanceContractsResponse, error) - // CadanceContract - CadanceContract(context.Context, *QueryCadanceContract) (*QueryCadanceContractResponse, error) + // CadenceContracts + CadenceContracts(context.Context, *QueryCadenceContracts) (*QueryCadenceContractsResponse, error) + // CadenceContract + CadenceContract(context.Context, *QueryCadenceContract) (*QueryCadenceContractResponse, error) // Params Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) } @@ -425,11 +425,11 @@ type QueryServer interface { type UnimplementedQueryServer struct { } -func (*UnimplementedQueryServer) CadanceContracts(ctx context.Context, req *QueryCadanceContracts) (*QueryCadanceContractsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CadanceContracts not implemented") +func (*UnimplementedQueryServer) CadenceContracts(ctx context.Context, req *QueryCadenceContracts) (*QueryCadenceContractsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CadenceContracts not implemented") } -func (*UnimplementedQueryServer) CadanceContract(ctx context.Context, req *QueryCadanceContract) (*QueryCadanceContractResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CadanceContract not implemented") +func (*UnimplementedQueryServer) CadenceContract(ctx context.Context, req *QueryCadenceContract) (*QueryCadenceContractResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CadenceContract not implemented") } func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") @@ -439,38 +439,38 @@ func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) } -func _Query_CadanceContracts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryCadanceContracts) +func _Query_CadenceContracts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCadenceContracts) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).CadanceContracts(ctx, in) + return srv.(QueryServer).CadenceContracts(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/bitsong.cadance.v1.Query/CadanceContracts", + FullMethod: "/bitsong.cadence.v1.Query/CadenceContracts", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).CadanceContracts(ctx, req.(*QueryCadanceContracts)) + return srv.(QueryServer).CadenceContracts(ctx, req.(*QueryCadenceContracts)) } return interceptor(ctx, in, info, handler) } -func _Query_CadanceContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryCadanceContract) +func _Query_CadenceContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCadenceContract) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).CadanceContract(ctx, in) + return srv.(QueryServer).CadenceContract(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/bitsong.cadance.v1.Query/CadanceContract", + FullMethod: "/bitsong.cadence.v1.Query/CadenceContract", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).CadanceContract(ctx, req.(*QueryCadanceContract)) + return srv.(QueryServer).CadenceContract(ctx, req.(*QueryCadenceContract)) } return interceptor(ctx, in, info, handler) } @@ -485,7 +485,7 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/bitsong.cadance.v1.Query/Params", + FullMethod: "/bitsong.cadence.v1.Query/Params", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) @@ -495,16 +495,16 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf var Query_serviceDesc = _Query_serviceDesc var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "bitsong.cadance.v1.Query", + ServiceName: "bitsong.cadence.v1.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "CadanceContracts", - Handler: _Query_CadanceContracts_Handler, + MethodName: "CadenceContracts", + Handler: _Query_CadenceContracts_Handler, }, { - MethodName: "CadanceContract", - Handler: _Query_CadanceContract_Handler, + MethodName: "CadenceContract", + Handler: _Query_CadenceContract_Handler, }, { MethodName: "Params", @@ -512,10 +512,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "bitsong/cadance/v1/query.proto", + Metadata: "bitsong/cadence/v1/query.proto", } -func (m *QueryCadanceContracts) Marshal() (dAtA []byte, err error) { +func (m *QueryCadenceContracts) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -525,12 +525,12 @@ func (m *QueryCadanceContracts) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryCadanceContracts) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryCadenceContracts) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryCadanceContracts) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryCadenceContracts) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -550,7 +550,7 @@ func (m *QueryCadanceContracts) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryCadanceContractsResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryCadenceContractsResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -560,12 +560,12 @@ func (m *QueryCadanceContractsResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryCadanceContractsResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryCadenceContractsResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryCadanceContractsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryCadenceContractsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -582,10 +582,10 @@ func (m *QueryCadanceContractsResponse) MarshalToSizedBuffer(dAtA []byte) (int, i-- dAtA[i] = 0x12 } - if len(m.CadanceContracts) > 0 { - for iNdEx := len(m.CadanceContracts) - 1; iNdEx >= 0; iNdEx-- { + if len(m.CadenceContracts) > 0 { + for iNdEx := len(m.CadenceContracts) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.CadanceContracts[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.CadenceContracts[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -599,7 +599,7 @@ func (m *QueryCadanceContractsResponse) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } -func (m *QueryCadanceContract) Marshal() (dAtA []byte, err error) { +func (m *QueryCadenceContract) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -609,12 +609,12 @@ func (m *QueryCadanceContract) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryCadanceContract) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryCadenceContract) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryCadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryCadenceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -629,7 +629,7 @@ func (m *QueryCadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryCadanceContractResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryCadenceContractResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -639,18 +639,18 @@ func (m *QueryCadanceContractResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryCadanceContractResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryCadenceContractResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryCadanceContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryCadenceContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l { - size, err := m.CadanceContract.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.CadenceContract.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -731,7 +731,7 @@ func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *QueryCadanceContracts) Size() (n int) { +func (m *QueryCadenceContracts) Size() (n int) { if m == nil { return 0 } @@ -744,14 +744,14 @@ func (m *QueryCadanceContracts) Size() (n int) { return n } -func (m *QueryCadanceContractsResponse) Size() (n int) { +func (m *QueryCadenceContractsResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - if len(m.CadanceContracts) > 0 { - for _, e := range m.CadanceContracts { + if len(m.CadenceContracts) > 0 { + for _, e := range m.CadenceContracts { l = e.Size() n += 1 + l + sovQuery(uint64(l)) } @@ -763,7 +763,7 @@ func (m *QueryCadanceContractsResponse) Size() (n int) { return n } -func (m *QueryCadanceContract) Size() (n int) { +func (m *QueryCadenceContract) Size() (n int) { if m == nil { return 0 } @@ -776,13 +776,13 @@ func (m *QueryCadanceContract) Size() (n int) { return n } -func (m *QueryCadanceContractResponse) Size() (n int) { +func (m *QueryCadenceContractResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = m.CadanceContract.Size() + l = m.CadenceContract.Size() n += 1 + l + sovQuery(uint64(l)) return n } @@ -815,7 +815,7 @@ func sovQuery(x uint64) (n int) { func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *QueryCadanceContracts) Unmarshal(dAtA []byte) error { +func (m *QueryCadenceContracts) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -838,10 +838,10 @@ func (m *QueryCadanceContracts) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryCadanceContracts: wiretype end group for non-group") + return fmt.Errorf("proto: QueryCadenceContracts: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryCadanceContracts: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryCadenceContracts: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -901,7 +901,7 @@ func (m *QueryCadanceContracts) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryCadanceContractsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryCadenceContractsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -924,15 +924,15 @@ func (m *QueryCadanceContractsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryCadanceContractsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryCadenceContractsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryCadanceContractsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryCadenceContractsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CadanceContracts", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CadenceContracts", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -959,8 +959,8 @@ func (m *QueryCadanceContractsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.CadanceContracts = append(m.CadanceContracts, CadanceContract{}) - if err := m.CadanceContracts[len(m.CadanceContracts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.CadenceContracts = append(m.CadenceContracts, CadenceContract{}) + if err := m.CadenceContracts[len(m.CadenceContracts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1021,7 +1021,7 @@ func (m *QueryCadanceContractsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryCadanceContract) Unmarshal(dAtA []byte) error { +func (m *QueryCadenceContract) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1044,10 +1044,10 @@ func (m *QueryCadanceContract) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryCadanceContract: wiretype end group for non-group") + return fmt.Errorf("proto: QueryCadenceContract: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryCadanceContract: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryCadenceContract: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1103,7 +1103,7 @@ func (m *QueryCadanceContract) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryCadanceContractResponse) Unmarshal(dAtA []byte) error { +func (m *QueryCadenceContractResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1126,15 +1126,15 @@ func (m *QueryCadanceContractResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryCadanceContractResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryCadenceContractResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryCadanceContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryCadenceContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CadanceContract", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CadenceContract", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1161,7 +1161,7 @@ func (m *QueryCadanceContractResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.CadanceContract.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.CadenceContract.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/cadance/types/query.pb.gw.go b/x/cadence/types/query.pb.gw.go similarity index 84% rename from x/cadance/types/query.pb.gw.go rename to x/cadence/types/query.pb.gw.go index 574f691f..68d1ba15 100644 --- a/x/cadance/types/query.pb.gw.go +++ b/x/cadence/types/query.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: bitsong/cadance/v1/query.proto +// source: bitsong/cadence/v1/query.proto /* Package types is a reverse proxy. @@ -34,43 +34,43 @@ var _ = descriptor.ForMessage var _ = metadata.Join var ( - filter_Query_CadanceContracts_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + filter_Query_CadenceContracts_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) -func request_Query_CadanceContracts_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryCadanceContracts +func request_Query_CadenceContracts_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCadenceContracts var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CadanceContracts_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CadenceContracts_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.CadanceContracts(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.CadenceContracts(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_CadanceContracts_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryCadanceContracts +func local_request_Query_CadenceContracts_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCadenceContracts var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CadanceContracts_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CadenceContracts_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.CadanceContracts(ctx, &protoReq) + msg, err := server.CadenceContracts(ctx, &protoReq) return msg, metadata, err } -func request_Query_CadanceContract_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryCadanceContract +func request_Query_CadenceContract_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCadenceContract var metadata runtime.ServerMetadata var ( @@ -91,13 +91,13 @@ func request_Query_CadanceContract_0(ctx context.Context, marshaler runtime.Mars return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "contract_address", err) } - msg, err := client.CadanceContract(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.CadenceContract(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_CadanceContract_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryCadanceContract +func local_request_Query_CadenceContract_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCadenceContract var metadata runtime.ServerMetadata var ( @@ -118,7 +118,7 @@ func local_request_Query_CadanceContract_0(ctx context.Context, marshaler runtim return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "contract_address", err) } - msg, err := server.CadanceContract(ctx, &protoReq) + msg, err := server.CadenceContract(ctx, &protoReq) return msg, metadata, err } @@ -147,7 +147,7 @@ func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshal // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { - mux.Handle("GET", pattern_Query_CadanceContracts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_CadenceContracts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -158,7 +158,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_CadanceContracts_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_CadenceContracts_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -166,11 +166,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_CadanceContracts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_CadenceContracts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_CadanceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_CadenceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -181,7 +181,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_CadanceContract_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_CadenceContract_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -189,7 +189,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_CadanceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_CadenceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -257,7 +257,7 @@ func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // "QueryClient" to call the correct interceptors. func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { - mux.Handle("GET", pattern_Query_CadanceContracts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_CadenceContracts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -266,18 +266,18 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_CadanceContracts_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_CadenceContracts_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_CadanceContracts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_CadenceContracts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_CadanceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_CadenceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -286,14 +286,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_CadanceContract_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_CadenceContract_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_CadanceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_CadenceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -321,17 +321,17 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_Query_CadanceContracts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"bitsong", "cadance", "v1", "contracts"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_CadenceContracts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"bitsong", "cadence", "v1", "contracts"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_CadanceContract_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"bitsong", "cadance", "v1", "contracts", "contract_address"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_CadenceContract_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"bitsong", "cadence", "v1", "contracts", "contract_address"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"bitsong", "cadance", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"bitsong", "cadence", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( - forward_Query_CadanceContracts_0 = runtime.ForwardResponseMessage + forward_Query_CadenceContracts_0 = runtime.ForwardResponseMessage - forward_Query_CadanceContract_0 = runtime.ForwardResponseMessage + forward_Query_CadenceContract_0 = runtime.ForwardResponseMessage forward_Query_Params_0 = runtime.ForwardResponseMessage ) diff --git a/x/cadance/types/tx.pb.go b/x/cadence/types/tx.pb.go similarity index 71% rename from x/cadance/types/tx.pb.go rename to x/cadence/types/tx.pb.go index c69494de..1d0047df 100644 --- a/x/cadance/types/tx.pb.go +++ b/x/cadence/types/tx.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: bitsong/cadance/v1/tx.proto +// source: bitsong/cadence/v1/tx.proto package types @@ -32,26 +32,26 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// MsgRegisterCadanceContract is the Msg/RegisterCadanceContract request type. -type MsgRegisterCadanceContract struct { +// MsgRegisterCadenceContract is the Msg/RegisterCadenceContract request type. +type MsgRegisterCadenceContract struct { // The address of the sender. SenderAddress string `protobuf:"bytes,1,opt,name=sender_address,json=senderAddress,proto3" json:"sender_address,omitempty"` // The address of the contract to register. ContractAddress string `protobuf:"bytes,2,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` } -func (m *MsgRegisterCadanceContract) Reset() { *m = MsgRegisterCadanceContract{} } -func (m *MsgRegisterCadanceContract) String() string { return proto.CompactTextString(m) } -func (*MsgRegisterCadanceContract) ProtoMessage() {} -func (*MsgRegisterCadanceContract) Descriptor() ([]byte, []int) { - return fileDescriptor_e5bbd129cd018eed, []int{0} +func (m *MsgRegisterCadenceContract) Reset() { *m = MsgRegisterCadenceContract{} } +func (m *MsgRegisterCadenceContract) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterCadenceContract) ProtoMessage() {} +func (*MsgRegisterCadenceContract) Descriptor() ([]byte, []int) { + return fileDescriptor_50647315fd237ecd, []int{0} } -func (m *MsgRegisterCadanceContract) XXX_Unmarshal(b []byte) error { +func (m *MsgRegisterCadenceContract) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgRegisterCadanceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgRegisterCadenceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgRegisterCadanceContract.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgRegisterCadenceContract.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -61,49 +61,49 @@ func (m *MsgRegisterCadanceContract) XXX_Marshal(b []byte, deterministic bool) ( return b[:n], nil } } -func (m *MsgRegisterCadanceContract) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRegisterCadanceContract.Merge(m, src) +func (m *MsgRegisterCadenceContract) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterCadenceContract.Merge(m, src) } -func (m *MsgRegisterCadanceContract) XXX_Size() int { +func (m *MsgRegisterCadenceContract) XXX_Size() int { return m.Size() } -func (m *MsgRegisterCadanceContract) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRegisterCadanceContract.DiscardUnknown(m) +func (m *MsgRegisterCadenceContract) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterCadenceContract.DiscardUnknown(m) } -var xxx_messageInfo_MsgRegisterCadanceContract proto.InternalMessageInfo +var xxx_messageInfo_MsgRegisterCadenceContract proto.InternalMessageInfo -func (m *MsgRegisterCadanceContract) GetSenderAddress() string { +func (m *MsgRegisterCadenceContract) GetSenderAddress() string { if m != nil { return m.SenderAddress } return "" } -func (m *MsgRegisterCadanceContract) GetContractAddress() string { +func (m *MsgRegisterCadenceContract) GetContractAddress() string { if m != nil { return m.ContractAddress } return "" } -// MsgRegisterCadanceContractResponse defines the response structure for executing a -// MsgRegisterCadanceContract message. -type MsgRegisterCadanceContractResponse struct { +// MsgRegisterCadenceContractResponse defines the response structure for executing a +// MsgRegisterCadenceContract message. +type MsgRegisterCadenceContractResponse struct { } -func (m *MsgRegisterCadanceContractResponse) Reset() { *m = MsgRegisterCadanceContractResponse{} } -func (m *MsgRegisterCadanceContractResponse) String() string { return proto.CompactTextString(m) } -func (*MsgRegisterCadanceContractResponse) ProtoMessage() {} -func (*MsgRegisterCadanceContractResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e5bbd129cd018eed, []int{1} +func (m *MsgRegisterCadenceContractResponse) Reset() { *m = MsgRegisterCadenceContractResponse{} } +func (m *MsgRegisterCadenceContractResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterCadenceContractResponse) ProtoMessage() {} +func (*MsgRegisterCadenceContractResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_50647315fd237ecd, []int{1} } -func (m *MsgRegisterCadanceContractResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgRegisterCadenceContractResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgRegisterCadanceContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgRegisterCadenceContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgRegisterCadanceContractResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgRegisterCadenceContractResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -113,38 +113,38 @@ func (m *MsgRegisterCadanceContractResponse) XXX_Marshal(b []byte, deterministic return b[:n], nil } } -func (m *MsgRegisterCadanceContractResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRegisterCadanceContractResponse.Merge(m, src) +func (m *MsgRegisterCadenceContractResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterCadenceContractResponse.Merge(m, src) } -func (m *MsgRegisterCadanceContractResponse) XXX_Size() int { +func (m *MsgRegisterCadenceContractResponse) XXX_Size() int { return m.Size() } -func (m *MsgRegisterCadanceContractResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRegisterCadanceContractResponse.DiscardUnknown(m) +func (m *MsgRegisterCadenceContractResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterCadenceContractResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgRegisterCadanceContractResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgRegisterCadenceContractResponse proto.InternalMessageInfo -// MsgUnregisterCadanceContract is the Msg/UnregisterCadanceContract request type. -type MsgUnregisterCadanceContract struct { +// MsgUnregisterCadenceContract is the Msg/UnregisterCadenceContract request type. +type MsgUnregisterCadenceContract struct { // The address of the sender. SenderAddress string `protobuf:"bytes,1,opt,name=sender_address,json=senderAddress,proto3" json:"sender_address,omitempty"` // The address of the contract to unregister. ContractAddress string `protobuf:"bytes,2,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` } -func (m *MsgUnregisterCadanceContract) Reset() { *m = MsgUnregisterCadanceContract{} } -func (m *MsgUnregisterCadanceContract) String() string { return proto.CompactTextString(m) } -func (*MsgUnregisterCadanceContract) ProtoMessage() {} -func (*MsgUnregisterCadanceContract) Descriptor() ([]byte, []int) { - return fileDescriptor_e5bbd129cd018eed, []int{2} +func (m *MsgUnregisterCadenceContract) Reset() { *m = MsgUnregisterCadenceContract{} } +func (m *MsgUnregisterCadenceContract) String() string { return proto.CompactTextString(m) } +func (*MsgUnregisterCadenceContract) ProtoMessage() {} +func (*MsgUnregisterCadenceContract) Descriptor() ([]byte, []int) { + return fileDescriptor_50647315fd237ecd, []int{2} } -func (m *MsgUnregisterCadanceContract) XXX_Unmarshal(b []byte) error { +func (m *MsgUnregisterCadenceContract) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUnregisterCadanceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUnregisterCadenceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUnregisterCadanceContract.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUnregisterCadenceContract.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -154,49 +154,49 @@ func (m *MsgUnregisterCadanceContract) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *MsgUnregisterCadanceContract) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUnregisterCadanceContract.Merge(m, src) +func (m *MsgUnregisterCadenceContract) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnregisterCadenceContract.Merge(m, src) } -func (m *MsgUnregisterCadanceContract) XXX_Size() int { +func (m *MsgUnregisterCadenceContract) XXX_Size() int { return m.Size() } -func (m *MsgUnregisterCadanceContract) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUnregisterCadanceContract.DiscardUnknown(m) +func (m *MsgUnregisterCadenceContract) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnregisterCadenceContract.DiscardUnknown(m) } -var xxx_messageInfo_MsgUnregisterCadanceContract proto.InternalMessageInfo +var xxx_messageInfo_MsgUnregisterCadenceContract proto.InternalMessageInfo -func (m *MsgUnregisterCadanceContract) GetSenderAddress() string { +func (m *MsgUnregisterCadenceContract) GetSenderAddress() string { if m != nil { return m.SenderAddress } return "" } -func (m *MsgUnregisterCadanceContract) GetContractAddress() string { +func (m *MsgUnregisterCadenceContract) GetContractAddress() string { if m != nil { return m.ContractAddress } return "" } -// MsgUnregisterCadanceContractResponse defines the response structure for executing a -// MsgUnregisterCadanceContract message. -type MsgUnregisterCadanceContractResponse struct { +// MsgUnregisterCadenceContractResponse defines the response structure for executing a +// MsgUnregisterCadenceContract message. +type MsgUnregisterCadenceContractResponse struct { } -func (m *MsgUnregisterCadanceContractResponse) Reset() { *m = MsgUnregisterCadanceContractResponse{} } -func (m *MsgUnregisterCadanceContractResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUnregisterCadanceContractResponse) ProtoMessage() {} -func (*MsgUnregisterCadanceContractResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e5bbd129cd018eed, []int{3} +func (m *MsgUnregisterCadenceContractResponse) Reset() { *m = MsgUnregisterCadenceContractResponse{} } +func (m *MsgUnregisterCadenceContractResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUnregisterCadenceContractResponse) ProtoMessage() {} +func (*MsgUnregisterCadenceContractResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_50647315fd237ecd, []int{3} } -func (m *MsgUnregisterCadanceContractResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgUnregisterCadenceContractResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUnregisterCadanceContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUnregisterCadenceContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUnregisterCadanceContractResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUnregisterCadenceContractResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -206,38 +206,38 @@ func (m *MsgUnregisterCadanceContractResponse) XXX_Marshal(b []byte, determinist return b[:n], nil } } -func (m *MsgUnregisterCadanceContractResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUnregisterCadanceContractResponse.Merge(m, src) +func (m *MsgUnregisterCadenceContractResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnregisterCadenceContractResponse.Merge(m, src) } -func (m *MsgUnregisterCadanceContractResponse) XXX_Size() int { +func (m *MsgUnregisterCadenceContractResponse) XXX_Size() int { return m.Size() } -func (m *MsgUnregisterCadanceContractResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUnregisterCadanceContractResponse.DiscardUnknown(m) +func (m *MsgUnregisterCadenceContractResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnregisterCadenceContractResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgUnregisterCadanceContractResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgUnregisterCadenceContractResponse proto.InternalMessageInfo -// MsgUnjailCadanceContract is the Msg/UnjailCadanceContract request type. -type MsgUnjailCadanceContract struct { +// MsgUnjailCadenceContract is the Msg/UnjailCadenceContract request type. +type MsgUnjailCadenceContract struct { // The address of the sender. SenderAddress string `protobuf:"bytes,1,opt,name=sender_address,json=senderAddress,proto3" json:"sender_address,omitempty"` // The address of the contract to unjail. ContractAddress string `protobuf:"bytes,2,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` } -func (m *MsgUnjailCadanceContract) Reset() { *m = MsgUnjailCadanceContract{} } -func (m *MsgUnjailCadanceContract) String() string { return proto.CompactTextString(m) } -func (*MsgUnjailCadanceContract) ProtoMessage() {} -func (*MsgUnjailCadanceContract) Descriptor() ([]byte, []int) { - return fileDescriptor_e5bbd129cd018eed, []int{4} +func (m *MsgUnjailCadenceContract) Reset() { *m = MsgUnjailCadenceContract{} } +func (m *MsgUnjailCadenceContract) String() string { return proto.CompactTextString(m) } +func (*MsgUnjailCadenceContract) ProtoMessage() {} +func (*MsgUnjailCadenceContract) Descriptor() ([]byte, []int) { + return fileDescriptor_50647315fd237ecd, []int{4} } -func (m *MsgUnjailCadanceContract) XXX_Unmarshal(b []byte) error { +func (m *MsgUnjailCadenceContract) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUnjailCadanceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUnjailCadenceContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUnjailCadanceContract.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUnjailCadenceContract.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -247,49 +247,49 @@ func (m *MsgUnjailCadanceContract) XXX_Marshal(b []byte, deterministic bool) ([] return b[:n], nil } } -func (m *MsgUnjailCadanceContract) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUnjailCadanceContract.Merge(m, src) +func (m *MsgUnjailCadenceContract) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnjailCadenceContract.Merge(m, src) } -func (m *MsgUnjailCadanceContract) XXX_Size() int { +func (m *MsgUnjailCadenceContract) XXX_Size() int { return m.Size() } -func (m *MsgUnjailCadanceContract) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUnjailCadanceContract.DiscardUnknown(m) +func (m *MsgUnjailCadenceContract) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnjailCadenceContract.DiscardUnknown(m) } -var xxx_messageInfo_MsgUnjailCadanceContract proto.InternalMessageInfo +var xxx_messageInfo_MsgUnjailCadenceContract proto.InternalMessageInfo -func (m *MsgUnjailCadanceContract) GetSenderAddress() string { +func (m *MsgUnjailCadenceContract) GetSenderAddress() string { if m != nil { return m.SenderAddress } return "" } -func (m *MsgUnjailCadanceContract) GetContractAddress() string { +func (m *MsgUnjailCadenceContract) GetContractAddress() string { if m != nil { return m.ContractAddress } return "" } -// MsgUnjailCadanceContractResponse defines the response structure for executing a -// MsgUnjailCadanceContract message. -type MsgUnjailCadanceContractResponse struct { +// MsgUnjailCadenceContractResponse defines the response structure for executing a +// MsgUnjailCadenceContract message. +type MsgUnjailCadenceContractResponse struct { } -func (m *MsgUnjailCadanceContractResponse) Reset() { *m = MsgUnjailCadanceContractResponse{} } -func (m *MsgUnjailCadanceContractResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUnjailCadanceContractResponse) ProtoMessage() {} -func (*MsgUnjailCadanceContractResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e5bbd129cd018eed, []int{5} +func (m *MsgUnjailCadenceContractResponse) Reset() { *m = MsgUnjailCadenceContractResponse{} } +func (m *MsgUnjailCadenceContractResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUnjailCadenceContractResponse) ProtoMessage() {} +func (*MsgUnjailCadenceContractResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_50647315fd237ecd, []int{5} } -func (m *MsgUnjailCadanceContractResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgUnjailCadenceContractResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUnjailCadanceContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUnjailCadenceContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUnjailCadanceContractResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUnjailCadenceContractResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -299,17 +299,17 @@ func (m *MsgUnjailCadanceContractResponse) XXX_Marshal(b []byte, deterministic b return b[:n], nil } } -func (m *MsgUnjailCadanceContractResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUnjailCadanceContractResponse.Merge(m, src) +func (m *MsgUnjailCadenceContractResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnjailCadenceContractResponse.Merge(m, src) } -func (m *MsgUnjailCadanceContractResponse) XXX_Size() int { +func (m *MsgUnjailCadenceContractResponse) XXX_Size() int { return m.Size() } -func (m *MsgUnjailCadanceContractResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUnjailCadanceContractResponse.DiscardUnknown(m) +func (m *MsgUnjailCadenceContractResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnjailCadenceContractResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgUnjailCadanceContractResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgUnjailCadenceContractResponse proto.InternalMessageInfo // MsgUpdateParams is the Msg/UpdateParams request type. // @@ -317,7 +317,7 @@ var xxx_messageInfo_MsgUnjailCadanceContractResponse proto.InternalMessageInfo type MsgUpdateParams struct { // authority is the address of the governance account. Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - // params defines the x/cadance parameters to update. + // params defines the x/cadence parameters to update. // // NOTE: All parameters must be supplied. Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` @@ -327,7 +327,7 @@ func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParams) ProtoMessage() {} func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_e5bbd129cd018eed, []int{6} + return fileDescriptor_50647315fd237ecd, []int{6} } func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -381,7 +381,7 @@ func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParamsResponse) ProtoMessage() {} func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e5bbd129cd018eed, []int{7} + return fileDescriptor_50647315fd237ecd, []int{7} } func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -411,19 +411,19 @@ func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgRegisterCadanceContract)(nil), "bitsong.cadance.v1.MsgRegisterCadanceContract") - proto.RegisterType((*MsgRegisterCadanceContractResponse)(nil), "bitsong.cadance.v1.MsgRegisterCadanceContractResponse") - proto.RegisterType((*MsgUnregisterCadanceContract)(nil), "bitsong.cadance.v1.MsgUnregisterCadanceContract") - proto.RegisterType((*MsgUnregisterCadanceContractResponse)(nil), "bitsong.cadance.v1.MsgUnregisterCadanceContractResponse") - proto.RegisterType((*MsgUnjailCadanceContract)(nil), "bitsong.cadance.v1.MsgUnjailCadanceContract") - proto.RegisterType((*MsgUnjailCadanceContractResponse)(nil), "bitsong.cadance.v1.MsgUnjailCadanceContractResponse") - proto.RegisterType((*MsgUpdateParams)(nil), "bitsong.cadance.v1.MsgUpdateParams") - proto.RegisterType((*MsgUpdateParamsResponse)(nil), "bitsong.cadance.v1.MsgUpdateParamsResponse") + proto.RegisterType((*MsgRegisterCadenceContract)(nil), "bitsong.cadence.v1.MsgRegisterCadenceContract") + proto.RegisterType((*MsgRegisterCadenceContractResponse)(nil), "bitsong.cadence.v1.MsgRegisterCadenceContractResponse") + proto.RegisterType((*MsgUnregisterCadenceContract)(nil), "bitsong.cadence.v1.MsgUnregisterCadenceContract") + proto.RegisterType((*MsgUnregisterCadenceContractResponse)(nil), "bitsong.cadence.v1.MsgUnregisterCadenceContractResponse") + proto.RegisterType((*MsgUnjailCadenceContract)(nil), "bitsong.cadence.v1.MsgUnjailCadenceContract") + proto.RegisterType((*MsgUnjailCadenceContractResponse)(nil), "bitsong.cadence.v1.MsgUnjailCadenceContractResponse") + proto.RegisterType((*MsgUpdateParams)(nil), "bitsong.cadence.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "bitsong.cadence.v1.MsgUpdateParamsResponse") } -func init() { proto.RegisterFile("bitsong/cadance/v1/tx.proto", fileDescriptor_e5bbd129cd018eed) } +func init() { proto.RegisterFile("bitsong/cadence/v1/tx.proto", fileDescriptor_50647315fd237ecd) } -var fileDescriptor_e5bbd129cd018eed = []byte{ +var fileDescriptor_50647315fd237ecd = []byte{ // 552 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x4f, 0x6f, 0xd3, 0x30, 0x18, 0xc6, 0x9b, 0x31, 0x4d, 0x9a, 0x81, 0x0d, 0xac, 0xa1, 0xb6, 0x61, 0xa4, 0x5d, 0xb6, 0x01, @@ -431,7 +431,7 @@ var fileDescriptor_e5bbd129cd018eed = []byte{ 0x79, 0x46, 0x8d, 0x1d, 0xc5, 0xee, 0xb4, 0x5d, 0xf7, 0x09, 0x90, 0xf6, 0x0d, 0x38, 0x72, 0x42, 0x88, 0x0f, 0xb1, 0xe3, 0x04, 0x17, 0x4e, 0x08, 0xb5, 0x48, 0xdc, 0xf8, 0x0c, 0xa8, 0xb1, 0x93, 0xf1, 0x27, 0x46, 0xf4, 0xc0, 0x2e, 0x91, 0xf3, 0xbe, 0xcf, 0xfb, 0x3e, 0x3f, 0x45, 0x4f, 0x0c, - 0xae, 0x76, 0x99, 0x92, 0x82, 0x53, 0x14, 0xe2, 0x08, 0xf3, 0x90, 0xa0, 0xbd, 0x35, 0xa4, 0xf6, + 0xae, 0x76, 0x99, 0x92, 0x82, 0x53, 0x14, 0xe2, 0x88, 0xf0, 0x90, 0xa0, 0xbd, 0x35, 0xa4, 0xf6, 0x83, 0x24, 0x15, 0x4a, 0x40, 0x68, 0x9a, 0x81, 0x69, 0x06, 0x7b, 0x6b, 0xee, 0x3c, 0x15, 0x82, 0xf6, 0x08, 0xc2, 0x09, 0x43, 0x98, 0x73, 0xa1, 0xb0, 0x62, 0x82, 0x4b, 0x3d, 0xe1, 0x56, 0x43, 0x21, 0x63, 0x21, 0x51, 0x2c, 0xe9, 0x68, 0x53, 0x2c, 0xa9, 0x69, 0x34, 0x4b, 0x7c, 0x28, 0xe1, @@ -459,7 +459,7 @@ var fileDescriptor_e5bbd129cd018eed = []byte{ 0x55, 0x4e, 0x86, 0x5e, 0xe5, 0xd3, 0xd0, 0xab, 0x3c, 0x7f, 0x40, 0x99, 0xda, 0xed, 0x77, 0x83, 0x50, 0xc4, 0x39, 0xa4, 0xd8, 0xd9, 0x61, 0x21, 0xc3, 0x3d, 0x44, 0xc5, 0x6a, 0xce, 0xbd, 0x5f, 0x90, 0xab, 0x83, 0x84, 0xc8, 0xee, 0x54, 0x76, 0x77, 0xde, 0xfb, 0x11, 0x00, 0x00, 0xff, 0xff, - 0x26, 0x4c, 0xd8, 0xb9, 0x0b, 0x06, 0x00, 0x00, + 0x92, 0x85, 0x56, 0x02, 0x0b, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -474,16 +474,16 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { - // RegisterCadanceContract defines the endpoint for - // registering a new cadance contract . - RegisterCadanceContract(ctx context.Context, in *MsgRegisterCadanceContract, opts ...grpc.CallOption) (*MsgRegisterCadanceContractResponse, error) - // UnregisterCadanceContract defines the endpoint for - // unregistering a cadance contract . - UnregisterCadanceContract(ctx context.Context, in *MsgUnregisterCadanceContract, opts ...grpc.CallOption) (*MsgUnregisterCadanceContractResponse, error) - // UnjailCadanceContract defines the endpoint for - // unjailing a cadance contract . - UnjailCadanceContract(ctx context.Context, in *MsgUnjailCadanceContract, opts ...grpc.CallOption) (*MsgUnjailCadanceContractResponse, error) - // UpdateParams defines a governance operation for updating the x/cadance module + // RegisterCadenceContract defines the endpoint for + // registering a new cadence contract . + RegisterCadenceContract(ctx context.Context, in *MsgRegisterCadenceContract, opts ...grpc.CallOption) (*MsgRegisterCadenceContractResponse, error) + // UnregisterCadenceContract defines the endpoint for + // unregistering a cadence contract . + UnregisterCadenceContract(ctx context.Context, in *MsgUnregisterCadenceContract, opts ...grpc.CallOption) (*MsgUnregisterCadenceContractResponse, error) + // UnjailCadenceContract defines the endpoint for + // unjailing a cadence contract . + UnjailCadenceContract(ctx context.Context, in *MsgUnjailCadenceContract, opts ...grpc.CallOption) (*MsgUnjailCadenceContractResponse, error) + // UpdateParams defines a governance operation for updating the x/cadence module // parameters. The authority is hard-coded to the x/gov module account. // // Since: cosmos-sdk 0.47 @@ -498,27 +498,27 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) RegisterCadanceContract(ctx context.Context, in *MsgRegisterCadanceContract, opts ...grpc.CallOption) (*MsgRegisterCadanceContractResponse, error) { - out := new(MsgRegisterCadanceContractResponse) - err := c.cc.Invoke(ctx, "/bitsong.cadance.v1.Msg/RegisterCadanceContract", in, out, opts...) +func (c *msgClient) RegisterCadenceContract(ctx context.Context, in *MsgRegisterCadenceContract, opts ...grpc.CallOption) (*MsgRegisterCadenceContractResponse, error) { + out := new(MsgRegisterCadenceContractResponse) + err := c.cc.Invoke(ctx, "/bitsong.cadence.v1.Msg/RegisterCadenceContract", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *msgClient) UnregisterCadanceContract(ctx context.Context, in *MsgUnregisterCadanceContract, opts ...grpc.CallOption) (*MsgUnregisterCadanceContractResponse, error) { - out := new(MsgUnregisterCadanceContractResponse) - err := c.cc.Invoke(ctx, "/bitsong.cadance.v1.Msg/UnregisterCadanceContract", in, out, opts...) +func (c *msgClient) UnregisterCadenceContract(ctx context.Context, in *MsgUnregisterCadenceContract, opts ...grpc.CallOption) (*MsgUnregisterCadenceContractResponse, error) { + out := new(MsgUnregisterCadenceContractResponse) + err := c.cc.Invoke(ctx, "/bitsong.cadence.v1.Msg/UnregisterCadenceContract", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *msgClient) UnjailCadanceContract(ctx context.Context, in *MsgUnjailCadanceContract, opts ...grpc.CallOption) (*MsgUnjailCadanceContractResponse, error) { - out := new(MsgUnjailCadanceContractResponse) - err := c.cc.Invoke(ctx, "/bitsong.cadance.v1.Msg/UnjailCadanceContract", in, out, opts...) +func (c *msgClient) UnjailCadenceContract(ctx context.Context, in *MsgUnjailCadenceContract, opts ...grpc.CallOption) (*MsgUnjailCadenceContractResponse, error) { + out := new(MsgUnjailCadenceContractResponse) + err := c.cc.Invoke(ctx, "/bitsong.cadence.v1.Msg/UnjailCadenceContract", in, out, opts...) if err != nil { return nil, err } @@ -527,7 +527,7 @@ func (c *msgClient) UnjailCadanceContract(ctx context.Context, in *MsgUnjailCada func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { out := new(MsgUpdateParamsResponse) - err := c.cc.Invoke(ctx, "/bitsong.cadance.v1.Msg/UpdateParams", in, out, opts...) + err := c.cc.Invoke(ctx, "/bitsong.cadence.v1.Msg/UpdateParams", in, out, opts...) if err != nil { return nil, err } @@ -536,16 +536,16 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts // MsgServer is the server API for Msg service. type MsgServer interface { - // RegisterCadanceContract defines the endpoint for - // registering a new cadance contract . - RegisterCadanceContract(context.Context, *MsgRegisterCadanceContract) (*MsgRegisterCadanceContractResponse, error) - // UnregisterCadanceContract defines the endpoint for - // unregistering a cadance contract . - UnregisterCadanceContract(context.Context, *MsgUnregisterCadanceContract) (*MsgUnregisterCadanceContractResponse, error) - // UnjailCadanceContract defines the endpoint for - // unjailing a cadance contract . - UnjailCadanceContract(context.Context, *MsgUnjailCadanceContract) (*MsgUnjailCadanceContractResponse, error) - // UpdateParams defines a governance operation for updating the x/cadance module + // RegisterCadenceContract defines the endpoint for + // registering a new cadence contract . + RegisterCadenceContract(context.Context, *MsgRegisterCadenceContract) (*MsgRegisterCadenceContractResponse, error) + // UnregisterCadenceContract defines the endpoint for + // unregistering a cadence contract . + UnregisterCadenceContract(context.Context, *MsgUnregisterCadenceContract) (*MsgUnregisterCadenceContractResponse, error) + // UnjailCadenceContract defines the endpoint for + // unjailing a cadence contract . + UnjailCadenceContract(context.Context, *MsgUnjailCadenceContract) (*MsgUnjailCadenceContractResponse, error) + // UpdateParams defines a governance operation for updating the x/cadence module // parameters. The authority is hard-coded to the x/gov module account. // // Since: cosmos-sdk 0.47 @@ -556,14 +556,14 @@ type MsgServer interface { type UnimplementedMsgServer struct { } -func (*UnimplementedMsgServer) RegisterCadanceContract(ctx context.Context, req *MsgRegisterCadanceContract) (*MsgRegisterCadanceContractResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RegisterCadanceContract not implemented") +func (*UnimplementedMsgServer) RegisterCadenceContract(ctx context.Context, req *MsgRegisterCadenceContract) (*MsgRegisterCadenceContractResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterCadenceContract not implemented") } -func (*UnimplementedMsgServer) UnregisterCadanceContract(ctx context.Context, req *MsgUnregisterCadanceContract) (*MsgUnregisterCadanceContractResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UnregisterCadanceContract not implemented") +func (*UnimplementedMsgServer) UnregisterCadenceContract(ctx context.Context, req *MsgUnregisterCadenceContract) (*MsgUnregisterCadenceContractResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnregisterCadenceContract not implemented") } -func (*UnimplementedMsgServer) UnjailCadanceContract(ctx context.Context, req *MsgUnjailCadanceContract) (*MsgUnjailCadanceContractResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UnjailCadanceContract not implemented") +func (*UnimplementedMsgServer) UnjailCadenceContract(ctx context.Context, req *MsgUnjailCadenceContract) (*MsgUnjailCadenceContractResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnjailCadenceContract not implemented") } func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") @@ -573,56 +573,56 @@ func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } -func _Msg_RegisterCadanceContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRegisterCadanceContract) +func _Msg_RegisterCadenceContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRegisterCadenceContract) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).RegisterCadanceContract(ctx, in) + return srv.(MsgServer).RegisterCadenceContract(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/bitsong.cadance.v1.Msg/RegisterCadanceContract", + FullMethod: "/bitsong.cadence.v1.Msg/RegisterCadenceContract", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RegisterCadanceContract(ctx, req.(*MsgRegisterCadanceContract)) + return srv.(MsgServer).RegisterCadenceContract(ctx, req.(*MsgRegisterCadenceContract)) } return interceptor(ctx, in, info, handler) } -func _Msg_UnregisterCadanceContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUnregisterCadanceContract) +func _Msg_UnregisterCadenceContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUnregisterCadenceContract) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).UnregisterCadanceContract(ctx, in) + return srv.(MsgServer).UnregisterCadenceContract(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/bitsong.cadance.v1.Msg/UnregisterCadanceContract", + FullMethod: "/bitsong.cadence.v1.Msg/UnregisterCadenceContract", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UnregisterCadanceContract(ctx, req.(*MsgUnregisterCadanceContract)) + return srv.(MsgServer).UnregisterCadenceContract(ctx, req.(*MsgUnregisterCadenceContract)) } return interceptor(ctx, in, info, handler) } -func _Msg_UnjailCadanceContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUnjailCadanceContract) +func _Msg_UnjailCadenceContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUnjailCadenceContract) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).UnjailCadanceContract(ctx, in) + return srv.(MsgServer).UnjailCadenceContract(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/bitsong.cadance.v1.Msg/UnjailCadanceContract", + FullMethod: "/bitsong.cadence.v1.Msg/UnjailCadenceContract", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UnjailCadanceContract(ctx, req.(*MsgUnjailCadanceContract)) + return srv.(MsgServer).UnjailCadenceContract(ctx, req.(*MsgUnjailCadenceContract)) } return interceptor(ctx, in, info, handler) } @@ -637,7 +637,7 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/bitsong.cadance.v1.Msg/UpdateParams", + FullMethod: "/bitsong.cadence.v1.Msg/UpdateParams", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) @@ -647,20 +647,20 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in var Msg_serviceDesc = _Msg_serviceDesc var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "bitsong.cadance.v1.Msg", + ServiceName: "bitsong.cadence.v1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "RegisterCadanceContract", - Handler: _Msg_RegisterCadanceContract_Handler, + MethodName: "RegisterCadenceContract", + Handler: _Msg_RegisterCadenceContract_Handler, }, { - MethodName: "UnregisterCadanceContract", - Handler: _Msg_UnregisterCadanceContract_Handler, + MethodName: "UnregisterCadenceContract", + Handler: _Msg_UnregisterCadenceContract_Handler, }, { - MethodName: "UnjailCadanceContract", - Handler: _Msg_UnjailCadanceContract_Handler, + MethodName: "UnjailCadenceContract", + Handler: _Msg_UnjailCadenceContract_Handler, }, { MethodName: "UpdateParams", @@ -668,10 +668,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "bitsong/cadance/v1/tx.proto", + Metadata: "bitsong/cadence/v1/tx.proto", } -func (m *MsgRegisterCadanceContract) Marshal() (dAtA []byte, err error) { +func (m *MsgRegisterCadenceContract) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -681,12 +681,12 @@ func (m *MsgRegisterCadanceContract) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgRegisterCadanceContract) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgRegisterCadenceContract) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgRegisterCadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgRegisterCadenceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -708,7 +708,7 @@ func (m *MsgRegisterCadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } -func (m *MsgRegisterCadanceContractResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgRegisterCadenceContractResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -718,12 +718,12 @@ func (m *MsgRegisterCadanceContractResponse) Marshal() (dAtA []byte, err error) return dAtA[:n], nil } -func (m *MsgRegisterCadanceContractResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgRegisterCadenceContractResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgRegisterCadanceContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgRegisterCadenceContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -731,7 +731,7 @@ func (m *MsgRegisterCadanceContractResponse) MarshalToSizedBuffer(dAtA []byte) ( return len(dAtA) - i, nil } -func (m *MsgUnregisterCadanceContract) Marshal() (dAtA []byte, err error) { +func (m *MsgUnregisterCadenceContract) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -741,12 +741,12 @@ func (m *MsgUnregisterCadanceContract) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUnregisterCadanceContract) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUnregisterCadenceContract) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUnregisterCadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUnregisterCadenceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -768,7 +768,7 @@ func (m *MsgUnregisterCadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } -func (m *MsgUnregisterCadanceContractResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgUnregisterCadenceContractResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -778,12 +778,12 @@ func (m *MsgUnregisterCadanceContractResponse) Marshal() (dAtA []byte, err error return dAtA[:n], nil } -func (m *MsgUnregisterCadanceContractResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUnregisterCadenceContractResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUnregisterCadanceContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUnregisterCadenceContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -791,7 +791,7 @@ func (m *MsgUnregisterCadanceContractResponse) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } -func (m *MsgUnjailCadanceContract) Marshal() (dAtA []byte, err error) { +func (m *MsgUnjailCadenceContract) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -801,12 +801,12 @@ func (m *MsgUnjailCadanceContract) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUnjailCadanceContract) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUnjailCadenceContract) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUnjailCadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUnjailCadenceContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -828,7 +828,7 @@ func (m *MsgUnjailCadanceContract) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } -func (m *MsgUnjailCadanceContractResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgUnjailCadenceContractResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -838,12 +838,12 @@ func (m *MsgUnjailCadanceContractResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUnjailCadanceContractResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUnjailCadenceContractResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUnjailCadanceContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUnjailCadenceContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -925,7 +925,7 @@ func encodeVarintTx(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *MsgRegisterCadanceContract) Size() (n int) { +func (m *MsgRegisterCadenceContract) Size() (n int) { if m == nil { return 0 } @@ -942,7 +942,7 @@ func (m *MsgRegisterCadanceContract) Size() (n int) { return n } -func (m *MsgRegisterCadanceContractResponse) Size() (n int) { +func (m *MsgRegisterCadenceContractResponse) Size() (n int) { if m == nil { return 0 } @@ -951,7 +951,7 @@ func (m *MsgRegisterCadanceContractResponse) Size() (n int) { return n } -func (m *MsgUnregisterCadanceContract) Size() (n int) { +func (m *MsgUnregisterCadenceContract) Size() (n int) { if m == nil { return 0 } @@ -968,7 +968,7 @@ func (m *MsgUnregisterCadanceContract) Size() (n int) { return n } -func (m *MsgUnregisterCadanceContractResponse) Size() (n int) { +func (m *MsgUnregisterCadenceContractResponse) Size() (n int) { if m == nil { return 0 } @@ -977,7 +977,7 @@ func (m *MsgUnregisterCadanceContractResponse) Size() (n int) { return n } -func (m *MsgUnjailCadanceContract) Size() (n int) { +func (m *MsgUnjailCadenceContract) Size() (n int) { if m == nil { return 0 } @@ -994,7 +994,7 @@ func (m *MsgUnjailCadanceContract) Size() (n int) { return n } -func (m *MsgUnjailCadanceContractResponse) Size() (n int) { +func (m *MsgUnjailCadenceContractResponse) Size() (n int) { if m == nil { return 0 } @@ -1033,7 +1033,7 @@ func sovTx(x uint64) (n int) { func sozTx(x uint64) (n int) { return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *MsgRegisterCadanceContract) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterCadenceContract) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1056,10 +1056,10 @@ func (m *MsgRegisterCadanceContract) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRegisterCadanceContract: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterCadenceContract: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRegisterCadanceContract: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterCadenceContract: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1147,7 +1147,7 @@ func (m *MsgRegisterCadanceContract) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRegisterCadanceContractResponse) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterCadenceContractResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1170,10 +1170,10 @@ func (m *MsgRegisterCadanceContractResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRegisterCadanceContractResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterCadenceContractResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRegisterCadanceContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterCadenceContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -1197,7 +1197,7 @@ func (m *MsgRegisterCadanceContractResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUnregisterCadanceContract) Unmarshal(dAtA []byte) error { +func (m *MsgUnregisterCadenceContract) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1220,10 +1220,10 @@ func (m *MsgUnregisterCadanceContract) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUnregisterCadanceContract: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUnregisterCadenceContract: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUnregisterCadanceContract: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUnregisterCadenceContract: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1311,7 +1311,7 @@ func (m *MsgUnregisterCadanceContract) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUnregisterCadanceContractResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUnregisterCadenceContractResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1334,10 +1334,10 @@ func (m *MsgUnregisterCadanceContractResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUnregisterCadanceContractResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUnregisterCadenceContractResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUnregisterCadanceContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUnregisterCadenceContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -1361,7 +1361,7 @@ func (m *MsgUnregisterCadanceContractResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUnjailCadanceContract) Unmarshal(dAtA []byte) error { +func (m *MsgUnjailCadenceContract) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1384,10 +1384,10 @@ func (m *MsgUnjailCadanceContract) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUnjailCadanceContract: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUnjailCadenceContract: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUnjailCadanceContract: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUnjailCadenceContract: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1475,7 +1475,7 @@ func (m *MsgUnjailCadanceContract) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUnjailCadanceContractResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUnjailCadenceContractResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1498,10 +1498,10 @@ func (m *MsgUnjailCadanceContractResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUnjailCadanceContractResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUnjailCadenceContractResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUnjailCadanceContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUnjailCadenceContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: diff --git a/x/cadance/types/tx.pb.gw.go b/x/cadence/types/tx.pb.gw.go similarity index 76% rename from x/cadance/types/tx.pb.gw.go rename to x/cadence/types/tx.pb.gw.go index 1721476b..66f6d3a9 100644 --- a/x/cadance/types/tx.pb.gw.go +++ b/x/cadence/types/tx.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: bitsong/cadance/v1/tx.proto +// source: bitsong/cadence/v1/tx.proto /* Package types is a reverse proxy. @@ -34,109 +34,109 @@ var _ = descriptor.ForMessage var _ = metadata.Join var ( - filter_Msg_RegisterCadanceContract_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + filter_Msg_RegisterCadenceContract_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) -func request_Msg_RegisterCadanceContract_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterCadanceContract +func request_Msg_RegisterCadenceContract_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgRegisterCadenceContract var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterCadanceContract_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterCadenceContract_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.RegisterCadanceContract(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.RegisterCadenceContract(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Msg_RegisterCadanceContract_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterCadanceContract +func local_request_Msg_RegisterCadenceContract_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgRegisterCadenceContract var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterCadanceContract_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterCadenceContract_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.RegisterCadanceContract(ctx, &protoReq) + msg, err := server.RegisterCadenceContract(ctx, &protoReq) return msg, metadata, err } var ( - filter_Msg_UnregisterCadanceContract_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + filter_Msg_UnregisterCadenceContract_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) -func request_Msg_UnregisterCadanceContract_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgUnregisterCadanceContract +func request_Msg_UnregisterCadenceContract_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgUnregisterCadenceContract var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UnregisterCadanceContract_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UnregisterCadenceContract_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.UnregisterCadanceContract(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.UnregisterCadenceContract(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Msg_UnregisterCadanceContract_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgUnregisterCadanceContract +func local_request_Msg_UnregisterCadenceContract_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgUnregisterCadenceContract var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UnregisterCadanceContract_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UnregisterCadenceContract_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.UnregisterCadanceContract(ctx, &protoReq) + msg, err := server.UnregisterCadenceContract(ctx, &protoReq) return msg, metadata, err } var ( - filter_Msg_UnjailCadanceContract_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + filter_Msg_UnjailCadenceContract_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) -func request_Msg_UnjailCadanceContract_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgUnjailCadanceContract +func request_Msg_UnjailCadenceContract_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgUnjailCadenceContract var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UnjailCadanceContract_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UnjailCadenceContract_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.UnjailCadanceContract(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.UnjailCadenceContract(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Msg_UnjailCadanceContract_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgUnjailCadanceContract +func local_request_Msg_UnjailCadenceContract_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgUnjailCadenceContract var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UnjailCadanceContract_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UnjailCadenceContract_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.UnjailCadanceContract(ctx, &protoReq) + msg, err := server.UnjailCadenceContract(ctx, &protoReq) return msg, metadata, err } @@ -147,7 +147,7 @@ func local_request_Msg_UnjailCadanceContract_0(ctx context.Context, marshaler ru // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMsgHandlerFromEndpoint instead. func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MsgServer) error { - mux.Handle("POST", pattern_Msg_RegisterCadanceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Msg_RegisterCadenceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -158,7 +158,7 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Msg_RegisterCadanceContract_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Msg_RegisterCadenceContract_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -166,11 +166,11 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server return } - forward_Msg_RegisterCadanceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Msg_RegisterCadenceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_Msg_UnregisterCadanceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Msg_UnregisterCadenceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -181,7 +181,7 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Msg_UnregisterCadanceContract_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Msg_UnregisterCadenceContract_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -189,11 +189,11 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server return } - forward_Msg_UnregisterCadanceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Msg_UnregisterCadenceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_Msg_UnjailCadanceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Msg_UnjailCadenceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -204,7 +204,7 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Msg_UnjailCadanceContract_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Msg_UnjailCadenceContract_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -212,7 +212,7 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server return } - forward_Msg_UnjailCadanceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Msg_UnjailCadenceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -257,7 +257,7 @@ func RegisterMsgHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.C // "MsgClient" to call the correct interceptors. func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client MsgClient) error { - mux.Handle("POST", pattern_Msg_RegisterCadanceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Msg_RegisterCadenceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -266,18 +266,18 @@ func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Msg_RegisterCadanceContract_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Msg_RegisterCadenceContract_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Msg_RegisterCadanceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Msg_RegisterCadenceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_Msg_UnregisterCadanceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Msg_UnregisterCadenceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -286,18 +286,18 @@ func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Msg_UnregisterCadanceContract_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Msg_UnregisterCadenceContract_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Msg_UnregisterCadanceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Msg_UnregisterCadenceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_Msg_UnjailCadanceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Msg_UnjailCadenceContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -306,14 +306,14 @@ func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Msg_UnjailCadanceContract_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Msg_UnjailCadenceContract_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Msg_UnjailCadanceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Msg_UnjailCadenceContract_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -321,17 +321,17 @@ func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client } var ( - pattern_Msg_RegisterCadanceContract_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"bitsong", "cadance", "v1", "tx", "register"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Msg_RegisterCadenceContract_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"bitsong", "cadence", "v1", "tx", "register"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Msg_UnregisterCadanceContract_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"bitsong", "cadance", "v1", "tx", "unregister"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Msg_UnregisterCadenceContract_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"bitsong", "cadence", "v1", "tx", "unregister"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Msg_UnjailCadanceContract_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"bitsong", "cadance", "v1", "tx", "unjail"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Msg_UnjailCadenceContract_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"bitsong", "cadence", "v1", "tx", "unjail"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( - forward_Msg_RegisterCadanceContract_0 = runtime.ForwardResponseMessage + forward_Msg_RegisterCadenceContract_0 = runtime.ForwardResponseMessage - forward_Msg_UnregisterCadanceContract_0 = runtime.ForwardResponseMessage + forward_Msg_UnregisterCadenceContract_0 = runtime.ForwardResponseMessage - forward_Msg_UnjailCadanceContract_0 = runtime.ForwardResponseMessage + forward_Msg_UnjailCadenceContract_0 = runtime.ForwardResponseMessage ) diff --git a/x/fantoken/handler_test.go b/x/fantoken/handler_test.go index d42ba0b8..c775ce96 100644 --- a/x/fantoken/handler_test.go +++ b/x/fantoken/handler_test.go @@ -23,8 +23,8 @@ type HandlerTestSuite struct { func (suite *HandlerTestSuite) SetupTest() { suite.Setup() - // suite.ctx = suite.app.BaseApp.NewContext(false) - suite.govHandler = params.NewParamChangeProposalHandler(suite.App.AppKeepers.ParamsKeeper) + // suite.ctx = suite.App.BaseApp.NewContext(false) + suite.govHandler = params.NewParamChangeProposalHandler(suite.App.ParamsKeeper) } func TestHandlerTestSuite(t *testing.T) { @@ -52,7 +52,7 @@ func (suite *HandlerTestSuite) TestParamChangeProposal() { func (suite *HandlerTestSuite) TestProposalHandlerPassed() { - params := suite.App.AppKeepers.FanTokenKeeper.GetParamSet(suite.Ctx) + params := suite.App.FanTokenKeeper.GetParamSet(suite.Ctx) require.Equal(suite.T(), params, fantokentypes.DefaultParams()) newIssueFee := sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(1)) @@ -67,10 +67,10 @@ func (suite *HandlerTestSuite) TestProposalHandlerPassed() { newBurnFee, ) - h := fantoken.NewProposalHandler(suite.App.AppKeepers.FanTokenKeeper) + h := fantoken.NewProposalHandler(suite.App.FanTokenKeeper) require.NoError(suite.T(), h(suite.Ctx, proposal)) - params = suite.App.AppKeepers.FanTokenKeeper.GetParamSet(suite.Ctx) + params = suite.App.FanTokenKeeper.GetParamSet(suite.Ctx) require.Equal(suite.T(), newIssueFee, params.IssueFee) require.Equal(suite.T(), newMintFee, params.MintFee) require.Equal(suite.T(), newBurnFee, params.BurnFee) @@ -78,7 +78,7 @@ func (suite *HandlerTestSuite) TestProposalHandlerPassed() { func (suite *HandlerTestSuite) TestProposalHandlerFailed() { - params := suite.App.AppKeepers.FanTokenKeeper.GetParamSet(suite.Ctx) + params := suite.App.FanTokenKeeper.GetParamSet(suite.Ctx) require.Equal(suite.T(), params, fantokentypes.DefaultParams()) newIssueFee := sdk.Coin{ @@ -96,6 +96,6 @@ func (suite *HandlerTestSuite) TestProposalHandlerFailed() { newBurnFee, ) - h := fantoken.NewProposalHandler(suite.App.AppKeepers.FanTokenKeeper) + h := fantoken.NewProposalHandler(suite.App.FanTokenKeeper) require.Error(suite.T(), h(suite.Ctx, proposal)) } diff --git a/x/fantoken/keeper/fees.go b/x/fantoken/keeper/fees.go index 1fad9bc1..6e949eb9 100644 --- a/x/fantoken/keeper/fees.go +++ b/x/fantoken/keeper/fees.go @@ -1,4 +1,4 @@ -//nolint +// nolint package keeper import ( @@ -15,7 +15,7 @@ func (k Keeper) deductIssueFee(ctx sdk.Context, authority sdk.AccAddress) error } // send issue fantoken fee to community pool - return k.distrKeeper.FundCommunityPool(ctx, sdk.Coins{params.IssueFee}, authority) + return k.poolKeeper.FundCommunityPool(ctx, sdk.Coins{params.IssueFee}, authority) } // deductMintFee performs fee handling for minting token @@ -28,7 +28,7 @@ func (k Keeper) deductMintFee(ctx sdk.Context, authority sdk.AccAddress) error { } // send Mint fantoken fee to community pool - return k.distrKeeper.FundCommunityPool(ctx, sdk.Coins{params.MintFee}, authority) + return k.poolKeeper.FundCommunityPool(ctx, sdk.Coins{params.MintFee}, authority) } // deductBurnFee performs fee handling for burning token @@ -41,5 +41,5 @@ func (k Keeper) deductBurnFee(ctx sdk.Context, authority sdk.AccAddress) error { } // send Burn fantoken fee to community pool - return k.distrKeeper.FundCommunityPool(ctx, sdk.Coins{params.BurnFee}, authority) + return k.poolKeeper.FundCommunityPool(ctx, sdk.Coins{params.BurnFee}, authority) } diff --git a/x/fantoken/keeper/keeper.go b/x/fantoken/keeper/keeper.go index 70fc0e88..d2478ad7 100644 --- a/x/fantoken/keeper/keeper.go +++ b/x/fantoken/keeper/keeper.go @@ -3,6 +3,7 @@ package keeper import ( "fmt" + "cosmossdk.io/collections" "cosmossdk.io/errors" "cosmossdk.io/log" "cosmossdk.io/math" @@ -18,8 +19,9 @@ type Keeper struct { cdc codec.Codec // accountKeeper types.AccountKeeper bankKeeper types.BankKeeper - distrKeeper types.DistrKeeper + poolKeeper types.ProtocolPoolKeeper paramSpace types.ParamSubspace + Schema collections.Schema blockedAddrs map[string]bool } @@ -29,7 +31,7 @@ func NewKeeper( paramSpace types.ParamSubspace, ak types.AccountKeeper, bankKeeper types.BankKeeper, - distrKeeper types.DistrKeeper, + poolKeeper types.ProtocolPoolKeeper, blockedAddrs map[string]bool, ) Keeper { if addr := ak.GetModuleAddress(types.ModuleName); addr == nil { @@ -46,7 +48,7 @@ func NewKeeper( cdc: cdc, paramSpace: paramSpace, bankKeeper: bankKeeper, - distrKeeper: distrKeeper, + poolKeeper: poolKeeper, blockedAddrs: blockedAddrs, } } diff --git a/x/fantoken/keeper/keeper_test.go b/x/fantoken/keeper/keeper_test.go index 12fc55f3..9f8ab0d9 100644 --- a/x/fantoken/keeper/keeper_test.go +++ b/x/fantoken/keeper/keeper_test.go @@ -43,9 +43,9 @@ func (suite *KeeperTestSuite) SetupTest() { suite.Setup() app := suite.App - suite.keeper = app.AppKeepers.FanTokenKeeper - suite.bk = app.AppKeepers.BankKeeper - suite.app = app + suite.keeper = app.FanTokenKeeper + suite.bk = app.BankKeeper + suite.App = app suite.ctx = suite.Ctx // set params diff --git a/x/fantoken/module.go b/x/fantoken/module.go index d791d629..0a2d340e 100644 --- a/x/fantoken/module.go +++ b/x/fantoken/module.go @@ -8,19 +8,20 @@ import ( "cosmossdk.io/core/appmodule" "cosmossdk.io/math" - // simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" "github.com/bitsongofficial/go-bitsong/x/fantoken/client/cli" "github.com/bitsongofficial/go-bitsong/x/fantoken/keeper" + "github.com/bitsongofficial/go-bitsong/x/fantoken/simulation" "github.com/bitsongofficial/go-bitsong/x/fantoken/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" ) var ( @@ -121,6 +122,21 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { types.RegisterQueryServer(cfg.QueryServer(), am.keeper) } +// GenerateGenesisState creates a randomized GenState of the epochs module. +func (AppModule) GenerateGenesisState(simState *module.SimulationState) { + simulation.RandomizedGenState(simState) +} + +// RegisterStoreDecoder registers a decoder for epochs module's types +func (am AppModule) RegisterStoreDecoder(sdr simtypes.StoreDecoderRegistry) { + sdr[types.StoreKey] = simtypes.NewStoreDecoderFuncFromCollectionsSchema(am.keeper.Schema) +} + +// WeightedOperations is a no-op. +func (am AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation { + return nil +} + // RegisterInvariants registers the fantoken module invariants. func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} diff --git a/x/fantoken/simulation/genesis.go b/x/fantoken/simulation/genesis.go new file mode 100644 index 00000000..f7ac3e0a --- /dev/null +++ b/x/fantoken/simulation/genesis.go @@ -0,0 +1,86 @@ +package simulation + +import ( + "fmt" + "strings" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/types/simulation" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + + "github.com/bitsongofficial/go-bitsong/x/fantoken/types" +) + +// RandomizedGenState generates a random GenesisState for distribution +func RandomizedGenState(simState *module.SimulationState) { + // 1. Randomize module parameters + bondDenom := simState.BondDenom + + issueFee := sdk.Coin{ + Denom: bondDenom, + Amount: math.NewInt(int64(simulation.RandIntBetween(simState.Rand, 100, 1000000))), + } + mintFee := sdk.Coin{ + Denom: bondDenom, + Amount: math.NewInt(int64(simulation.RandIntBetween(simState.Rand, 10, 100000))), + } + burnFee := sdk.Coin{ + Denom: bondDenom, + Amount: math.NewInt(int64(simulation.RandIntBetween(simState.Rand, 10, 100000))), + } + + params := types.Params{ + IssueFee: issueFee, + MintFee: mintFee, + BurnFee: burnFee, + } + + // 2. Generate random fantokens + numFanTokens := simState.Rand.Intn(5) + 1 // 1 to 5 tokens + fanTokens := make([]types.FanToken, numFanTokens) + + for i := 0; i < numFanTokens; i++ { + denom := "ft" + simtypes.RandStringOfLength(simState.Rand, 6) + maxSupply := int64(simulation.RandIntBetween(simState.Rand, 1000, 10000000)) + + // Select a random account for minter + minterAcc := simState.Accounts[simState.Rand.Intn(len(simState.Accounts))] + minter := minterAcc.Address.String() + + // Random metadata + name := fmt.Sprintf("Random FanToken %d", i) + symbol := strings.ToUpper(simtypes.RandStringOfLength(simState.Rand, 4)) + + var uri string + if simState.Rand.Intn(2) == 0 { + uri = fmt.Sprintf("https://example.com/token/%s", simtypes.RandStringOfLength(simState.Rand, 8)) + } + + authorityAcc := simState.Accounts[simState.Rand.Intn(len(simState.Accounts))] + authority := authorityAcc.Address.String() + + metaData := types.Metadata{ + Name: name, + Symbol: symbol, + URI: uri, + Authority: authority, + } + + fanTokens[i] = types.FanToken{ + Denom: denom, + MaxSupply: math.NewInt(maxSupply), + Minter: minter, + MetaData: metaData, + } + } + + // 3. Construct and marshal the randomized genesis state + genesisState := &types.GenesisState{ + Params: params, + FanTokens: fanTokens, + } + + simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(genesisState) +} diff --git a/x/fantoken/types/expected_keepers.go b/x/fantoken/types/expected_keepers.go index 83bb1a0d..b5191e8b 100644 --- a/x/fantoken/types/expected_keepers.go +++ b/x/fantoken/types/expected_keepers.go @@ -7,7 +7,7 @@ import ( paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" ) -type DistrKeeper interface { +type ProtocolPoolKeeper interface { FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error } diff --git a/x/smart-account/ante/ante.go b/x/smart-account/ante/ante.go index 39fd816c..7ae487fd 100644 --- a/x/smart-account/ante/ante.go +++ b/x/smart-account/ante/ante.go @@ -285,12 +285,12 @@ func (ad AuthenticatorDecorator) ValidateAuthenticatorFeePayer(ctx sdk.Context, if !bytes.Equal(feePayer, signers[0]) { // check if feegrant exists - if feeGrant, err := ad.smartAccountKeeper.FeegrantKeeper.GetAllowance(ctx, feePayer, signers[0]); err != nil || feeGrant == nil { - return errorsmod.Wrap(sdkerrors.ErrUnauthorized, "fee payer must be the first signer, or signer must have an active feegrant allowance from feepayer") - } else if _, err := feeGrant.Accept(ctx, feeTx.GetFee(), msgs); err != nil { - return errorsmod.Wrap(sdkerrors.ErrUnauthorized, "fee grant not accepted") + return errorsmod.Wrap(sdkerrors.ErrUnauthorized, "fee payer must be the first signer, or signer must have an active feegrant allowance from feepayer") + // if feeGrant, err := ad.smartAccountKeeper.FeegrantKeeper.GetAllowance(ctx, feePayer, signers[0]); err != nil || feeGrant == nil { + // } else if _, err := feeGrant.Accept(ctx, feeTx.GetFee(), msgs); err != nil { + // return errorsmod.Wrap(sdkerrors.ErrUnauthorized, "fee grant not accepted") - } + // } } return nil } diff --git a/x/smart-account/ante/ante_test.go b/x/smart-account/ante/ante_test.go index 4d8a6329..9990f8e1 100644 --- a/x/smart-account/ante/ante_test.go +++ b/x/smart-account/ante/ante_test.go @@ -83,12 +83,12 @@ func (s *AuthenticatorAnteSuite) SetupTest() { s.TestAccAddress = append(s.TestAccAddress, accAddress) } - deductFeeDecorator := sdkante.NewDeductFeeDecorator(s.BitsongApp.AppKeepers.AccountKeeper, s.BitsongApp.AppKeepers.BankKeeper, s.BitsongApp.AppKeepers.FeeGrantKeeper, nil) + deductFeeDecorator := sdkante.NewDeductFeeDecorator(s.BitsongApp.AccountKeeper, s.BitsongApp.BankKeeper, s.BitsongApp.FeeGrantKeeper, nil) s.AuthenticatorDecorator = ante.NewAuthenticatorDecorator( s.BitsongApp.AppCodec(), - s.BitsongApp.AppKeepers.SmartAccountKeeper, - s.BitsongApp.AppKeepers.AccountKeeper, + s.BitsongApp.SmartAccountKeeper, + s.BitsongApp.AccountKeeper, s.EncodingConfig.TxConfig.SignModeHandler(), deductFeeDecorator, ) @@ -144,7 +144,7 @@ func (s *AuthenticatorAnteSuite) TestSignatureVerificationWithAuthenticatorInSto // Ensure the feepayer has funds fees := sdk.Coins{sdk.NewInt64Coin(bitsongToken, 2500)} feePayer := s.TestPrivKeys[0].PubKey().Address() - err := testutil.FundAccount(s.Ctx, s.BitsongApp.AppKeepers.BankKeeper, feePayer.Bytes(), fees) + err := testutil.FundAccount(s.Ctx, s.BitsongApp.BankKeeper, feePayer.Bytes(), fees) s.Require().NoError(err) // Create a test messages for signing @@ -160,7 +160,7 @@ func (s *AuthenticatorAnteSuite) TestSignatureVerificationWithAuthenticatorInSto } feeCoins := sdk.Coins{sdk.NewInt64Coin(bitsongToken, 2500)} - id, err := s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator( + id, err := s.BitsongApp.SmartAccountKeeper.AddAuthenticator( s.Ctx, s.TestAccAddress[0], "SignatureVerification", @@ -169,7 +169,7 @@ func (s *AuthenticatorAnteSuite) TestSignatureVerificationWithAuthenticatorInSto s.Require().NoError(err) s.Require().Equal(id, uint64(1), "Adding authenticator returning incorrect id") - id, err = s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator( + id, err = s.BitsongApp.SmartAccountKeeper.AddAuthenticator( s.Ctx, s.TestAccAddress[1], "SignatureVerification", @@ -203,14 +203,14 @@ func (s *AuthenticatorAnteSuite) TestSignatureVerificationOutOfGas() { coins := sdk.Coins{sdk.NewInt64Coin(bitsongToken, 2500)} feeCoins := sdk.Coins{sdk.NewInt64Coin(bitsongToken, 2500)} - maxUnauthenticatedGasLimit := s.BitsongApp.AppKeepers.SmartAccountKeeper.GetParams(s.Ctx).MaximumUnauthenticatedGas + maxUnauthenticatedGasLimit := s.BitsongApp.SmartAccountKeeper.GetParams(s.Ctx).MaximumUnauthenticatedGas specifiedGasLimit := uint64(300_000) // Ensure the feepayers have funds fees := sdk.Coins{sdk.NewInt64Coin(bitsongToken, 2500)} - err := testutil.FundAccount(s.Ctx, s.BitsongApp.AppKeepers.BankKeeper, s.TestPrivKeys[0].PubKey().Address().Bytes(), fees) + err := testutil.FundAccount(s.Ctx, s.BitsongApp.BankKeeper, s.TestPrivKeys[0].PubKey().Address().Bytes(), fees) s.Require().NoError(err) - err = testutil.FundAccount(s.Ctx, s.BitsongApp.AppKeepers.BankKeeper, s.TestPrivKeys[1].PubKey().Address().Bytes(), fees) + err = testutil.FundAccount(s.Ctx, s.BitsongApp.BankKeeper, s.TestPrivKeys[1].PubKey().Address().Bytes(), fees) s.Require().NoError(err) // This message will have several authenticators for s.TestPrivKeys[0] and one for s.TestPrivKeys[1] at the end @@ -221,7 +221,7 @@ func (s *AuthenticatorAnteSuite) TestSignatureVerificationOutOfGas() { } // fee payer is authenticated - sigId, err := s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator( + sigId, err := s.BitsongApp.SmartAccountKeeper.AddAuthenticator( s.Ctx, s.TestAccAddress[1], "SignatureVerification", @@ -231,9 +231,9 @@ func (s *AuthenticatorAnteSuite) TestSignatureVerificationOutOfGas() { s.Require().Equal(sigId, uint64(1), "Adding authenticator returning incorrect id") alwaysHigher := testutils.TestingAuthenticator{Approve: testutils.Always, GasConsumption: int(maxUnauthenticatedGasLimit + 1)} - s.BitsongApp.AppKeepers.AuthenticatorManager.RegisterAuthenticator(alwaysHigher) + s.BitsongApp.AuthenticatorManager.RegisterAuthenticator(alwaysHigher) - excessGasId, err := s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator( + excessGasId, err := s.BitsongApp.SmartAccountKeeper.AddAuthenticator( s.Ctx, s.TestAccAddress[0], alwaysHigher.Type(), @@ -292,7 +292,7 @@ func (s *AuthenticatorAnteSuite) TestFeePayerGasComsumption() { // Ensure the feepayer has funds fees := sdk.Coins{sdk.NewInt64Coin(bitsongToken, 2500)} - err := testutil.FundAccount(s.Ctx, s.BitsongApp.AppKeepers.BankKeeper, s.TestPrivKeys[0].PubKey().Address().Bytes(), fees) + err := testutil.FundAccount(s.Ctx, s.BitsongApp.BankKeeper, s.TestPrivKeys[0].PubKey().Address().Bytes(), fees) s.Require().NoError(err) // Create two messages to ensure that the fee payer code path is reached twice @@ -309,7 +309,7 @@ func (s *AuthenticatorAnteSuite) TestFeePayerGasComsumption() { } // Add a signature verification authenticator to the account - sigId, err := s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator( + sigId, err := s.BitsongApp.SmartAccountKeeper.AddAuthenticator( s.Ctx, s.TestAccAddress[0], "SignatureVerification", @@ -319,7 +319,7 @@ func (s *AuthenticatorAnteSuite) TestFeePayerGasComsumption() { s.Require().Equal(sigId, uint64(1), "Adding authenticator returning incorrect id") // Check balances before transaction - balances := s.BitsongApp.AppKeepers.BankKeeper.GetBalance(s.Ctx, sdk.AccAddress(s.TestPrivKeys[0].PubKey().Address()), bitsongToken) + balances := s.BitsongApp.BankKeeper.GetBalance(s.Ctx, sdk.AccAddress(s.TestPrivKeys[0].PubKey().Address()), bitsongToken) s.Require().Equal(fees[0], balances, "Fees incorrect before transaction") tx, _ := GenTx(s.Ctx, s.EncodingConfig.TxConfig, []sdk.Msg{ @@ -336,7 +336,7 @@ func (s *AuthenticatorAnteSuite) TestFeePayerGasComsumption() { s.Require().NoError(err) // Check balances after transaction - balances = s.BitsongApp.AppKeepers.BankKeeper.GetBalance(s.Ctx, sdk.AccAddress(s.TestPrivKeys[0].PubKey().Address()), bitsongToken) + balances = s.BitsongApp.BankKeeper.GetBalance(s.Ctx, sdk.AccAddress(s.TestPrivKeys[0].PubKey().Address()), bitsongToken) emptyFees := sdk.NewInt64Coin(bitsongToken, 0) s.Require().Equal(emptyFees, balances, "Fees incorrect after transaction") } @@ -353,7 +353,7 @@ func (s *AuthenticatorAnteSuite) TestSpecificAuthenticator() { } feeCoins := sdk.Coins{sdk.NewInt64Coin(bitsongToken, 2500)} - sig1Id, err := s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator( + sig1Id, err := s.BitsongApp.SmartAccountKeeper.AddAuthenticator( s.Ctx, s.TestAccAddress[1], "SignatureVerification", @@ -362,7 +362,7 @@ func (s *AuthenticatorAnteSuite) TestSpecificAuthenticator() { s.Require().NoError(err) s.Require().Equal(sig1Id, uint64(1), "Adding authenticator returning incorrect id") - sig2Id, err := s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator( + sig2Id, err := s.BitsongApp.SmartAccountKeeper.AddAuthenticator( s.Ctx, s.TestAccAddress[1], "SignatureVerification", @@ -389,9 +389,9 @@ func (s *AuthenticatorAnteSuite) TestSpecificAuthenticator() { // Ensure the feepayer has funds fees := sdk.Coins{sdk.NewInt64Coin(bitsongToken, 2_500_000)} - err = testutil.FundAccount(s.Ctx, s.BitsongApp.AppKeepers.BankKeeper, s.TestPrivKeys[0].PubKey().Address().Bytes(), fees) + err = testutil.FundAccount(s.Ctx, s.BitsongApp.BankKeeper, s.TestPrivKeys[0].PubKey().Address().Bytes(), fees) s.Require().NoError(err) - err = testutil.FundAccount(s.Ctx, s.BitsongApp.AppKeepers.BankKeeper, s.TestPrivKeys[1].PubKey().Address().Bytes(), fees) + err = testutil.FundAccount(s.Ctx, s.BitsongApp.BankKeeper, s.TestPrivKeys[1].PubKey().Address().Bytes(), fees) s.Require().NoError(err) for _, tc := range testCases { diff --git a/x/smart-account/ante/circuit_breaker_test.go b/x/smart-account/ante/circuit_breaker_test.go index babda6d4..64a60991 100644 --- a/x/smart-account/ante/circuit_breaker_test.go +++ b/x/smart-account/ante/circuit_breaker_test.go @@ -132,16 +132,16 @@ func (s *AuthenticatorCircuitBreakerAnteSuite) TestCircuitBreakerAnte() { // Create a CircuitBreaker AnteDecorator cbd := ante.NewCircuitBreakerDecorator( - s.BitsongApp.AppKeepers.SmartAccountKeeper, + s.BitsongApp.SmartAccountKeeper, sdk.ChainAnteDecorators(mockTestAuthenticator), sdk.ChainAnteDecorators(mockTestClassic), ) anteHandler := sdk.ChainAnteDecorators(cbd) // Deactivate smart accounts - params := s.BitsongApp.AppKeepers.SmartAccountKeeper.GetParams(s.Ctx) + params := s.BitsongApp.SmartAccountKeeper.GetParams(s.Ctx) params.IsSmartAccountActive = false - s.BitsongApp.AppKeepers.SmartAccountKeeper.SetParams(s.Ctx, params) + s.BitsongApp.SmartAccountKeeper.SetParams(s.Ctx, params) // Here we test when smart accounts are deactivated ctx, err := anteHandler(s.Ctx, tx, false) @@ -149,9 +149,9 @@ func (s *AuthenticatorCircuitBreakerAnteSuite) TestCircuitBreakerAnte() { s.Require().Equal(int64(1), ctx.Priority(), "Should have disabled the full authentication flow") // Reactivate smart accounts - params = s.BitsongApp.AppKeepers.SmartAccountKeeper.GetParams(ctx) + params = s.BitsongApp.SmartAccountKeeper.GetParams(ctx) params.IsSmartAccountActive = true - s.BitsongApp.AppKeepers.SmartAccountKeeper.SetParams(ctx, params) + s.BitsongApp.SmartAccountKeeper.SetParams(ctx, params) // Here we test when smart accounts are active and there is not selected authenticator ctx, err = anteHandler(ctx, tx, false) diff --git a/x/smart-account/ante/pubkey_test.go b/x/smart-account/ante/pubkey_test.go index fbb8c881..f919d759 100644 --- a/x/smart-account/ante/pubkey_test.go +++ b/x/smart-account/ante/pubkey_test.go @@ -109,7 +109,7 @@ func (s *AuthenticatorSetPubKeyAnteSuite) TestSetPubKeyAnte() { }, []uint64{}) // Create a SetPubKey AnteDecorator - spkd := ante.NewEmitPubKeyDecoratorEvents(s.BitsongApp.AppKeepers.AccountKeeper) + spkd := ante.NewEmitPubKeyDecoratorEvents(s.BitsongApp.AccountKeeper) antehandler := sdk.ChainAnteDecorators(spkd) // Run the AnteDecorator on the transaction @@ -141,7 +141,7 @@ func (s *AuthenticatorSetPubKeyAnteSuite) TestSetPubKeyAnteWithSenderNotSigner() }, []uint64{}) // Create a SetPubKey AnteDecorator - spkd := ante.NewEmitPubKeyDecoratorEvents(s.BitsongApp.AppKeepers.AccountKeeper) + spkd := ante.NewEmitPubKeyDecoratorEvents(s.BitsongApp.AccountKeeper) antehandler := sdk.ChainAnteDecorators(spkd) // Run the AnteDecorator on the transaction @@ -149,6 +149,6 @@ func (s *AuthenticatorSetPubKeyAnteSuite) TestSetPubKeyAnteWithSenderNotSigner() s.Require().NoError(err) // Ensure that the public key has not been set for a non-signer sender - pk, err := s.BitsongApp.AppKeepers.AccountKeeper.GetPubKey(ctx, s.TestAccAddress[4]) + pk, err := s.BitsongApp.AccountKeeper.GetPubKey(ctx, s.TestAccAddress[4]) s.Require().Equal(pk, nil, "Public Key has not been set") } diff --git a/x/smart-account/authenticator/base_test.go b/x/smart-account/authenticator/base_test.go index 9083c140..5e77d652 100644 --- a/x/smart-account/authenticator/base_test.go +++ b/x/smart-account/authenticator/base_test.go @@ -73,7 +73,7 @@ func (s *BaseAuthenticatorSuite) GenSimpleTx(msgs []sdk.Msg, signers []cryptotyp var accNums []uint64 var accSeqs []uint64 - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper for _, signer := range signers { var account sdk.AccountI @@ -111,7 +111,7 @@ func (s *BaseAuthenticatorSuite) GenSimpleTxWithSelectedAuthenticators(msgs []sd var accNums []uint64 var accSeqs []uint64 - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper for _, signer := range signers { account := ak.GetAccount(s.Ctx, sdk.AccAddress(signer.PubKey().Address())) @@ -155,6 +155,6 @@ func (s *BaseAuthenticatorSuite) GenSimpleTxWithSelectedAuthenticators(msgs []sd // FundAcc funds target address with specified amount. func (s *BaseAuthenticatorSuite) FundAcc(acc sdk.AccAddress, amounts sdk.Coins) { - err := testutil.FundAccount(s.Ctx, s.BitsongApp.AppKeepers.BankKeeper, acc, amounts) + err := testutil.FundAccount(s.Ctx, s.BitsongApp.BankKeeper, acc, amounts) s.Require().NoError(err) } diff --git a/x/smart-account/authenticator/composition_test.go b/x/smart-account/authenticator/composition_test.go index ab01a657..dce08e22 100644 --- a/x/smart-account/authenticator/composition_test.go +++ b/x/smart-account/authenticator/composition_test.go @@ -65,7 +65,7 @@ func (s *AggregatedAuthenticatorsTest) SetupTest() { Confirm: testutils.Always, } s.spyAuth = testutils.NewSpyAuthenticator( - s.BitsongApp.AppKeepers.GetKVStoreKey()[smartaccounttypes.StoreKey], + s.BitsongApp.GetKVStoreKey()[smartaccounttypes.StoreKey], ) am.RegisterAuthenticator(s.AnyOfAuth) @@ -201,7 +201,7 @@ func (s *AggregatedAuthenticatorsTest) TestAnyOf() { s.Require().NoError(err) // Generate authentication request - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper sigModeHandler := s.EncodingConfig.TxConfig.SignModeHandler() // sample msg msg := &bank.MsgSend{FromAddress: s.TestAccAddress[0].String(), ToAddress: "to", Amount: sdk.NewCoins(sdk.NewInt64Coin("foo", 1))} @@ -343,7 +343,7 @@ func (s *AggregatedAuthenticatorsTest) TestAllOf() { s.Require().NoError(err) // Generate authentication request - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper sigModeHandler := s.EncodingConfig.TxConfig.SignModeHandler() // sample msg @@ -441,7 +441,7 @@ func (s *AggregatedAuthenticatorsTest) TestComposedAuthenticator() { s.Require().NoError(err) // Generate authentication request - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper sigModeHandler := s.EncodingConfig.TxConfig.SignModeHandler() // sample msg msg := &bank.MsgSend{FromAddress: s.TestAccAddress[0].String(), ToAddress: "to", Amount: sdk.NewCoins(sdk.NewInt64Coin("foo", 1))} diff --git a/x/smart-account/authenticator/cosmwasm_test.go b/x/smart-account/authenticator/cosmwasm_test.go index 2db5e087..60d8bf02 100644 --- a/x/smart-account/authenticator/cosmwasm_test.go +++ b/x/smart-account/authenticator/cosmwasm_test.go @@ -47,7 +47,7 @@ func (s *CosmwasmAuthenticatorTest) SetupTest() { s.EncodingConfig = app.MakeEncodingConfig() - s.CosmwasmAuth = authenticator.NewCosmwasmAuthenticator(s.BitsongApp.AppKeepers.ContractKeeper, s.BitsongApp.AppKeepers.AccountKeeper, s.BitsongApp.AppCodec()) + s.CosmwasmAuth = authenticator.NewCosmwasmAuthenticator(s.BitsongApp.ContractKeeper, s.BitsongApp.AccountKeeper, s.BitsongApp.AppCodec()) } func (s *CosmwasmAuthenticatorTest) TearDownTest() { @@ -241,9 +241,9 @@ func (s *CosmwasmAuthenticatorTest) TestGeneral() { accounts := apptesting.CreateRandomAccounts(2) for _, acc := range accounts { someCoins := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 1000000)) - err := s.BitsongApp.AppKeepers.BankKeeper.MintCoins(s.Ctx, minttypes.ModuleName, someCoins) + err := s.BitsongApp.BankKeeper.MintCoins(s.Ctx, minttypes.ModuleName, someCoins) s.Require().NoError(err) - err = s.BitsongApp.AppKeepers.BankKeeper.SendCoinsFromModuleToAccount(s.Ctx, minttypes.ModuleName, acc, someCoins) + err = s.BitsongApp.BankKeeper.SendCoinsFromModuleToAccount(s.Ctx, minttypes.ModuleName, acc, someCoins) s.Require().NoError(err) } @@ -308,7 +308,7 @@ func (s *CosmwasmAuthenticatorTest) TestGeneral() { signatures, ) - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper sigModeHandler := s.EncodingConfig.TxConfig.SignModeHandler() request, err := authenticator.GenerateAuthenticationRequest(s.Ctx, s.BitsongApp.AppCodec(), ak, sigModeHandler, accounts[0], accounts[0], nil, feeCoins, testMsg, tx, 0, false, authenticator.SequenceMatch) s.Require().NoError(err) @@ -380,9 +380,9 @@ func (s *CosmwasmAuthenticatorTest) TestCosignerContract() { accounts := apptesting.CreateRandomAccounts(2) for _, acc := range accounts { someCoins := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 1000000)) - err := s.BitsongApp.AppKeepers.BankKeeper.MintCoins(s.Ctx, minttypes.ModuleName, someCoins) + err := s.BitsongApp.BankKeeper.MintCoins(s.Ctx, minttypes.ModuleName, someCoins) s.Require().NoError(err) - err = s.BitsongApp.AppKeepers.BankKeeper.SendCoinsFromModuleToAccount(s.Ctx, minttypes.ModuleName, acc, someCoins) + err = s.BitsongApp.BankKeeper.SendCoinsFromModuleToAccount(s.Ctx, minttypes.ModuleName, acc, someCoins) s.Require().NoError(err) } @@ -440,7 +440,7 @@ func (s *CosmwasmAuthenticatorTest) TestCosignerContract() { // TODO: this currently fails as signatures are stripped from the tx. Should we add them or maybe do a better // cosigner implementation later? s.T().Skip("TODO: this currently fails as signatures are stripped from the tx. Should we add them or maybe do a better cosigner implementation later?") - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper sigModeHandler := s.EncodingConfig.TxConfig.SignModeHandler() request, err := authenticator.GenerateAuthenticationRequest(s.Ctx, s.BitsongApp.AppCodec(), ak, sigModeHandler, accounts[0], accounts[0], nil, sdk.NewCoins(), testMsg, tx, 0, false, authenticator.SequenceMatch) s.Require().NoError(err) @@ -454,8 +454,8 @@ func (s *CosmwasmAuthenticatorTest) TestCosignerContract() { func (s *CosmwasmAuthenticatorTest) StoreContractCode(path string) uint64 { btsgApp := s.BitsongApp - govKeeper := wasmkeeper.NewGovPermissionKeeper(btsgApp.AppKeepers.WasmKeeper) - creator := btsgApp.AppKeepers.AccountKeeper.GetModuleAddress(govtypes.ModuleName) + govKeeper := wasmkeeper.NewGovPermissionKeeper(btsgApp.WasmKeeper) + creator := btsgApp.AccountKeeper.GetModuleAddress(govtypes.ModuleName) wasmCode, err := os.ReadFile(path) s.Require().NoError(err) @@ -467,8 +467,8 @@ func (s *CosmwasmAuthenticatorTest) StoreContractCode(path string) uint64 { func (s *CosmwasmAuthenticatorTest) InstantiateContract(msg string, codeID uint64) sdk.AccAddress { btsgApp := s.BitsongApp - contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(btsgApp.AppKeepers.WasmKeeper) - creator := btsgApp.AppKeepers.AccountKeeper.GetModuleAddress(govtypes.ModuleName) + contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(btsgApp.WasmKeeper) + creator := btsgApp.AccountKeeper.GetModuleAddress(govtypes.ModuleName) addr, _, err := contractKeeper.Instantiate(s.Ctx.WithBlockTime(time.Now()), codeID, creator, creator, []byte(msg), "contract", nil) s.Require().NoError(err) return addr @@ -477,7 +477,7 @@ func (s *CosmwasmAuthenticatorTest) InstantiateContract(msg string, codeID uint6 func (s *CosmwasmAuthenticatorTest) QueryContract(msg string, contractAddr sdk.AccAddress) []byte { // Query the contract btsgApp := s.BitsongApp - res, err := btsgApp.AppKeepers.WasmKeeper.QuerySmart(s.Ctx.WithBlockTime(time.Now()), contractAddr, []byte(msg)) + res, err := btsgApp.WasmKeeper.QuerySmart(s.Ctx.WithBlockTime(time.Now()), contractAddr, []byte(msg)) s.Require().NoError(err) return res @@ -486,7 +486,7 @@ func (s *CosmwasmAuthenticatorTest) QueryContract(msg string, contractAddr sdk.A func (s *CosmwasmAuthenticatorTest) QueryLatestSudoCall(contractAddr sdk.AccAddress) authenticator.SudoMsg { // Query the contract btsgApp := s.BitsongApp - res, err := btsgApp.AppKeepers.WasmKeeper.QuerySmart(s.Ctx.WithBlockTime(time.Now()), contractAddr, []byte(`{"latest_sudo_call": {}}`)) + res, err := btsgApp.WasmKeeper.QuerySmart(s.Ctx.WithBlockTime(time.Now()), contractAddr, []byte(`{"latest_sudo_call": {}}`)) s.Require().NoError(err) // unmarshal the call as SudoMsg diff --git a/x/smart-account/authenticator/message_filter_test.go b/x/smart-account/authenticator/message_filter_test.go index 48ee8bae..d8b03276 100644 --- a/x/smart-account/authenticator/message_filter_test.go +++ b/x/smart-account/authenticator/message_filter_test.go @@ -171,7 +171,7 @@ func (s *MessageFilterTest) TestBankSend() { filter, err := s.MessageFilter.Initialize([]byte(tt.pattern)) s.Require().NoError(err) - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper sigModeHandler := s.EncodingConfig.TxConfig.SignModeHandler() tx, err := s.GenSimpleTx([]sdk.Msg{tt.msg}, []cryptotypes.PrivKey{s.TestPrivKeys[0]}) s.Require().NoError(err) @@ -370,7 +370,7 @@ func (s *MessageFilterTest) TestLimitOrder() { filter, err := s.MessageFilter.Initialize([]byte(tt.pattern)) s.Require().NoError(err) - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper sigModeHandler := s.EncodingConfig.TxConfig.SignModeHandler() tx, err := s.GenSimpleTx([]sdk.Msg{tt.msg}, []cryptotypes.PrivKey{s.TestPrivKeys[0]}) s.Require().NoError(err) diff --git a/x/smart-account/authenticator/signature_authenticator_test.go b/x/smart-account/authenticator/signature_authenticator_test.go index b233dc2f..5c9240b3 100644 --- a/x/smart-account/authenticator/signature_authenticator_test.go +++ b/x/smart-account/authenticator/signature_authenticator_test.go @@ -34,7 +34,7 @@ func (s *SigVerifyAuthenticationSuite) SetupTest() { s.SetupKeys() s.EncodingConfig = app.MakeEncodingConfig() - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper // Create a new Secp256k1SignatureAuthenticator for testing s.SigVerificationAuthenticator = authenticator.NewSignatureVerification( @@ -261,7 +261,7 @@ func (s *SigVerifyAuthenticationSuite) TestSignatureAuthenticator() { tc.TestData.Signers, tc.TestData.Signatures, ) - ak := s.BitsongApp.AppKeepers.AccountKeeper + ak := s.BitsongApp.AccountKeeper sigModeHandler := s.EncodingConfig.TxConfig.SignModeHandler() // Only the first message is tested for authenticate diff --git a/x/smart-account/authenticator/spend_limits_test.go b/x/smart-account/authenticator/spend_limits_test.go index 3929210a..a697df00 100644 --- a/x/smart-account/authenticator/spend_limits_test.go +++ b/x/smart-account/authenticator/spend_limits_test.go @@ -80,24 +80,24 @@ func (s *SpendLimitAuthenticatorTest) SetupTest() { s.Ctx = s.Ctx.WithBlockTime(time.Now()) s.EncodingConfig = app.MakeEncodingConfig() - s.CosmwasmAuth = authenticator.NewCosmwasmAuthenticator(s.BitsongApp.AppKeepers.ContractKeeper, s.BitsongApp.AppKeepers.AccountKeeper, s.BitsongApp.AppCodec()) + s.CosmwasmAuth = authenticator.NewCosmwasmAuthenticator(s.BitsongApp.ContractKeeper, s.BitsongApp.AccountKeeper, s.BitsongApp.AppCodec()) s.AlwaysPassAuth = testutils.TestingAuthenticator{Approve: testutils.Always, Confirm: testutils.Always, GasConsumption: 0} - s.BitsongApp.AppKeepers.SmartAccountKeeper.AuthenticatorManager.RegisterAuthenticator(s.AlwaysPassAuth) + s.BitsongApp.SmartAccountKeeper.AuthenticatorManager.RegisterAuthenticator(s.AlwaysPassAuth) - deductFeeDecorator := sdkante.NewDeductFeeDecorator(s.BitsongApp.AppKeepers.AccountKeeper, s.BitsongApp.AppKeepers.BankKeeper, s.BitsongApp.AppKeepers.FeeGrantKeeper, nil) + deductFeeDecorator := sdkante.NewDeductFeeDecorator(s.BitsongApp.AccountKeeper, s.BitsongApp.BankKeeper, s.BitsongApp.FeeGrantKeeper, nil) s.AuthenticatorAnteDecorator = ante.NewAuthenticatorDecorator( s.BitsongApp.AppCodec(), - s.BitsongApp.AppKeepers.SmartAccountKeeper, - s.BitsongApp.AppKeepers.AccountKeeper, + s.BitsongApp.SmartAccountKeeper, + s.BitsongApp.AccountKeeper, s.EncodingConfig.TxConfig.SignModeHandler(), deductFeeDecorator, ) s.AuthenticatorPostDecorator = post.NewAuthenticatorPostDecorator( s.BitsongApp.AppCodec(), - s.BitsongApp.AppKeepers.SmartAccountKeeper, - s.BitsongApp.AppKeepers.AccountKeeper, + s.BitsongApp.SmartAccountKeeper, + s.BitsongApp.AccountKeeper, s.EncodingConfig.TxConfig.SignModeHandler(), // Add an empty handler here to enable a circuit breaker pattern sdk.ChainPostDecorators(sdk.Terminator{}), //nolint @@ -120,7 +120,7 @@ func (s *SpendLimitAuthenticatorTest) TestSpendLimit() { // contractAddr := s.InstantiateContract(string(bz), codeId) // add new authenticator - // ak := s.BitsongApp.AppKeepers.SmartAccountKeeper + // ak := s.BitsongApp.SmartAccountKeeper // authAcc := s.TestAccAddress[1] // authAccPriv := s.TestPrivKeys[1] @@ -200,8 +200,8 @@ func (s *SpendLimitAuthenticatorTest) TestSpendLimit() { func (s *SpendLimitAuthenticatorTest) StoreContractCode(path string) uint64 { btsgApp := s.BitsongApp - govKeeper := wasmkeeper.NewGovPermissionKeeper(btsgApp.AppKeepers.WasmKeeper) - creator := btsgApp.AppKeepers.AccountKeeper.GetModuleAddress(govtypes.ModuleName) + govKeeper := wasmkeeper.NewGovPermissionKeeper(btsgApp.WasmKeeper) + creator := btsgApp.AccountKeeper.GetModuleAddress(govtypes.ModuleName) wasmCode, err := os.ReadFile(path) s.Require().NoError(err) @@ -213,8 +213,8 @@ func (s *SpendLimitAuthenticatorTest) StoreContractCode(path string) uint64 { func (s *SpendLimitAuthenticatorTest) InstantiateContract(msg string, codeID uint64) sdk.AccAddress { btsgApp := s.BitsongApp - contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(btsgApp.AppKeepers.WasmKeeper) - creator := btsgApp.AppKeepers.AccountKeeper.GetModuleAddress(govtypes.ModuleName) + contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(btsgApp.WasmKeeper) + creator := btsgApp.AccountKeeper.GetModuleAddress(govtypes.ModuleName) addr, _, err := contractKeeper.Instantiate(s.Ctx, codeID, creator, creator, []byte(msg), "contract", nil) s.Require().NoError(err) return addr diff --git a/x/smart-account/integration_test.go b/x/smart-account/integration_test.go index 8ab9716f..3d054e59 100644 --- a/x/smart-account/integration_test.go +++ b/x/smart-account/integration_test.go @@ -58,7 +58,7 @@ func (s *AuthenticatorSuite) SetupTest() { s.chainA = &bitsongibctesting.TestChain{ TestChain: s.coordinator.GetChain(ibctesting.GetChainID(1)), } - s.app = s.chainA.GetBitsongApp() + s.App = s.chainA.GetBitsongApp() s.EncodingConfig = app.MakeEncodingConfig() // Initialize two private keys for testing @@ -81,9 +81,9 @@ func (s *AuthenticatorSuite) CreateAccount(privKey cryptotypes.PrivKey, amount i accountAddr := sdk.AccAddress(privKey.PubKey().Address()) // fund the account coins := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(amount))) - err := s.app.AppKeepers.BankKeeper.SendCoins(s.chainA.GetContext(), s.chainA.SenderAccount.GetAddress(), accountAddr, coins) + err := s.App.BankKeeper.SendCoins(s.chainA.GetContext(), s.chainA.SenderAccount.GetAddress(), accountAddr, coins) s.Require().NoError(err, "Failed to send bank tx to account") - return s.app.AppKeepers.AccountKeeper.GetAccount(s.chainA.GetContext(), accountAddr) + return s.App.AccountKeeper.GetAccount(s.chainA.GetContext(), accountAddr) } // TestKeyRotationStory tests the authenticator module by adding multiple SignatureVerifications @@ -101,7 +101,7 @@ func (s *AuthenticatorSuite) TestKeyRotationStory() { s.Require().NoError(err, "Failed to send bank tx using the first private key") // Change account's authenticator - sigVerAuthId, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator( + sigVerAuthId, err := s.App.SmartAccountKeeper.AddAuthenticator( s.chainA.GetContext(), s.Account.GetAddress(), "SignatureVerification", @@ -122,7 +122,7 @@ func (s *AuthenticatorSuite) TestKeyRotationStory() { s.Require().NoError(err, "Sending from the original PrivKey failed. This should succeed") // Remove the account's authenticator - err = s.app.AppKeepers.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), sigVerAuthId) + err = s.App.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), sigVerAuthId) s.Require().NoError(err, "Failed to remove authenticator") // Sending from the default PrivKey still works @@ -141,16 +141,16 @@ func (s *AuthenticatorSuite) TestCircuitBreaker() { } // Activate circuit breaker - authenticatorParams := s.app.AppKeepers.SmartAccountKeeper.GetParams(s.chainA.GetContext()) + authenticatorParams := s.App.SmartAccountKeeper.GetParams(s.chainA.GetContext()) authenticatorParams.IsSmartAccountActive = false - s.app.AppKeepers.SmartAccountKeeper.SetParams(s.chainA.GetContext(), authenticatorParams) + s.App.SmartAccountKeeper.SetParams(s.chainA.GetContext(), authenticatorParams) // Send msg from accounts default privkey _, err := s.chainA.SendMsgsFromPrivKeys(pks{s.PrivKeys[0]}, sendMsg) s.Require().NoError(err, "Failed to send bank tx using the first private key") // Add signature verification authenticator - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err = s.App.SmartAccountKeeper.AddAuthenticator( s.chainA.GetContext(), s.Account.GetAddress(), "SignatureVerification", s.PrivKeys[1].PubKey().Bytes()) s.Require().NoError(err, "Failed to add authenticator") @@ -160,7 +160,7 @@ func (s *AuthenticatorSuite) TestCircuitBreaker() { // Deactivate circuit breaker authenticatorParams.IsSmartAccountActive = true - s.app.AppKeepers.SmartAccountKeeper.SetParams(s.chainA.GetContext(), authenticatorParams) + s.App.SmartAccountKeeper.SetParams(s.chainA.GetContext(), authenticatorParams) // ReSubmit a bank send tx using the second private key _, err = s.chainA.SendMsgsFromPrivKeysWithAuthenticator(pks{s.PrivKeys[0]}, pks{s.PrivKeys[1]}, []uint64{1}, sendMsg) @@ -182,8 +182,8 @@ func (s *AuthenticatorSuite) TestMessageFilterStory() { // Change account's authenticator msgFilter := authenticator.NewMessageFilter(s.EncodingConfig) - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(msgFilter) - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator( + s.App.AuthenticatorManager.RegisterAuthenticator(msgFilter) + _, err = s.App.SmartAccountKeeper.AddAuthenticator( s.chainA.GetContext(), s.Account.GetAddress(), "MessageFilter", []byte(fmt.Sprintf(`{"@type":"/cosmos.bank.v1beta1.MsgSend","amount": [{"denom": "%s", "amount": "50"}]}`, sdk.DefaultBondDenom))) @@ -214,7 +214,7 @@ func (s *AuthenticatorSuite) TestKeyRotation() { } // Add a signature verification authenticator - _, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err := s.App.SmartAccountKeeper.AddAuthenticator( s.chainA.GetContext(), s.Account.GetAddress(), "SignatureVerification", s.PrivKeys[0].PubKey().Bytes()) s.Require().NoError(err, "Failed to add authenticator for key %d", 0) @@ -231,11 +231,11 @@ func (s *AuthenticatorSuite) TestKeyRotation() { s.Require().NoError(err, "Bank send with authenticator should pass 0") // Add multiple keys - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err = s.App.SmartAccountKeeper.AddAuthenticator( s.chainA.GetContext(), s.Account.GetAddress(), "SignatureVerification", s.PrivKeys[1].PubKey().Bytes()) s.Require().NoError(err, "Failed to add authenticator for key %d", 0) - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err = s.App.SmartAccountKeeper.AddAuthenticator( s.chainA.GetContext(), s.Account.GetAddress(), "SignatureVerification", s.PrivKeys[2].PubKey().Bytes()) s.Require().NoError(err, "Failed to add authenticator for key %d", 0) @@ -252,7 +252,7 @@ func (s *AuthenticatorSuite) TestKeyRotation() { s.Require().Error(err, "Should fail as incorrect authenticator selected") // Remove an authenticator and try to send - err = s.app.AppKeepers.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), uint64(3)) + err = s.App.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), uint64(3)) s.Require().NoError(err, "Failed to remove authenticator with id %d", 1) // Fail as authenticator was removed @@ -275,9 +275,9 @@ func (s *AuthenticatorSuite) TestAuthenticatorState() { Amount: sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 1_000_000_000_000)), } - stateful := testutils.StatefulAuthenticator{KvStoreKey: s.app.AppKeepers.GetKVStoreKey()[smartaccounttypes.StoreKey]} - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(stateful) - _, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), "Stateful", []byte{}) + stateful := testutils.StatefulAuthenticator{KvStoreKey: s.App.GetKVStoreKey()[smartaccounttypes.StoreKey]} + s.App.AuthenticatorManager.RegisterAuthenticator(stateful) + _, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), "Stateful", []byte{}) s.Require().NoError(err, "Failed to add authenticator") _, err = s.chainA.SendMsgsFromPrivKeysWithAuthenticator(pks{s.PrivKeys[0]}, pks{s.PrivKeys[1]}, []uint64{1}, failSendMsg) @@ -301,14 +301,14 @@ func (s *AuthenticatorSuite) TestAuthenticatorMultiMsg() { Amount: sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 1_000)), } - storeKey := s.app.AppKeepers.GetKVStoreKey()[smartaccounttypes.StoreKey] + storeKey := s.App.GetKVStoreKey()[smartaccounttypes.StoreKey] maxAmount := testutils.MaxAmountAuthenticator{KvStoreKey: storeKey} stateful := testutils.StatefulAuthenticator{KvStoreKey: storeKey} - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(maxAmount) - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(stateful) + s.App.AuthenticatorManager.RegisterAuthenticator(maxAmount) + s.App.AuthenticatorManager.RegisterAuthenticator(stateful) - _, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), "MaxAmountAuthenticator", []byte{}) + _, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), "MaxAmountAuthenticator", []byte{}) s.Require().NoError(err, "Failed to add authenticator") // Note that we are sending 2 messages here, so the amount should be 2_000 (2*1_000) @@ -336,11 +336,11 @@ func (s *AuthenticatorSuite) TestAuthenticatorGas() { // fund the account coins := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 100_000)) - err := s.app.AppKeepers.BankKeeper.SendCoins(s.chainA.GetContext(), s.chainA.SenderAccount.GetAddress(), accountAddr, coins) + err := s.App.BankKeeper.SendCoins(s.chainA.GetContext(), s.chainA.SenderAccount.GetAddress(), accountAddr, coins) s.Require().NoError(err, "Failed to send bank tx using the first private key") // get the account - account2 := s.app.AppKeepers.AccountKeeper.GetAccount(s.chainA.GetContext(), accountAddr) + account2 := s.App.AccountKeeper.GetAccount(s.chainA.GetContext(), accountAddr) sendFromAcc2 := &banktypes.MsgSend{ FromAddress: sdk.MustBech32ifyAddressBytes("bitsong", account2.GetAddress()), @@ -355,13 +355,13 @@ func (s *AuthenticatorSuite) TestAuthenticatorGas() { // Will always approve and will consume 500k gas alwaysHigher := testutils.TestingAuthenticator{Approve: testutils.Always, GasConsumption: 500_000} - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(alwaysLow) - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(alwaysHigh) - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(alwaysHigher) + s.App.AuthenticatorManager.RegisterAuthenticator(alwaysLow) + s.App.AuthenticatorManager.RegisterAuthenticator(alwaysHigh) + s.App.AuthenticatorManager.RegisterAuthenticator(alwaysHigher) - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), alwaysLow.Type(), []byte{}) + _, err = s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), alwaysLow.Type(), []byte{}) s.Require().NoError(err, "Failed to add authenticator") - acc2authId, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), account2.GetAddress(), alwaysHigh.Type(), []byte{}) + acc2authId, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), account2.GetAddress(), alwaysHigh.Type(), []byte{}) s.Require().NoError(err, "Failed to add authenticator") // Both account 0 and account 1 can send @@ -371,16 +371,16 @@ func (s *AuthenticatorSuite) TestAuthenticatorGas() { s.Require().NoError(err) // Remove account2's authenticator - err = s.app.AppKeepers.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), account2.GetAddress(), acc2authId) + err = s.App.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), account2.GetAddress(), acc2authId) s.Require().NoError(err, "Failed to remove authenticator") // Add two authenticators that are always higher, and one always high. // This allows account2 to execute but *only* after consuming >9k gas - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), account2.GetAddress(), alwaysHigher.Type(), []byte{}) + _, err = s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), account2.GetAddress(), alwaysHigher.Type(), []byte{}) s.Require().NoError(err, "Failed to add authenticator") - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), account2.GetAddress(), alwaysHigher.Type(), []byte{}) + _, err = s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), account2.GetAddress(), alwaysHigher.Type(), []byte{}) s.Require().NoError(err, "Failed to add authenticator") - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), account2.GetAddress(), alwaysHigh.Type(), []byte{}) + _, err = s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), account2.GetAddress(), alwaysHigh.Type(), []byte{}) s.Require().NoError(err, "Failed to add authenticator") // This should fail, as authenticating the fee payer needs to be done with low gas @@ -404,7 +404,7 @@ func (s *AuthenticatorSuite) TestCompositeAuthenticatorAnyOf() { Amount: coins, } - anyOf := authenticator.NewAnyOf(s.app.AppKeepers.AuthenticatorManager) + anyOf := authenticator.NewAnyOf(s.App.AuthenticatorManager) // construct SubAuthenticatorInitData for each SigVerificationAuthenticator initDataPrivKey1 := authenticator.SubAuthenticatorInitData{ @@ -423,7 +423,7 @@ func (s *AuthenticatorSuite) TestCompositeAuthenticatorAnyOf() { }) // Set the authenticator to our account - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), anyOf.Type(), compositeData) + _, err = s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), anyOf.Type(), compositeData) s.Require().NoError(err) // Send from account 1 using the AnyOf authenticator @@ -455,7 +455,7 @@ func (s *AuthenticatorSuite) TestCompositeAuthenticatorAllOf() { Amount: coins, } - allOf := authenticator.NewAllOf(s.app.AppKeepers.AuthenticatorManager) + allOf := authenticator.NewAllOf(s.App.AuthenticatorManager) // set 2nd test suite key sig required for tx initDataPrivKey1 := authenticator.SubAuthenticatorInitData{ @@ -479,7 +479,7 @@ func (s *AuthenticatorSuite) TestCompositeAuthenticatorAllOf() { s.Require().NoError(err) // Set the authenticator to our account - allOfAuthId, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), allOf.Type(), compositeData) + allOfAuthId, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), allOf.Type(), compositeData) s.Require().NoError(err) // Send from account 1 using the AllOf authenticator @@ -508,7 +508,7 @@ func (s *AuthenticatorSuite) TestCompositeAuthenticatorAllOf() { s.Require().ErrorContains(err, "message does not match pattern") // Remove the first AllOf authenticator - err = s.app.AppKeepers.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), allOfAuthId) + err = s.App.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), allOfAuthId) s.Require().NoError(err, "Failed to remove authenticator") initDataPrivKey2 := authenticator.SubAuthenticatorInitData{ @@ -523,8 +523,8 @@ func (s *AuthenticatorSuite) TestCompositeAuthenticatorAllOf() { }) // Set the authenticator to our account - partitionedAllOf := authenticator.NewPartitionedAllOf(s.app.AppKeepers.AuthenticatorManager) - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), partitionedAllOf.Type(), compositeData) + partitionedAllOf := authenticator.NewPartitionedAllOf(s.App.AuthenticatorManager) + _, err = s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), s.Account.GetAddress(), partitionedAllOf.Type(), compositeData) s.Require().NoError(err) // We should provide only one signature (for the allOf authenticator) but the signature needs to be a compound @@ -548,36 +548,36 @@ func (s *AuthenticatorSuite) TestAuthenticatorAddRemove() { blockRemove := testutils.TestingAuthenticator{BlockRemoval: true} allowRemove := testutils.TestingAuthenticator{} - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(blockAdd) - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(allowAdd) - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(blockRemove) - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(allowRemove) + s.App.AuthenticatorManager.RegisterAuthenticator(blockAdd) + s.App.AuthenticatorManager.RegisterAuthenticator(allowAdd) + s.App.AuthenticatorManager.RegisterAuthenticator(blockRemove) + s.App.AuthenticatorManager.RegisterAuthenticator(allowRemove) // Initialize an account accountAddr := sdk.AccAddress(s.PrivKeys[0].PubKey().Address()) // Test authenticator that blocks addition - _, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), accountAddr, blockAdd.Type(), []byte{}) + _, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), accountAddr, blockAdd.Type(), []byte{}) s.Require().Error(err, "Authenticator should not be added") s.Require().ErrorContains(err, "authenticator could not be added") // Test authenticator that allows addition - _, err = s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), accountAddr, allowAdd.Type(), []byte{}) + _, err = s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), accountAddr, allowAdd.Type(), []byte{}) s.Require().NoError(err, "Failed to add authenticator") // Test authenticator that blocks removal - blockRemoveId, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), accountAddr, blockRemove.Type(), []byte{}) + blockRemoveId, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), accountAddr, blockRemove.Type(), []byte{}) s.Require().NoError(err, "Failed to add authenticator") - err = s.app.AppKeepers.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), accountAddr, blockRemoveId) + err = s.App.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), accountAddr, blockRemoveId) s.Require().Error(err, "Authenticator should not be removed") s.Require().ErrorContains(err, "authenticator could not be removed") // Test authenticator that allows removal - allowRemoveId, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), accountAddr, allowRemove.Type(), []byte{}) + allowRemoveId, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), accountAddr, allowRemove.Type(), []byte{}) s.Require().NoError(err, "Failed to add authenticator") - err = s.app.AppKeepers.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), accountAddr, allowRemoveId) + err = s.App.SmartAccountKeeper.RemoveAuthenticator(s.chainA.GetContext(), accountAddr, allowRemoveId) s.Require().NoError(err, "Failed to remove authenticator") } @@ -593,16 +593,16 @@ func (s *AuthenticatorSuite) TestFeeDeduction() { alwaysAuth := testutils.TestingAuthenticator{Approve: testutils.Always} neverAuth := testutils.TestingAuthenticator{Approve: testutils.Never} - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(alwaysAuth) - s.app.AppKeepers.AuthenticatorManager.RegisterAuthenticator(neverAuth) + s.App.AuthenticatorManager.RegisterAuthenticator(alwaysAuth) + s.App.AuthenticatorManager.RegisterAuthenticator(neverAuth) - payerYes, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), address1, alwaysAuth.Type(), []byte{}) + payerYes, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), address1, alwaysAuth.Type(), []byte{}) s.Require().NoError(err) - payerNo, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), address1, neverAuth.Type(), []byte{}) + payerNo, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), address1, neverAuth.Type(), []byte{}) s.Require().NoError(err) - otherYes, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), address2, alwaysAuth.Type(), []byte{}) + otherYes, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), address2, alwaysAuth.Type(), []byte{}) s.Require().NoError(err) - otherNo, err := s.app.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), address2, neverAuth.Type(), []byte{}) + otherNo, err := s.App.SmartAccountKeeper.AddAuthenticator(s.chainA.GetContext(), address2, neverAuth.Type(), []byte{}) s.Require().NoError(err) testCases := []struct { @@ -705,7 +705,7 @@ func (s *AuthenticatorSuite) TestFeeDeduction() { for _, tc := range testCases { s.Run(tc.name, func() { - initialBalance := s.app.AppKeepers.BankKeeper.GetAllBalances(s.chainA.GetContext(), sdk.AccAddress(tc.signers[0].PubKey().Address())) + initialBalance := s.App.BankKeeper.GetAllBalances(s.chainA.GetContext(), sdk.AccAddress(tc.signers[0].PubKey().Address())) _, err := s.chainA.SendMsgsFromPrivKeysWithAuthenticator(tc.signers, tc.signers, tc.selectedAuthenticators, tc.messages...) if tc.expectedError { s.Require().Error(err) @@ -713,7 +713,7 @@ func (s *AuthenticatorSuite) TestFeeDeduction() { } else { s.Require().NoError(err) } - finalBalance := s.app.AppKeepers.BankKeeper.GetAllBalances(s.chainA.GetContext(), sdk.AccAddress(tc.signers[0].PubKey().Address())) + finalBalance := s.App.BankKeeper.GetAllBalances(s.chainA.GetContext(), sdk.AccAddress(tc.signers[0].PubKey().Address())) fee := sdk.NewInt64Coin(sdk.DefaultBondDenom, 25000) expectedBalance := initialBalance.Sub(fee) if tc.selectedAuthenticators[0] == payerYes { diff --git a/x/smart-account/keeper/genesis_test.go b/x/smart-account/keeper/genesis_test.go index 569a004b..04a271fc 100644 --- a/x/smart-account/keeper/genesis_test.go +++ b/x/smart-account/keeper/genesis_test.go @@ -21,7 +21,7 @@ func (s *KeeperTestSuite) TestKeeper_AddAuthenticatorWithId() { priv := &secp256k1.PrivKey{Key: bz} accAddress := sdk.AccAddress(priv.PubKey().Address()) - err := s.App.AppKeepers.SmartAccountKeeper.AddAuthenticatorWithId( + err := s.App.SmartAccountKeeper.AddAuthenticatorWithId( ctx, accAddress, "SignatureVerification", @@ -30,7 +30,7 @@ func (s *KeeperTestSuite) TestKeeper_AddAuthenticatorWithId() { ) s.Require().NoError(err) - err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticatorWithId( + err = s.App.SmartAccountKeeper.AddAuthenticatorWithId( ctx, accAddress, "SignatureVerification", @@ -39,11 +39,11 @@ func (s *KeeperTestSuite) TestKeeper_AddAuthenticatorWithId() { ) s.Require().NoError(err) - authenticators, err := s.App.AppKeepers.SmartAccountKeeper.GetAuthenticatorDataForAccount(ctx, accAddress) + authenticators, err := s.App.SmartAccountKeeper.GetAuthenticatorDataForAccount(ctx, accAddress) s.Require().NoError(err) s.Require().Equal(len(authenticators), 2, "Getting authenticators returning incorrect data") - err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticatorWithId( + err = s.App.SmartAccountKeeper.AddAuthenticatorWithId( ctx, accAddress, "SignatureVerification", @@ -53,8 +53,8 @@ func (s *KeeperTestSuite) TestKeeper_AddAuthenticatorWithId() { s.Require().Error(err) s.Require().ErrorContains(err, "invalid secp256k1 public key size") - s.App.AppKeepers.AuthenticatorManager.ResetAuthenticators() - err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticatorWithId( + s.App.AuthenticatorManager.ResetAuthenticators() + err = s.App.SmartAccountKeeper.AddAuthenticatorWithId( ctx, accAddress, "SignatureVerification", @@ -78,7 +78,7 @@ func (s *KeeperTestSuite) TestKeeper_GetAllAuthenticatorDataGenesis() { accAddress := sdk.AccAddress(priv.PubKey().Address()) for i := 1; i <= 5; i++ { - id, err := s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + id, err := s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "SignatureVerification", @@ -88,7 +88,7 @@ func (s *KeeperTestSuite) TestKeeper_GetAllAuthenticatorDataGenesis() { s.Require().Equal(uint64(i), id) } - authenticators, err := s.App.AppKeepers.SmartAccountKeeper.GetAllAuthenticatorData(ctx) + authenticators, err := s.App.SmartAccountKeeper.GetAllAuthenticatorData(ctx) s.Require().NoError(err, "Error getting authenticator data") s.Require().Equal(5, len(authenticators[0].Authenticators), "Getting authenticators returning incorrect data") s.Require().Equal(accAddress.String(), authenticators[0].Address, "Authenticator Address is incorrect") diff --git a/x/smart-account/keeper/keeper_test.go b/x/smart-account/keeper/keeper_test.go index 961e3072..cd102816 100644 --- a/x/smart-account/keeper/keeper_test.go +++ b/x/smart-account/keeper/keeper_test.go @@ -46,7 +46,7 @@ func (s *KeeperTestSuite) TestKeeper_AddAuthenticator() { priv := &secp256k1.PrivKey{Key: bz} accAddress := sdk.AccAddress(priv.PubKey().Address()) - id, err := s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + id, err := s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "SignatureVerification", @@ -55,7 +55,7 @@ func (s *KeeperTestSuite) TestKeeper_AddAuthenticator() { s.Require().NoError(err, "Should successfully add a SignatureVerification") s.Require().Equal(id, uint64(1), "Adding authenticator returning incorrect id") - id, err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + id, err = s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "MessageFilter", @@ -64,7 +64,7 @@ func (s *KeeperTestSuite) TestKeeper_AddAuthenticator() { s.Require().NoError(err, "Should successfully add a MessageFilter") s.Require().Equal(id, uint64(2), "Adding authenticator returning incorrect id") - _, err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err = s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "SignatureVerification", @@ -72,8 +72,8 @@ func (s *KeeperTestSuite) TestKeeper_AddAuthenticator() { ) s.Require().Error(err, "Should have failed as OnAuthenticatorAdded fails") - s.App.AppKeepers.AuthenticatorManager.ResetAuthenticators() - _, err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + s.App.AuthenticatorManager.ResetAuthenticators() + _, err = s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "MessageFilter", @@ -91,7 +91,7 @@ func (s *KeeperTestSuite) TestKeeper_GetAuthenticatorDataForAccount() { priv := &secp256k1.PrivKey{Key: bz} accAddress := sdk.AccAddress(priv.PubKey().Address()) - _, err := s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err := s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "SignatureVerification", @@ -99,7 +99,7 @@ func (s *KeeperTestSuite) TestKeeper_GetAuthenticatorDataForAccount() { ) s.Require().NoError(err, "Should successfully add a SignatureVerification") - _, err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err = s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "SignatureVerification", @@ -107,7 +107,7 @@ func (s *KeeperTestSuite) TestKeeper_GetAuthenticatorDataForAccount() { ) s.Require().NoError(err, "Should successfully add a MessageFilter") - authenticators, err := s.App.AppKeepers.SmartAccountKeeper.GetAuthenticatorDataForAccount(ctx, accAddress) + authenticators, err := s.App.SmartAccountKeeper.GetAuthenticatorDataForAccount(ctx, accAddress) s.Require().NoError(err) s.Require().Equal(len(authenticators), 2, "Getting authenticators returning incorrect data") } @@ -115,10 +115,10 @@ func (s *KeeperTestSuite) TestKeeper_GetAuthenticatorDataForAccount() { func (s *KeeperTestSuite) TestKeeper_GetAndSetAuthenticatorId() { ctx := s.Ctx - authenticatorId := s.App.AppKeepers.SmartAccountKeeper.InitializeOrGetNextAuthenticatorId(ctx) + authenticatorId := s.App.SmartAccountKeeper.InitializeOrGetNextAuthenticatorId(ctx) s.Require().Equal(uint64(1), authenticatorId, "Initialize/Get authenticator id returned incorrect id") - authenticatorId = s.App.AppKeepers.SmartAccountKeeper.InitializeOrGetNextAuthenticatorId(ctx) + authenticatorId = s.App.SmartAccountKeeper.InitializeOrGetNextAuthenticatorId(ctx) s.Require().Equal(uint64(1), authenticatorId, "Initialize/Get authenticator id returned incorrect id") // Set up account @@ -127,7 +127,7 @@ func (s *KeeperTestSuite) TestKeeper_GetAndSetAuthenticatorId() { priv := &secp256k1.PrivKey{Key: bz} accAddress := sdk.AccAddress(priv.PubKey().Address()) - _, err := s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err := s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "SignatureVerification", @@ -135,10 +135,10 @@ func (s *KeeperTestSuite) TestKeeper_GetAndSetAuthenticatorId() { ) s.Require().NoError(err, "Should successfully add a SignatureVerification") - authenticatorId = s.App.AppKeepers.SmartAccountKeeper.InitializeOrGetNextAuthenticatorId(ctx) + authenticatorId = s.App.SmartAccountKeeper.InitializeOrGetNextAuthenticatorId(ctx) s.Require().Equal(authenticatorId, uint64(2), "Initialize/Get authenticator id returned incorrect id") - _, err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err = s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "SignatureVerification", @@ -146,7 +146,7 @@ func (s *KeeperTestSuite) TestKeeper_GetAndSetAuthenticatorId() { ) s.Require().NoError(err, "Should successfully add a MessageFilter") - authenticatorId = s.App.AppKeepers.SmartAccountKeeper.InitializeOrGetNextAuthenticatorId(ctx) + authenticatorId = s.App.SmartAccountKeeper.InitializeOrGetNextAuthenticatorId(ctx) s.Require().Equal(authenticatorId, uint64(3), "Initialize/Get authenticator id returned incorrect id") } @@ -159,7 +159,7 @@ func (s *KeeperTestSuite) TestKeeper_GetSelectedAuthenticatorForAccount() { priv := &secp256k1.PrivKey{Key: bz} accAddress := sdk.AccAddress(priv.PubKey().Address()) - _, err := s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err := s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "SignatureVerification", @@ -167,7 +167,7 @@ func (s *KeeperTestSuite) TestKeeper_GetSelectedAuthenticatorForAccount() { ) s.Require().NoError(err, "Should successfully add a SignatureVerification") - _, err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err = s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "MessageFilter", @@ -176,16 +176,16 @@ func (s *KeeperTestSuite) TestKeeper_GetSelectedAuthenticatorForAccount() { s.Require().NoError(err, "Should successfully add a MessageFilter") // Test getting a selected authenticator from the store - selectedAuthenticator, err := s.App.AppKeepers.SmartAccountKeeper.GetInitializedAuthenticatorForAccount(ctx, accAddress, 2) + selectedAuthenticator, err := s.App.SmartAccountKeeper.GetInitializedAuthenticatorForAccount(ctx, accAddress, 2) s.Require().NoError(err) s.Require().Equal(selectedAuthenticator.Authenticator.Type(), "MessageFilter", "Getting authenticators returning incorrect data") - selectedAuthenticator, err = s.App.AppKeepers.SmartAccountKeeper.GetInitializedAuthenticatorForAccount(ctx, accAddress, 1) + selectedAuthenticator, err = s.App.SmartAccountKeeper.GetInitializedAuthenticatorForAccount(ctx, accAddress, 1) s.Require().NoError(err) s.Require().Equal(selectedAuthenticator.Authenticator.Type(), "SignatureVerification", "Getting authenticators returning incorrect data") s.Require().Equal(selectedAuthenticator.Id, uint64(1), "Incorrect ID returned from store") - _, err = s.App.AppKeepers.SmartAccountKeeper.AddAuthenticator( + _, err = s.App.SmartAccountKeeper.AddAuthenticator( ctx, accAddress, "MessageFilter", @@ -194,16 +194,16 @@ func (s *KeeperTestSuite) TestKeeper_GetSelectedAuthenticatorForAccount() { s.Require().NoError(err, "Should successfully add a MessageFilter") // Remove a registered authenticator from the authenticator manager - s.App.AppKeepers.AuthenticatorManager.UnregisterAuthenticator(authenticator.MessageFilter{}) + s.App.AuthenticatorManager.UnregisterAuthenticator(authenticator.MessageFilter{}) // Try to get an authenticator that has been removed from the store - selectedAuthenticator, err = s.App.AppKeepers.SmartAccountKeeper.GetInitializedAuthenticatorForAccount(ctx, accAddress, 2) + selectedAuthenticator, err = s.App.SmartAccountKeeper.GetInitializedAuthenticatorForAccount(ctx, accAddress, 2) s.Require().Error(err) s.Require().ErrorContains(err, "authenticator id 2 failed to initialize, authenticator type MessageFilter not registered in manager: internal logic error") // Reset the authenticator manager to see how GetInitializedAuthenticatorForAccount behaves - s.App.AppKeepers.AuthenticatorManager.ResetAuthenticators() - selectedAuthenticator, err = s.App.AppKeepers.SmartAccountKeeper.GetInitializedAuthenticatorForAccount(ctx, accAddress, 2323) + s.App.AuthenticatorManager.ResetAuthenticators() + selectedAuthenticator, err = s.App.SmartAccountKeeper.GetInitializedAuthenticatorForAccount(ctx, accAddress, 2323) s.Require().Error(err) s.Require().Equal(selectedAuthenticator.Id, uint64(0), "Incorrect ID returned from store") s.Require().Equal(selectedAuthenticator.Authenticator, nil, "Returned authenticator from store but nothing registered in manager") diff --git a/x/smart-account/keeper/msg_server_test.go b/x/smart-account/keeper/msg_server_test.go index 9725a1d8..8e9d3f49 100644 --- a/x/smart-account/keeper/msg_server_test.go +++ b/x/smart-account/keeper/msg_server_test.go @@ -12,7 +12,7 @@ import ( ) func (s *KeeperTestSuite) TestMsgServer_AddAuthenticator() { - msgServer := keeper.NewMsgServerImpl(*s.App.AppKeepers.SmartAccountKeeper) + msgServer := keeper.NewMsgServerImpl(*s.App.SmartAccountKeeper) ctx := s.Ctx // Ensure the SigVerificationAuthenticator type is registered @@ -48,7 +48,7 @@ func (s *KeeperTestSuite) TestMsgServer_AddAuthenticator() { } func (s *KeeperTestSuite) TestMsgServer_AddAuthenticatorFail() { - msgServer := keeper.NewMsgServerImpl(*s.App.AppKeepers.SmartAccountKeeper) + msgServer := keeper.NewMsgServerImpl(*s.App.SmartAccountKeeper) ctx := s.Ctx // Ensure the SigVerificationAuthenticator type is registered @@ -73,7 +73,7 @@ func (s *KeeperTestSuite) TestMsgServer_AddAuthenticatorFail() { } func (s *KeeperTestSuite) TestMsgServer_RemoveAuthenticator() { - msgServer := keeper.NewMsgServerImpl(*s.App.AppKeepers.SmartAccountKeeper) + msgServer := keeper.NewMsgServerImpl(*s.App.SmartAccountKeeper) ctx := s.Ctx // Set up account @@ -103,7 +103,7 @@ func (s *KeeperTestSuite) TestMsgServer_RemoveAuthenticator() { } func (s *KeeperTestSuite) TestMsgServer_SetActiveState() { - ak := *s.App.AppKeepers.SmartAccountKeeper + ak := *s.App.SmartAccountKeeper msgServer := keeper.NewMsgServerImpl(ak) ctx := s.Ctx @@ -119,13 +119,13 @@ func (s *KeeperTestSuite) TestMsgServer_SetActiveState() { unauthorizedAccAddress := sdk.AccAddress(priv.PubKey().Address()) // activated by default - initialParams := s.App.AppKeepers.SmartAccountKeeper.GetParams(ctx) + initialParams := s.App.SmartAccountKeeper.GetParams(ctx) s.Require().True(initialParams.IsSmartAccountActive) // Set the authorized account as the circuit breaker controller - initialParams = s.App.AppKeepers.SmartAccountKeeper.GetParams(ctx) + initialParams = s.App.SmartAccountKeeper.GetParams(ctx) initialParams.CircuitBreakerControllers = []string{authorizedAccAddress.String()} - s.App.AppKeepers.SmartAccountKeeper.SetParams(ctx, initialParams) + s.App.SmartAccountKeeper.SetParams(ctx, initialParams) // deactivate by unauthorized account _, err := msgServer.SetActiveState( @@ -167,7 +167,7 @@ func (s *KeeperTestSuite) TestMsgServer_SetActiveState() { s.Require().Equal(err.Error(), "signer is not the circuit breaker governor: unauthorized") // reactivate by gov - governor := s.App.AppKeepers.SmartAccountKeeper.CircuitBreakerGovernor + governor := s.App.SmartAccountKeeper.CircuitBreakerGovernor _, err = msgServer.SetActiveState( ctx, &types.MsgSetActiveState{ @@ -185,10 +185,10 @@ func (s *KeeperTestSuite) TestMsgServer_SetActiveState() { } func (s *KeeperTestSuite) TestMsgServer_SmartAccountsNotActive() { - msgServer := keeper.NewMsgServerImpl(*s.App.AppKeepers.SmartAccountKeeper) + msgServer := keeper.NewMsgServerImpl(*s.App.SmartAccountKeeper) ctx := s.Ctx - s.App.AppKeepers.SmartAccountKeeper.SetParams(s.Ctx, types.Params{IsSmartAccountActive: false}) + s.App.SmartAccountKeeper.SetParams(s.Ctx, types.Params{IsSmartAccountActive: false}) // Create a test message msg := &types.MsgAddAuthenticator{ diff --git a/x/smart-account/post/post_test.go b/x/smart-account/post/post_test.go index de0a6cee..c3ba339c 100644 --- a/x/smart-account/post/post_test.go +++ b/x/smart-account/post/post_test.go @@ -77,8 +77,8 @@ func (s *AuthenticatorPostSuite) SetupTest() { s.AuthenticatorPostDecorator = post.NewAuthenticatorPostDecorator( s.BitsongApp.AppCodec(), - s.BitsongApp.AppKeepers.SmartAccountKeeper, - s.BitsongApp.AppKeepers.AccountKeeper, + s.BitsongApp.SmartAccountKeeper, + s.BitsongApp.AccountKeeper, s.EncodingConfig.TxConfig.SignModeHandler(), // Add an empty handler here to enable a circuit breaker pattern sdk.ChainPostDecorators(sdk.Terminator{}), //nolint @@ -110,7 +110,7 @@ func (s *AuthenticatorPostSuite) TestAuthenticatorPostHandlerSuccess() { feeCoins := sdk.Coins{sdk.NewInt64Coin(bitsongToken, 2500)} // Add the authenticators for the accounts - id, err := s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator( + id, err := s.BitsongApp.SmartAccountKeeper.AddAuthenticator( s.Ctx, s.TestAccAddress[0], "SignatureVerification", @@ -119,7 +119,7 @@ func (s *AuthenticatorPostSuite) TestAuthenticatorPostHandlerSuccess() { s.Require().NoError(err) s.Require().Equal(id, uint64(1), "Adding authenticator returning incorrect id") - id, err = s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator( + id, err = s.BitsongApp.SmartAccountKeeper.AddAuthenticator( s.Ctx, s.TestAccAddress[1], "SignatureVerification", @@ -183,8 +183,8 @@ func (s *AuthenticatorPostSuite) TestAuthenticatorPostHandlerFailConfirmExecutio GasConsumption: 10, Confirm: testutils.Never, } - s.BitsongApp.AppKeepers.AuthenticatorManager.RegisterAuthenticator(approveAndBlock) - approveAndBlockId, err := s.BitsongApp.AppKeepers.SmartAccountKeeper.AddAuthenticator(s.Ctx, s.TestAccAddress[0], approveAndBlock.Type(), []byte{}) + s.BitsongApp.AuthenticatorManager.RegisterAuthenticator(approveAndBlock) + approveAndBlockId, err := s.BitsongApp.SmartAccountKeeper.AddAuthenticator(s.Ctx, s.TestAccAddress[0], approveAndBlock.Type(), []byte{}) s.Require().NoError(err, "Should have been able to add an authenticator") // Create a test messages for signing