From aa5d8ab1bd020537cb3f733496fcbb239e97b4f1 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 4 Dec 2024 17:44:01 +0800 Subject: [PATCH 01/62] ci: disable mockgen that fails duplicate imports error (#22743) --- scripts/mockgen.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/mockgen.sh b/scripts/mockgen.sh index 4a13745c0f63..8ec5f02f50f5 100755 --- a/scripts/mockgen.sh +++ b/scripts/mockgen.sh @@ -28,4 +28,5 @@ $mockgen_cmd -source=x/auth/vesting/types/expected_keepers.go -package testutil $mockgen_cmd -source=x/protocolpool/types/expected_keepers.go -package testutil -destination x/protocolpool/testutil/expected_keepers_mocks.go $mockgen_cmd -source=x/upgrade/types/expected_keepers.go -package testutil -destination x/upgrade/testutil/expected_keepers_mocks.go $mockgen_cmd -source=core/gas/service.go -package gas -destination core/testing/gas/service_mocks.go -$mockgen_cmd -source=client/v2/broadcast/comet/comet.go -package testutil -destination client/v2/broadcast/comet/testutil/comet_mock.go +# FIXME: uncomment this when regeneration is required due to https://github.com/uber-go/mock/issues/226 +# $mockgen_cmd -source=client/v2/broadcast/comet/comet.go -package testutil -destination client/v2/broadcast/comet/testutil/comet_mock.go From c47fb8ab2dcbb087b682c06500255bd495aa175e Mon Sep 17 00:00:00 2001 From: Hieu Vu <72878483+hieuvubk@users.noreply.github.com> Date: Wed, 4 Dec 2024 17:00:30 +0700 Subject: [PATCH 02/62] refactor: Use HybridResolver instead of protoregistry.GlobalFiles in `runtime/v2/manager` (#22744) --- runtime/v2/manager.go | 7 +++---- x/accounts/module.go | 20 -------------------- 2 files changed, 3 insertions(+), 24 deletions(-) diff --git a/runtime/v2/manager.go b/runtime/v2/manager.go index 18b6587e86a4..7c0305d1badb 100644 --- a/runtime/v2/manager.go +++ b/runtime/v2/manager.go @@ -14,7 +14,6 @@ import ( "google.golang.org/grpc" proto "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" runtimev2 "cosmossdk.io/api/cosmos/app/runtime/v2" cosmosmsg "cosmossdk.io/api/cosmos/msg/v1" @@ -485,7 +484,7 @@ func (m *MM[T]) RunMigrations(ctx context.Context, fromVM appmodulev2.VersionMap func (m *MM[T]) RegisterServices(app *App[T]) error { for _, module := range m.modules { // register msg + query - if err := registerServices(module, app, protoregistry.GlobalFiles); err != nil { + if err := registerServices(module, app, gogoproto.HybridResolver); err != nil { return err } @@ -618,7 +617,7 @@ func (m *MM[T]) assertNoForgottenModules( return nil } -func registerServices[T transaction.Tx](s appmodulev2.AppModule, app *App[T], registry *protoregistry.Files) error { +func registerServices[T transaction.Tx](s appmodulev2.AppModule, app *App[T], registry gogoproto.Resolver) error { // case module with services if services, ok := s.(hasServicesV1); ok { c := &configurator{ @@ -671,7 +670,7 @@ type configurator struct { stfQueryRouter *stf.MsgRouterBuilder stfMsgRouter *stf.MsgRouterBuilder - registry *protoregistry.Files + registry gogoproto.Resolver err error } diff --git a/x/accounts/module.go b/x/accounts/module.go index daadebfe91ce..f7958240b7b5 100644 --- a/x/accounts/module.go +++ b/x/accounts/module.go @@ -8,7 +8,6 @@ import ( "google.golang.org/grpc" "cosmossdk.io/core/appmodule" - appmodulev2 "cosmossdk.io/core/appmodule/v2" "cosmossdk.io/core/registry" "cosmossdk.io/x/accounts/cli" v1 "cosmossdk.io/x/accounts/v1" @@ -62,25 +61,6 @@ func (am AppModule) RegisterServices(registrar grpc.ServiceRegistrar) error { return nil } -// RegisterQueryHandlers registers the query handlers for the accounts module. -func (am AppModule) RegisterQueryHandlers(router appmodulev2.QueryRouter) { - queryServer := NewQueryServer(am.k) - - appmodulev2.RegisterMsgHandler(router, queryServer.AccountNumber) - appmodulev2.RegisterMsgHandler(router, queryServer.AccountQuery) - appmodulev2.RegisterMsgHandler(router, queryServer.AccountType) - appmodulev2.RegisterMsgHandler(router, queryServer.Schema) -} - -// RegisterMsgHandlers registers the message handlers for the accounts module. -func (am AppModule) RegisterMsgHandlers(router appmodulev2.MsgRouter) { - msgServer := NewMsgServer(am.k) - - appmodulev2.RegisterMsgHandler(router, msgServer.Execute) - appmodulev2.RegisterMsgHandler(router, msgServer.ExecuteBundle) - appmodulev2.RegisterMsgHandler(router, msgServer.Init) -} - // App module genesis func (am AppModule) DefaultGenesis() json.RawMessage { From 330954e884baa441927cb74763532080cf6d0d0a Mon Sep 17 00:00:00 2001 From: Damian Nolan Date: Wed, 4 Dec 2024 11:05:47 +0100 Subject: [PATCH 03/62] fix(baseapp): set req.Time for ctx header info in ExtendVote (#22745) --- baseapp/abci.go | 1 + 1 file changed, 1 insertion(+) diff --git a/baseapp/abci.go b/baseapp/abci.go index 9bcdb2ea4e10..31d39d87acba 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -641,6 +641,7 @@ func (app *BaseApp) ExtendVote(_ context.Context, req *abci.ExtendVoteRequest) ( ChainID: app.chainID, Height: req.Height, Hash: req.Hash, + Time: req.Time, }) // add a deferred recover handler in case extendVote panics From 7fa2356c07aad32198a6a170db682564e46405ef Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 4 Dec 2024 11:16:18 +0100 Subject: [PATCH 04/62] feat(server/v2/stf): delayed marshalling of typed event (#22684) --- server/v2/cometbft/abci.go | 28 ++++++++--- server/v2/cometbft/config.go | 26 +++++----- server/v2/cometbft/query.go | 6 ++- server/v2/cometbft/server.go | 8 +-- server/v2/cometbft/utils.go | 77 +++++++++++++++-------------- server/v2/stf/core_event_service.go | 36 ++++++++++++-- tools/confix/data/v2-app.toml | 8 ++- tools/confix/migrations.go | 2 +- 8 files changed, 122 insertions(+), 69 deletions(-) diff --git a/server/v2/cometbft/abci.go b/server/v2/cometbft/abci.go index e6a07fd86f07..c8fc58649e41 100644 --- a/server/v2/cometbft/abci.go +++ b/server/v2/cometbft/abci.go @@ -62,9 +62,9 @@ type consensus[T transaction.Tx] struct { streamingManager streaming.Manager mempool mempool.Mempool[T] - cfg Config - chainID string - indexedEvents map[string]struct{} + cfg Config + chainID string + indexedABCIEvents map[string]struct{} initialHeight uint64 // this is only available after this node has committed a block (in FinalizeBlock), @@ -105,9 +105,16 @@ func (c *consensus[T]) CheckTx(ctx context.Context, req *abciproto.CheckTxReques return nil, err } - events, err := intoABCIEvents(resp.Events, c.indexedEvents) - if err != nil { - return nil, err + events := make([]abci.Event, 0) + if !c.cfg.AppTomlConfig.DisableABCIEvents { + events, err = intoABCIEvents( + resp.Events, + c.indexedABCIEvents, + c.cfg.AppTomlConfig.DisableIndexABCIEvents, + ) + if err != nil { + return nil, err + } } cometResp := &abciproto.CheckTxResponse{ @@ -116,6 +123,7 @@ func (c *consensus[T]) CheckTx(ctx context.Context, req *abciproto.CheckTxReques GasUsed: uint64ToInt64(resp.GasUsed), Events: events, } + if resp.Error != nil { space, code, log := errorsmod.ABCIInfo(resp.Error, c.cfg.AppTomlConfig.Trace) cometResp.Code = code @@ -557,7 +565,13 @@ func (c *consensus[T]) FinalizeBlock( return nil, err } - return finalizeBlockResponse(resp, cp, appHash, c.indexedEvents, c.cfg.AppTomlConfig.Trace) + return finalizeBlockResponse( + resp, + cp, + appHash, + c.indexedABCIEvents, + c.cfg.AppTomlConfig, + ) } func (c *consensus[T]) internalFinalizeBlock( diff --git a/server/v2/cometbft/config.go b/server/v2/cometbft/config.go index d8e591a9695c..a97ec834c541 100644 --- a/server/v2/cometbft/config.go +++ b/server/v2/cometbft/config.go @@ -16,7 +16,6 @@ type Config struct { func DefaultAppTomlConfig() *AppTomlConfig { return &AppTomlConfig{ MinRetainBlocks: 0, - IndexEvents: make([]string, 0), HaltHeight: 0, HaltTime: 0, Address: "tcp://127.0.0.1:26658", @@ -28,22 +27,27 @@ func DefaultAppTomlConfig() *AppTomlConfig { Target: make(map[string]indexer.Config), ChannelBufferSize: 1024, }, + IndexABCIEvents: make([]string, 0), + DisableIndexABCIEvents: false, + DisableABCIEvents: false, } } type AppTomlConfig struct { - MinRetainBlocks uint64 `mapstructure:"min-retain-blocks" toml:"min-retain-blocks" comment:"min-retain-blocks defines the minimum block height offset from the current block being committed, such that all blocks past this offset are pruned from CometBFT. A value of 0 indicates that no blocks should be pruned."` - IndexEvents []string `mapstructure:"index-events" toml:"index-events" comment:"index-events defines the set of events in the form {eventType}.{attributeKey}, which informs CometBFT what to index. If empty, all events will be indexed."` - HaltHeight uint64 `mapstructure:"halt-height" toml:"halt-height" comment:"halt-height contains a non-zero block height at which a node will gracefully halt and shutdown that can be used to assist upgrades and testing."` - HaltTime uint64 `mapstructure:"halt-time" toml:"halt-time" comment:"halt-time contains a non-zero minimum block time (in Unix seconds) at which a node will gracefully halt and shutdown that can be used to assist upgrades and testing."` - Address string `mapstructure:"address" toml:"address" comment:"address defines the CometBFT RPC server address to bind to."` - Transport string `mapstructure:"transport" toml:"transport" comment:"transport defines the CometBFT RPC server transport protocol: socket, grpc"` - Trace bool `mapstructure:"trace" toml:"trace" comment:"trace enables the CometBFT RPC server to output trace information about its internal operations."` - Standalone bool `mapstructure:"standalone" toml:"standalone" comment:"standalone starts the application without the CometBFT node. The node should be started separately."` + MinRetainBlocks uint64 `mapstructure:"min-retain-blocks" toml:"min-retain-blocks" comment:"min-retain-blocks defines the minimum block height offset from the current block being committed, such that all blocks past this offset are pruned from CometBFT. A value of 0 indicates that no blocks should be pruned."` + HaltHeight uint64 `mapstructure:"halt-height" toml:"halt-height" comment:"halt-height contains a non-zero block height at which a node will gracefully halt and shutdown that can be used to assist upgrades and testing."` + HaltTime uint64 `mapstructure:"halt-time" toml:"halt-time" comment:"halt-time contains a non-zero minimum block time (in Unix seconds) at which a node will gracefully halt and shutdown that can be used to assist upgrades and testing."` + Address string `mapstructure:"address" toml:"address" comment:"address defines the CometBFT RPC server address to bind to."` + Transport string `mapstructure:"transport" toml:"transport" comment:"transport defines the CometBFT RPC server transport protocol: socket, grpc"` + Trace bool `mapstructure:"trace" toml:"trace" comment:"trace enables the CometBFT RPC server to output trace information about its internal operations."` + Standalone bool `mapstructure:"standalone" toml:"standalone" comment:"standalone starts the application without the CometBFT node. The node should be started separately."` // Sub configs - Mempool mempool.Config `mapstructure:"mempool" toml:"mempool" comment:"mempool defines the configuration for the SDK built-in app-side mempool implementations."` - Indexer indexer.IndexingConfig `mapstructure:"indexer" toml:"indexer" comment:"indexer defines the configuration for the SDK built-in indexer implementation."` + Mempool mempool.Config `mapstructure:"mempool" toml:"mempool" comment:"mempool defines the configuration for the SDK built-in app-side mempool implementations."` + Indexer indexer.IndexingConfig `mapstructure:"indexer" toml:"indexer" comment:"indexer defines the configuration for the SDK built-in indexer implementation."` + IndexABCIEvents []string `mapstructure:"index-abci-events" toml:"index-abci-events" comment:"index-abci-events defines the set of events in the form {eventType}.{attributeKey}, which informs CometBFT what to index. If empty, all events will be indexed."` + DisableIndexABCIEvents bool `mapstructure:"disable-index-abci-events" toml:"disable-index-abci-events" comment:"disable-index-abci-events disables the ABCI event indexing done by CometBFT. Useful when relying on the SDK indexer for event indexing, but still want events to be included in FinalizeBlockResponse."` + DisableABCIEvents bool `mapstructure:"disable-abci-events" toml:"disable-abci-events" comment:"disable-abci-events disables all ABCI events. Useful when relying on the SDK indexer for event indexing."` } // CfgOption is a function that allows to overwrite the default server configuration. diff --git a/server/v2/cometbft/query.go b/server/v2/cometbft/query.go index f7fbe811d1b1..bf6bcfe02eb6 100644 --- a/server/v2/cometbft/query.go +++ b/server/v2/cometbft/query.go @@ -61,7 +61,11 @@ func (c *consensus[T]) handleQueryApp(ctx context.Context, path []string, req *a return nil, errorsmod.Wrap(err, "failed to simulate tx") } - bz, err := intoABCISimulationResponse(txResult, c.indexedEvents) + bz, err := intoABCISimulationResponse( + txResult, + c.indexedABCIEvents, + c.cfg.AppTomlConfig.DisableIndexABCIEvents, + ) if err != nil { return nil, errorsmod.Wrap(err, "failed to marshal txResult") } diff --git a/server/v2/cometbft/server.go b/server/v2/cometbft/server.go index ed0c4fba8702..51c24285e440 100644 --- a/server/v2/cometbft/server.go +++ b/server/v2/cometbft/server.go @@ -122,9 +122,9 @@ func New[T transaction.Tx]( } } - indexEvents := make(map[string]struct{}, len(srv.config.AppTomlConfig.IndexEvents)) - for _, e := range srv.config.AppTomlConfig.IndexEvents { - indexEvents[e] = struct{}{} + indexedABCIEvents := make(map[string]struct{}, len(srv.config.AppTomlConfig.IndexABCIEvents)) + for _, e := range srv.config.AppTomlConfig.IndexABCIEvents { + indexedABCIEvents[e] = struct{}{} } sc := store.GetStateCommitment().(snapshots.CommitSnapshotter) @@ -183,7 +183,7 @@ func New[T transaction.Tx]( checkTxHandler: srv.serverOptions.CheckTxHandler, extendVote: srv.serverOptions.ExtendVoteHandler, chainID: chainID, - indexedEvents: indexEvents, + indexedABCIEvents: indexedABCIEvents, initialHeight: 0, queryHandlersMap: queryHandlers, getProtoRegistry: sync.OnceValues(gogoproto.MergedRegistry), diff --git a/server/v2/cometbft/utils.go b/server/v2/cometbft/utils.go index 09b32c3d00b1..3929debe65a0 100644 --- a/server/v2/cometbft/utils.go +++ b/server/v2/cometbft/utils.go @@ -70,16 +70,23 @@ func finalizeBlockResponse( cp *cmtproto.ConsensusParams, appHash []byte, indexSet map[string]struct{}, - debug bool, + cfg *AppTomlConfig, ) (*abci.FinalizeBlockResponse, error) { - allEvents := append(in.BeginBlockEvents, in.EndBlockEvents...) - - events, err := intoABCIEvents(allEvents, indexSet) - if err != nil { - return nil, err + events := make([]abci.Event, 0) + + if !cfg.DisableABCIEvents { + var err error + events, err = intoABCIEvents( + append(in.BeginBlockEvents, in.EndBlockEvents...), + indexSet, + cfg.DisableIndexABCIEvents, + ) + if err != nil { + return nil, err + } } - txResults, err := intoABCITxResults(in.TxResults, indexSet, debug) + txResults, err := intoABCITxResults(in.TxResults, indexSet, cfg) if err != nil { return nil, err } @@ -91,6 +98,7 @@ func finalizeBlockResponse( AppHash: appHash, ConsensusParamUpdates: cp, } + return resp, nil } @@ -108,12 +116,21 @@ func intoABCIValidatorUpdates(updates []appmodulev2.ValidatorUpdate) []abci.Vali return valsetUpdates } -func intoABCITxResults(results []server.TxResult, indexSet map[string]struct{}, debug bool) ([]*abci.ExecTxResult, error) { +func intoABCITxResults( + results []server.TxResult, + indexSet map[string]struct{}, + cfg *AppTomlConfig, +) ([]*abci.ExecTxResult, error) { res := make([]*abci.ExecTxResult, len(results)) for i := range results { - events, err := intoABCIEvents(results[i].Events, indexSet) - if err != nil { - return nil, err + var err error + events := make([]abci.Event, 0) + + if !cfg.DisableABCIEvents { + events, err = intoABCIEvents(results[i].Events, indexSet, cfg.DisableIndexABCIEvents) + if err != nil { + return nil, err + } } res[i] = responseExecTxResultWithEvents( @@ -121,59 +138,43 @@ func intoABCITxResults(results []server.TxResult, indexSet map[string]struct{}, results[i].GasWanted, results[i].GasUsed, events, - debug, + cfg.Trace, ) } return res, nil } -func intoABCIEvents(events []event.Event, indexSet map[string]struct{}) ([]abci.Event, error) { +func intoABCIEvents(events []event.Event, indexSet map[string]struct{}, indexNone bool) ([]abci.Event, error) { indexAll := len(indexSet) == 0 abciEvents := make([]abci.Event, len(events)) for i, e := range events { - attributes, err := e.Attributes() + attrs, err := e.Attributes() if err != nil { return nil, err } + abciEvents[i] = abci.Event{ Type: e.Type, - Attributes: make([]abci.EventAttribute, len(attributes)), + Attributes: make([]abci.EventAttribute, len(attrs)), } - for j, attr := range attributes { + for j, attr := range attrs { _, index := indexSet[fmt.Sprintf("%s.%s", e.Type, attr.Key)] abciEvents[i].Attributes[j] = abci.EventAttribute{ Key: attr.Key, Value: attr.Value, - Index: index || indexAll, + Index: !indexNone && (index || indexAll), } } } return abciEvents, nil } -func intoABCISimulationResponse(txRes server.TxResult, indexSet map[string]struct{}) ([]byte, error) { - indexAll := len(indexSet) == 0 - abciEvents := make([]abci.Event, len(txRes.Events)) - for i, e := range txRes.Events { - attributes, err := e.Attributes() - if err != nil { - return nil, err - } - abciEvents[i] = abci.Event{ - Type: e.Type, - Attributes: make([]abci.EventAttribute, len(attributes)), - } - - for j, attr := range attributes { - _, index := indexSet[fmt.Sprintf("%s.%s", e.Type, attr.Key)] - abciEvents[i].Attributes[j] = abci.EventAttribute{ - Key: attr.Key, - Value: attr.Value, - Index: index || indexAll, - } - } +func intoABCISimulationResponse(txRes server.TxResult, indexSet map[string]struct{}, indexNone bool) ([]byte, error) { + abciEvents, err := intoABCIEvents(txRes.Events, indexSet, indexNone) + if err != nil { + return nil, err } msgResponses := make([]*gogoany.Any, len(txRes.Resp)) diff --git a/server/v2/stf/core_event_service.go b/server/v2/stf/core_event_service.go index 9f9b48080cae..182848db45eb 100644 --- a/server/v2/stf/core_event_service.go +++ b/server/v2/stf/core_event_service.go @@ -39,18 +39,44 @@ type eventManager struct { // Emit emits an typed event that is defined in the protobuf file. // In the future these events will be added to consensus. func (em *eventManager) Emit(tev transaction.Msg) error { - res, err := TypedEventToEvent(tev) - if err != nil { - return err + ev := event.Event{ + Type: gogoproto.MessageName(tev), + Attributes: func() ([]event.Attribute, error) { + outerEvent, err := TypedEventToEvent(tev) + if err != nil { + return nil, err + } + + return outerEvent.Attributes() + }, + Data: func() (json.RawMessage, error) { + buf := new(bytes.Buffer) + jm := &jsonpb.Marshaler{OrigName: true, EmitDefaults: true, AnyResolver: nil} + if err := jm.Marshal(buf, tev); err != nil { + return nil, err + } + + return buf.Bytes(), nil + }, } - em.executionContext.events = append(em.executionContext.events, res) + em.executionContext.events = append(em.executionContext.events, ev) return nil } // EmitKV emits a key value pair event. func (em *eventManager) EmitKV(eventType string, attrs ...event.Attribute) error { - em.executionContext.events = append(em.executionContext.events, event.NewEvent(eventType, attrs...)) + ev := event.Event{ + Type: eventType, + Attributes: func() ([]event.Attribute, error) { + return attrs, nil + }, + Data: func() (json.RawMessage, error) { + return json.Marshal(attrs) + }, + } + + em.executionContext.events = append(em.executionContext.events, ev) return nil } diff --git a/tools/confix/data/v2-app.toml b/tools/confix/data/v2-app.toml index 2f9ed9e734d3..7d136a84c2c6 100644 --- a/tools/confix/data/v2-app.toml +++ b/tools/confix/data/v2-app.toml @@ -1,8 +1,6 @@ [comet] # min-retain-blocks defines the minimum block height offset from the current block being committed, such that all blocks past this offset are pruned from CometBFT. A value of 0 indicates that no blocks should be pruned. min-retain-blocks = 0 -# index-events defines the set of events in the form {eventType}.{attributeKey}, which informs CometBFT what to index. If empty, all events will be indexed. -index-events = [] # halt-height contains a non-zero block height at which a node will gracefully halt and shutdown that can be used to assist upgrades and testing. halt-height = 0 # halt-time contains a non-zero minimum block time (in Unix seconds) at which a node will gracefully halt and shutdown that can be used to assist upgrades and testing. @@ -15,6 +13,12 @@ transport = 'socket' trace = false # standalone starts the application without the CometBFT node. The node should be started separately. standalone = false +# index-abci-events defines the set of events in the form {eventType}.{attributeKey}, which informs CometBFT what to index. If empty, all events will be indexed. +index-abci-events = [] +# disable-index-abci-events disables the ABCI event indexing done by CometBFT. Useful when relying on the SDK indexer for event indexing, but still want events to be included in FinalizeBlockResponse. +disable-index-abci-events = false +# disable-abci-events disables all ABCI events. Useful when relying on the SDK indexer for event indexing. +disable-abci-events = false # mempool defines the configuration for the SDK built-in app-side mempool implementations. [comet.mempool] diff --git a/tools/confix/migrations.go b/tools/confix/migrations.go index 3589124c733b..cc34ffadf38d 100644 --- a/tools/confix/migrations.go +++ b/tools/confix/migrations.go @@ -41,7 +41,7 @@ type v2KeyChangesMap map[string][]string var v2KeyChanges = v2KeyChangesMap{ "minimum-gas-prices": []string{"server.minimum-gas-prices"}, "min-retain-blocks": []string{"comet.min-retain-blocks"}, - "index-events": []string{"comet.index-events"}, + "index-events": []string{"comet.index-abci-events"}, "halt-height": []string{"comet.halt-height"}, "halt-time": []string{"comet.halt-time"}, "app-db-backend": []string{"store.app-db-backend"}, From eb3bf8b0469d0185a7c3c323c8888e691a6b62ff Mon Sep 17 00:00:00 2001 From: yihuang Date: Wed, 4 Dec 2024 20:31:27 +0800 Subject: [PATCH 05/62] fix: prune cmd should disable async pruning (#22656) --- CHANGELOG.md | 1 + baseapp/options.go | 5 +++++ client/pruning/main.go | 6 ++++++ server/mock/store.go | 4 ++++ server/start.go | 1 + server/util.go | 1 + store/iavl/store.go | 7 ++++++- store/rootmulti/store.go | 15 ++++++--------- store/types/store.go | 3 +++ 9 files changed, 33 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a3515a5b7a9..8c6bc2fa2a91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i * (sims) [#21906](https://github.com/cosmos/cosmos-sdk/pull/21906) Skip sims test when running dry on validators * (cli) [#21919](https://github.com/cosmos/cosmos-sdk/pull/21919) Query address-by-acc-num by account_id instead of id. +* (cli) [#22656](https://github.com/cosmos/cosmos-sdk/pull/22656) Prune cmd should disable async pruning. ### API Breaking Changes diff --git a/baseapp/options.go b/baseapp/options.go index 743d04c5543c..54e2f88a1b3c 100644 --- a/baseapp/options.go +++ b/baseapp/options.go @@ -86,6 +86,11 @@ func SetIAVLDisableFastNode(disable bool) func(*BaseApp) { return func(bapp *BaseApp) { bapp.cms.SetIAVLDisableFastNode(disable) } } +// SetIAVLSyncPruning set sync/async pruning in the IAVL store. +func SetIAVLSyncPruning(syncPruning bool) func(*BaseApp) { + return func(bapp *BaseApp) { bapp.cms.SetIAVLSyncPruning(syncPruning) } +} + // SetInterBlockCache provides a BaseApp option function that sets the // inter-block cache. func SetInterBlockCache(cache storetypes.MultiStorePersistentCache) func(*BaseApp) { diff --git a/client/pruning/main.go b/client/pruning/main.go index bdcff50a9bc5..0168308ea325 100644 --- a/client/pruning/main.go +++ b/client/pruning/main.go @@ -50,6 +50,9 @@ Supported app-db-backend types include 'goleveldb', 'rocksdb', 'pebbledb'.`, return err } + // must disable async pruning + vp.Set(server.FlagIAVLSyncPruning, true) + // use the first argument if present to set the pruning method if len(args) > 0 { vp.Set(server.FlagPruning, args[0]) @@ -72,6 +75,9 @@ Supported app-db-backend types include 'goleveldb', 'rocksdb', 'pebbledb'.`, return err } + // in our test, it's important to close db explicitly for pebbledb to write to disk. + defer db.Close() + logger := log.NewLogger(cmd.OutOrStdout()) app := appCreator(logger, db, nil, vp) cms := app.CommitMultiStore() diff --git a/server/mock/store.go b/server/mock/store.go index 18bb4f2d7d40..12755c613731 100644 --- a/server/mock/store.go +++ b/server/mock/store.go @@ -142,6 +142,10 @@ func (ms multiStore) SetIAVLDisableFastNode(disable bool) { panic("not implemented") } +func (ms multiStore) SetIAVLSyncPruning(syncPruning bool) { + panic("not implemented") +} + func (ms multiStore) SetInitialVersion(version int64) error { panic("not implemented") } diff --git a/server/start.go b/server/start.go index f9ae56676305..7c74255e6992 100644 --- a/server/start.go +++ b/server/start.go @@ -79,6 +79,7 @@ const ( FlagMinRetainBlocks = "min-retain-blocks" FlagIAVLCacheSize = "iavl-cache-size" FlagDisableIAVLFastNode = "iavl-disable-fastnode" + FlagIAVLSyncPruning = "iavl-sync-pruning" FlagShutdownGrace = "shutdown-grace" // state sync-related flags diff --git a/server/util.go b/server/util.go index ca28fc568a3b..4bd944d356fb 100644 --- a/server/util.go +++ b/server/util.go @@ -555,6 +555,7 @@ func DefaultBaseappOptions(appOpts types.AppOptions) []func(*baseapp.BaseApp) { baseapp.SetSnapshot(snapshotStore, snapshotOptions), baseapp.SetIAVLCacheSize(cast.ToInt(appOpts.Get(FlagIAVLCacheSize))), baseapp.SetIAVLDisableFastNode(cast.ToBool(appOpts.Get(FlagDisableIAVLFastNode))), + baseapp.SetIAVLSyncPruning(cast.ToBool(appOpts.Get(FlagIAVLSyncPruning))), defaultMempool, baseapp.SetChainID(chainID), baseapp.SetQueryGasLimit(cast.ToUint64(appOpts.Get(FlagQueryGasLimit))), diff --git a/store/iavl/store.go b/store/iavl/store.go index ab04b73c47b7..aa44a0b7438d 100644 --- a/store/iavl/store.go +++ b/store/iavl/store.go @@ -51,11 +51,16 @@ func LoadStore(db corestore.KVStoreWithBatch, logger types.Logger, key types.Sto // provided DB. An error is returned if the version fails to load, or if called with a positive // version on an empty tree. func LoadStoreWithInitialVersion(db corestore.KVStoreWithBatch, logger types.Logger, key types.StoreKey, id types.CommitID, initialVersion uint64, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics) (types.CommitKVStore, error) { + return LoadStoreWithOpts(db, logger, key, id, initialVersion, cacheSize, disableFastNode, metrics, iavl.AsyncPruningOption(true)) +} + +func LoadStoreWithOpts(db corestore.KVStoreWithBatch, logger types.Logger, key types.StoreKey, id types.CommitID, initialVersion uint64, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics, opts ...iavl.Option) (types.CommitKVStore, error) { // store/v1 and app/v1 flows never require an initial version of 0 if initialVersion == 0 { initialVersion = 1 } - tree := iavl.NewMutableTree(db, cacheSize, disableFastNode, logger, iavl.InitialVersionOption(initialVersion), iavl.AsyncPruningOption(true)) + opts = append(opts, iavl.InitialVersionOption(initialVersion)) + tree := iavl.NewMutableTree(db, cacheSize, disableFastNode, logger, opts...) isUpgradeable, err := tree.IsUpgradeable() if err != nil { diff --git a/store/rootmulti/store.go b/store/rootmulti/store.go index e821e930de7f..50ccc8af67b1 100644 --- a/store/rootmulti/store.go +++ b/store/rootmulti/store.go @@ -63,6 +63,7 @@ type Store struct { pruningManager *pruning.Manager iavlCacheSize int iavlDisableFastNode bool + iavlSyncPruning bool storesParams map[types.StoreKey]storeParams stores map[types.StoreKey]types.CommitKVStore keysByName map[string]types.StoreKey @@ -133,6 +134,10 @@ func (rs *Store) SetIAVLDisableFastNode(disableFastNode bool) { rs.iavlDisableFastNode = disableFastNode } +func (rs *Store) SetIAVLSyncPruning(syncPruning bool) { + rs.iavlSyncPruning = syncPruning +} + // GetStoreType implements Store. func (rs *Store) GetStoreType() types.StoreType { return types.StoreTypeMulti @@ -1033,15 +1038,7 @@ func (rs *Store) loadCommitStoreFromParams(key types.StoreKey, id types.CommitID panic("recursive MultiStores not yet supported") case types.StoreTypeIAVL: - var store types.CommitKVStore - var err error - - if params.initialVersion == 0 { - store, err = iavl.LoadStore(db, rs.logger, key, id, rs.iavlCacheSize, rs.iavlDisableFastNode, rs.metrics) - } else { - store, err = iavl.LoadStoreWithInitialVersion(db, rs.logger, key, id, params.initialVersion, rs.iavlCacheSize, rs.iavlDisableFastNode, rs.metrics) - } - + store, err := iavl.LoadStoreWithOpts(db, rs.logger, key, id, params.initialVersion, rs.iavlCacheSize, rs.iavlDisableFastNode, rs.metrics, iavltree.AsyncPruningOption(!rs.iavlSyncPruning)) if err != nil { return nil, err } diff --git a/store/types/store.go b/store/types/store.go index 8aab76a170b0..16ffc90c72d1 100644 --- a/store/types/store.go +++ b/store/types/store.go @@ -221,6 +221,9 @@ type CommitMultiStore interface { // SetIAVLDisableFastNode enables/disables fastnode feature on iavl. SetIAVLDisableFastNode(disable bool) + // SetIAVLSyncPruning set sync/async pruning on iavl. + SetIAVLSyncPruning(sync bool) + // RollbackToVersion rollback the db to specific version(height). RollbackToVersion(version int64) error From 92ddbf7dc33de110e5de2fc351c0c0d823274466 Mon Sep 17 00:00:00 2001 From: Damian Nolan Date: Wed, 4 Dec 2024 16:15:56 +0100 Subject: [PATCH 06/62] fix(baseapp): sort res.Validators before comparing in InitChain (#22757) --- baseapp/abci.go | 1 + 1 file changed, 1 insertion(+) diff --git a/baseapp/abci.go b/baseapp/abci.go index 31d39d87acba..491c40ae5a6e 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -121,6 +121,7 @@ func (app *BaseApp) InitChain(req *abci.InitChainRequest) (*abci.InitChainRespon } sort.Sort(abcitypes.ValidatorUpdates(req.Validators)) + sort.Sort(abcitypes.ValidatorUpdates(res.Validators)) for i := range res.Validators { if !proto.Equal(&res.Validators[i], &req.Validators[i]) { From 556102cfa04678d4be8ccd2dd425c7154e28943d Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 4 Dec 2024 17:06:09 +0100 Subject: [PATCH 07/62] fix(server/v2/cometbft): proper query error (#22746) Co-authored-by: mmsqe --- server/v2/cometbft/abci.go | 11 ++++----- server/v2/cometbft/go.mod | 2 +- server/v2/cometbft/utils.go | 45 +++++++++++++++++++++++++++++++++---- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/server/v2/cometbft/abci.go b/server/v2/cometbft/abci.go index c8fc58649e41..c376f4ac2690 100644 --- a/server/v2/cometbft/abci.go +++ b/server/v2/cometbft/abci.go @@ -188,7 +188,7 @@ func (c *consensus[T]) Query(ctx context.Context, req *abciproto.QueryRequest) ( // it must be an app/p2p/store query path := splitABCIQueryPath(req.Path) if len(path) == 0 { - return QueryResult(errorsmod.Wrap(cometerrors.ErrUnknownRequest, "no query path provided"), c.cfg.AppTomlConfig.Trace), nil + return queryResult(errorsmod.Wrap(cometerrors.ErrUnknownRequest, "no query path provided"), c.cfg.AppTomlConfig.Trace), nil } switch path[0] { @@ -202,11 +202,11 @@ func (c *consensus[T]) Query(ctx context.Context, req *abciproto.QueryRequest) ( resp, err = c.handleQueryP2P(path) default: - resp = QueryResult(errorsmod.Wrapf(cometerrors.ErrUnknownRequest, "unknown query path %s", req.Path), c.cfg.AppTomlConfig.Trace) + resp = queryResult(errorsmod.Wrapf(cometerrors.ErrUnknownRequest, "unknown query path %s", req.Path), c.cfg.AppTomlConfig.Trace) } if err != nil { - return QueryResult(err, c.cfg.AppTomlConfig.Trace), nil + return queryResult(err, c.cfg.AppTomlConfig.Trace), nil } return resp, nil @@ -291,11 +291,12 @@ func (c *consensus[T]) maybeRunGRPCQuery(ctx context.Context, req *abci.QueryReq if err != nil { return nil, true, fmt.Errorf("unable to decode gRPC request with path %s from ABCI.Query: %w", req.Path, err) } + res, err := c.app.Query(ctx, uint64(req.Height), protoRequest) if err != nil { - resp := QueryResult(err, c.cfg.AppTomlConfig.Trace) + resp := gRPCErrorToSDKError(err) resp.Height = req.Height - return resp, true, err + return resp, true, nil } resp, err = queryResponse(res, req.Height) diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod index 22a91f18d97f..3bd6d7fdb16f 100644 --- a/server/v2/cometbft/go.mod +++ b/server/v2/cometbft/go.mod @@ -21,6 +21,7 @@ require ( cosmossdk.io/api v0.7.6 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 + cosmossdk.io/errors v1.0.1 cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 cosmossdk.io/log v1.5.0 cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b @@ -46,7 +47,6 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/core/testing v0.0.0 // indirect cosmossdk.io/depinject v1.1.0 // indirect - cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect diff --git a/server/v2/cometbft/utils.go b/server/v2/cometbft/utils.go index 3929debe65a0..d4c3ccf86ba0 100644 --- a/server/v2/cometbft/utils.go +++ b/server/v2/cometbft/utils.go @@ -12,16 +12,19 @@ import ( cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1" gogoproto "github.com/cosmos/gogoproto/proto" gogoany "github.com/cosmos/gogoproto/types/any" + "google.golang.org/grpc/codes" + grpcstatus "google.golang.org/grpc/status" appmodulev2 "cosmossdk.io/core/appmodule/v2" "cosmossdk.io/core/comet" "cosmossdk.io/core/event" "cosmossdk.io/core/server" "cosmossdk.io/core/transaction" - errorsmod "cosmossdk.io/errors/v2" + errorsmod "cosmossdk.io/errors" // we aren't using errors/v2 as it doesn't support grpc status codes "cosmossdk.io/x/consensus/types" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) func queryResponse(res transaction.Msg, height int64) (*abci.QueryResponse, error) { @@ -258,9 +261,8 @@ func ToSDKExtendedCommitInfo(commit abci.ExtendedCommitInfo) comet.CommitInfo { return ci } -// QueryResult returns a ResponseQuery from an error. It will try to parse ABCI -// info from the error. -func QueryResult(err error, debug bool) *abci.QueryResponse { +// queryResult returns a ResponseQuery from an error. It will try to parse ABCI info from the error. +func queryResult(err error, debug bool) *abci.QueryResponse { space, code, log := errorsmod.ABCIInfo(err, debug) return &abci.QueryResponse{ Codespace: space, @@ -269,6 +271,41 @@ func QueryResult(err error, debug bool) *abci.QueryResponse { } } +func gRPCErrorToSDKError(err error) *abci.QueryResponse { + toQueryResp := func(sdkErr *errorsmod.Error, err error) *abci.QueryResponse { + res := &abci.QueryResponse{ + Code: sdkErr.ABCICode(), + Codespace: sdkErr.Codespace(), + } + type grpcStatus interface{ GRPCStatus() *grpcstatus.Status } + if grpcErr, ok := err.(grpcStatus); ok { + res.Log = grpcErr.GRPCStatus().Message() + } else { + res.Log = err.Error() + } + return res + + } + + status, ok := grpcstatus.FromError(err) + if !ok { + return toQueryResp(sdkerrors.ErrInvalidRequest, err) + } + + switch status.Code() { + case codes.NotFound: + return toQueryResp(sdkerrors.ErrKeyNotFound, err) + case codes.InvalidArgument: + return toQueryResp(sdkerrors.ErrInvalidRequest, err) + case codes.FailedPrecondition: + return toQueryResp(sdkerrors.ErrInvalidRequest, err) + case codes.Unauthenticated: + return toQueryResp(sdkerrors.ErrUnauthorized, err) + default: + return toQueryResp(sdkerrors.ErrUnknownRequest, err) + } +} + func (c *consensus[T]) validateFinalizeBlockHeight(req *abci.FinalizeBlockRequest) error { if req.Height < 1 { return fmt.Errorf("invalid height: %d", req.Height) From f8a3226ad5f3bc908ff137f9822384891e83392c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 07:32:55 +0100 Subject: [PATCH 08/62] build(deps): Bump github.com/prometheus/common from 0.60.1 to 0.61.0 (#22761) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- client/v2/go.mod | 14 ++++++------- client/v2/go.sum | 28 ++++++++++++------------- collections/protocodec/go.mod | 9 ++++---- collections/protocodec/go.sum | 24 +++++++++++----------- go.mod | 14 ++++++------- go.sum | 28 ++++++++++++------------- orm/go.mod | 8 ++++---- orm/go.sum | 20 +++++++++--------- runtime/v2/go.mod | 12 +++++------ runtime/v2/go.sum | 24 +++++++++++----------- server/v2/cometbft/go.mod | 14 ++++++------- server/v2/cometbft/go.sum | 28 ++++++++++++------------- server/v2/go.mod | 12 +++++------ server/v2/go.sum | 24 +++++++++++----------- simapp/go.mod | 16 +++++++-------- simapp/go.sum | 32 ++++++++++++++--------------- simapp/v2/go.mod | 16 +++++++-------- simapp/v2/go.sum | 32 ++++++++++++++--------------- store/v2/go.mod | 8 ++++---- store/v2/go.sum | 20 +++++++++--------- systemtests/go.mod | 16 +++++++-------- systemtests/go.sum | 32 ++++++++++++++--------------- tests/go.mod | 16 +++++++-------- tests/go.sum | 32 ++++++++++++++--------------- tests/systemtests/go.mod | 14 ++++++------- tests/systemtests/go.sum | 28 ++++++++++++------------- tools/confix/go.mod | 14 ++++++------- tools/confix/go.sum | 28 ++++++++++++------------- tools/cosmovisor/go.mod | 16 +++++++-------- tools/cosmovisor/go.sum | 32 ++++++++++++++--------------- tools/hubl/go.mod | 14 ++++++------- tools/hubl/go.sum | 28 ++++++++++++------------- x/accounts/defaults/base/go.mod | 14 ++++++------- x/accounts/defaults/base/go.sum | 28 ++++++++++++------------- x/accounts/defaults/lockup/go.mod | 14 ++++++------- x/accounts/defaults/lockup/go.sum | 28 ++++++++++++------------- x/accounts/defaults/multisig/go.mod | 14 ++++++------- x/accounts/defaults/multisig/go.sum | 28 ++++++++++++------------- x/accounts/go.mod | 14 ++++++------- x/accounts/go.sum | 28 ++++++++++++------------- x/authz/go.mod | 14 ++++++------- x/authz/go.sum | 28 ++++++++++++------------- x/bank/go.mod | 14 ++++++------- x/bank/go.sum | 28 ++++++++++++------------- x/circuit/go.mod | 14 ++++++------- x/circuit/go.sum | 28 ++++++++++++------------- x/consensus/go.mod | 14 ++++++------- x/consensus/go.sum | 28 ++++++++++++------------- x/distribution/go.mod | 14 ++++++------- x/distribution/go.sum | 28 ++++++++++++------------- x/epochs/go.mod | 14 ++++++------- x/epochs/go.sum | 28 ++++++++++++------------- x/evidence/go.mod | 14 ++++++------- x/evidence/go.sum | 28 ++++++++++++------------- x/feegrant/go.mod | 14 ++++++------- x/feegrant/go.sum | 28 ++++++++++++------------- x/gov/go.mod | 14 ++++++------- x/gov/go.sum | 28 ++++++++++++------------- x/group/go.mod | 14 ++++++------- x/group/go.sum | 28 ++++++++++++------------- x/mint/go.mod | 14 ++++++------- x/mint/go.sum | 28 ++++++++++++------------- x/nft/go.mod | 14 ++++++------- x/nft/go.sum | 28 ++++++++++++------------- x/params/go.mod | 14 ++++++------- x/params/go.sum | 28 ++++++++++++------------- x/protocolpool/go.mod | 14 ++++++------- x/protocolpool/go.sum | 28 ++++++++++++------------- x/slashing/go.mod | 14 ++++++------- x/slashing/go.sum | 28 ++++++++++++------------- x/staking/go.mod | 14 ++++++------- x/staking/go.sum | 28 ++++++++++++------------- x/upgrade/go.mod | 16 +++++++-------- x/upgrade/go.sum | 32 ++++++++++++++--------------- 74 files changed, 770 insertions(+), 771 deletions(-) diff --git a/client/v2/go.mod b/client/v2/go.mod index ced3d482adfc..377ec6a8c91e 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -133,7 +133,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -159,14 +159,14 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect diff --git a/client/v2/go.sum b/client/v2/go.sum index da9886ff6234..456906d72dda 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -427,8 +427,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -529,8 +529,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -561,8 +561,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -572,8 +572,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -611,19 +611,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/collections/protocodec/go.mod b/collections/protocodec/go.mod index aca32fa33157..d8a68f2a0e61 100644 --- a/collections/protocodec/go.mod +++ b/collections/protocodec/go.mod @@ -37,16 +37,15 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_golang v1.20.4 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/spf13/cast v1.7.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/sys v0.26.0 // indirect - golang.org/x/text v0.17.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/collections/protocodec/go.sum b/collections/protocodec/go.sum index 71fc9a9680b4..812e888b95f6 100644 --- a/collections/protocodec/go.sum +++ b/collections/protocodec/go.sum @@ -109,12 +109,12 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= -github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -147,14 +147,14 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -171,16 +171,16 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/go.mod b/go.mod index 835c5bc8c8fd..aa60d3318d2d 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( github.com/mdp/qrterminal/v3 v3.2.0 github.com/muesli/termenv v0.15.2 github.com/prometheus/client_golang v1.20.5 - github.com/prometheus/common v0.60.1 + github.com/prometheus/common v0.61.0 github.com/rs/zerolog v1.33.0 github.com/spf13/cast v1.7.0 github.com/spf13/cobra v1.8.1 @@ -53,8 +53,8 @@ require ( github.com/tendermint/go-amino v0.16.0 gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b go.uber.org/mock v0.5.0 - golang.org/x/crypto v0.29.0 - golang.org/x/sync v0.9.0 + golang.org/x/crypto v0.30.0 + golang.org/x/sync v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 google.golang.org/grpc v1.68.0 google.golang.org/protobuf v1.35.2 @@ -165,10 +165,10 @@ require ( golang.org/x/arch v0.12.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/go.sum b/go.sum index 4b90d9302b1c..b32a666dfdef 100644 --- a/go.sum +++ b/go.sum @@ -416,8 +416,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -520,8 +520,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -596,19 +596,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/orm/go.mod b/orm/go.mod index a3af883e2e83..6167db5c5e29 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -56,16 +56,16 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/spf13/cast v1.7.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 - golang.org/x/net v0.30.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/orm/go.sum b/orm/go.sum index 2acaba24e673..37ae96243591 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -142,8 +142,8 @@ github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+ github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/regen-network/gocuke v1.1.1 h1:13D3n5xLbpzA/J2ELHC9jXYq0+XyEr64A3ehjvfmBbE= @@ -185,15 +185,15 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -210,16 +210,16 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/runtime/v2/go.mod b/runtime/v2/go.mod index c02c29466ff9..63c3133abac4 100644 --- a/runtime/v2/go.mod +++ b/runtime/v2/go.mod @@ -71,7 +71,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/zerolog v1.33.0 // indirect @@ -82,12 +82,12 @@ require ( github.com/tidwall/btree v1.7.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/runtime/v2/go.sum b/runtime/v2/go.sum index 723b257f47e0..006844192ba4 100644 --- a/runtime/v2/go.sum +++ b/runtime/v2/go.sum @@ -211,8 +211,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -264,8 +264,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -281,8 +281,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -290,8 +290,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -315,16 +315,16 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod index 3bd6d7fdb16f..190bd9e3688c 100644 --- a/server/v2/cometbft/go.mod +++ b/server/v2/cometbft/go.mod @@ -144,7 +144,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -171,14 +171,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect diff --git a/server/v2/cometbft/go.sum b/server/v2/cometbft/go.sum index 1999a87be3ed..2c5906c652cd 100644 --- a/server/v2/cometbft/go.sum +++ b/server/v2/cometbft/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/server/v2/go.mod b/server/v2/go.mod index 8de9635ee4ec..16c7043c5836 100644 --- a/server/v2/go.mod +++ b/server/v2/go.mod @@ -29,7 +29,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 github.com/pelletier/go-toml/v2 v2.2.2 github.com/prometheus/client_golang v1.20.5 - github.com/prometheus/common v0.60.1 + github.com/prometheus/common v0.61.0 github.com/rs/zerolog v1.33.0 github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 @@ -103,13 +103,13 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect diff --git a/server/v2/go.sum b/server/v2/go.sum index dcd56eab1e9b..1661a401ca79 100644 --- a/server/v2/go.sum +++ b/server/v2/go.sum @@ -281,8 +281,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -357,8 +357,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= @@ -387,8 +387,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -398,8 +398,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -433,8 +433,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -442,8 +442,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/simapp/go.mod b/simapp/go.mod index 1c55eae3a989..2db52cd2ddfe 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -186,7 +186,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect @@ -218,15 +218,15 @@ require ( go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/api v0.192.0 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index 942d060e2823..267a871389fd 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -747,8 +747,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -882,8 +882,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -976,8 +976,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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= @@ -1003,8 +1003,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1019,8 +1019,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1103,13 +1103,13 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= 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= @@ -1120,8 +1120,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= 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= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index a42a48e4410f..95545be583fb 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -186,7 +186,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect @@ -219,15 +219,15 @@ require ( go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/api v0.192.0 // indirect diff --git a/simapp/v2/go.sum b/simapp/v2/go.sum index f202fc16b0ed..bc265eea593a 100644 --- a/simapp/v2/go.sum +++ b/simapp/v2/go.sum @@ -738,8 +738,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -873,8 +873,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -967,8 +967,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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= @@ -994,8 +994,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1010,8 +1010,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1094,13 +1094,13 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= 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= @@ -1111,8 +1111,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= 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= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/store/v2/go.mod b/store/v2/go.mod index ac07130d2e10..42778f347ca4 100644 --- a/store/v2/go.mod +++ b/store/v2/go.mod @@ -20,7 +20,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d go.uber.org/mock v0.5.0 - golang.org/x/sync v0.9.0 + golang.org/x/sync v0.10.0 ) require ( @@ -61,7 +61,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/zerolog v1.33.0 // indirect @@ -70,8 +70,8 @@ require ( golang.org/x/arch v0.12.0 // indirect golang.org/x/crypto v0.29.0 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/store/v2/go.sum b/store/v2/go.sum index fa8b03c077ac..ec5654d0a6a9 100644 --- a/store/v2/go.sum +++ b/store/v2/go.sum @@ -214,8 +214,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -284,16 +284,16 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -317,16 +317,16 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/systemtests/go.mod b/systemtests/go.mod index b2036b6ceb71..91e3fd48ef5f 100644 --- a/systemtests/go.mod +++ b/systemtests/go.mod @@ -8,7 +8,7 @@ require ( github.com/cometbft/cometbft/api v1.0.0-rc.1 github.com/cosmos/cosmos-sdk v0.50.6 github.com/creachadair/tomledit v0.0.26 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/tidwall/gjson v1.14.2 github.com/tidwall/sjson v1.2.5 google.golang.org/grpc v1.68.0 @@ -120,7 +120,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -148,13 +148,13 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/systemtests/go.sum b/systemtests/go.sum index 36283124bd5c..043fc13d7249 100644 --- a/systemtests/go.sum +++ b/systemtests/go.sum @@ -617,8 +617,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= 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.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= 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= @@ -697,8 +697,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= @@ -767,8 +767,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= @@ -817,8 +817,8 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -829,8 +829,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= @@ -884,20 +884,20 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tests/go.mod b/tests/go.mod index ef77ab0e0775..4a80aa8cade4 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -189,7 +189,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -220,15 +220,15 @@ require ( go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/api v0.192.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index df0a5f393011..4b64ee45b2f6 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -736,8 +736,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -869,8 +869,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -963,8 +963,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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= @@ -990,8 +990,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1006,8 +1006,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1089,13 +1089,13 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= 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= @@ -1106,8 +1106,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= 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= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/tests/systemtests/go.mod b/tests/systemtests/go.mod index ffc7e7b0b193..6608500045bb 100644 --- a/tests/systemtests/go.mod +++ b/tests/systemtests/go.mod @@ -117,7 +117,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -148,13 +148,13 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/tests/systemtests/go.sum b/tests/systemtests/go.sum index 2801bed7b720..e5b744073877 100644 --- a/tests/systemtests/go.sum +++ b/tests/systemtests/go.sum @@ -619,8 +619,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= 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.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= 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= @@ -769,8 +769,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= @@ -819,8 +819,8 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -831,8 +831,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= @@ -886,20 +886,20 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/confix/go.mod b/tools/confix/go.mod index 4e6ff62dc8b0..20881f463131 100644 --- a/tools/confix/go.mod +++ b/tools/confix/go.mod @@ -120,7 +120,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -145,13 +145,13 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/tools/confix/go.sum b/tools/confix/go.sum index 37e7cb708a8c..f17426dbb954 100644 --- a/tools/confix/go.sum +++ b/tools/confix/go.sum @@ -618,8 +618,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= 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.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= 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= @@ -761,8 +761,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= @@ -812,8 +812,8 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -825,8 +825,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= @@ -880,20 +880,20 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index 78b11c9d5325..56ff09fbcd6d 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -138,7 +138,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -168,14 +168,14 @@ require ( go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.6.0 // indirect google.golang.org/api v0.192.0 // indirect google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index 7c54d3ff4b54..56a321011df5 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -864,8 +864,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= 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.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= 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= @@ -1029,8 +1029,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1129,8 +1129,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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= @@ -1156,8 +1156,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1172,8 +1172,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= @@ -1265,13 +1265,13 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= 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= @@ -1282,8 +1282,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= 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= diff --git a/tools/hubl/go.mod b/tools/hubl/go.mod index 6d1dad069b43..3fd8ec5232d7 100644 --- a/tools/hubl/go.mod +++ b/tools/hubl/go.mod @@ -120,7 +120,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -146,13 +146,13 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/tools/hubl/go.sum b/tools/hubl/go.sum index df3ddf2e757a..72eee9310ad0 100644 --- a/tools/hubl/go.sum +++ b/tools/hubl/go.sum @@ -618,8 +618,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= 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.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= 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= @@ -760,8 +760,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= @@ -810,8 +810,8 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -822,8 +822,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= @@ -877,20 +877,20 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/accounts/defaults/base/go.mod b/x/accounts/defaults/base/go.mod index 93d9a75db44e..f0339d46db90 100644 --- a/x/accounts/defaults/base/go.mod +++ b/x/accounts/defaults/base/go.mod @@ -121,7 +121,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -150,14 +150,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect diff --git a/x/accounts/defaults/base/go.sum b/x/accounts/defaults/base/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/accounts/defaults/base/go.sum +++ b/x/accounts/defaults/base/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/accounts/defaults/lockup/go.mod b/x/accounts/defaults/lockup/go.mod index 50e5b5f5d102..debe568df167 100644 --- a/x/accounts/defaults/lockup/go.mod +++ b/x/accounts/defaults/lockup/go.mod @@ -105,7 +105,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -132,13 +132,13 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/accounts/defaults/lockup/go.sum b/x/accounts/defaults/lockup/go.sum index 065fa6596ebf..787d9ce3546e 100644 --- a/x/accounts/defaults/lockup/go.sum +++ b/x/accounts/defaults/lockup/go.sum @@ -364,8 +364,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -459,8 +459,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -489,8 +489,8 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -500,8 +500,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -526,18 +526,18 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/x/accounts/defaults/multisig/go.mod b/x/accounts/defaults/multisig/go.mod index 700dba02ea2e..956fdde665d2 100644 --- a/x/accounts/defaults/multisig/go.mod +++ b/x/accounts/defaults/multisig/go.mod @@ -121,7 +121,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -150,14 +150,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect diff --git a/x/accounts/defaults/multisig/go.sum b/x/accounts/defaults/multisig/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/accounts/defaults/multisig/go.sum +++ b/x/accounts/defaults/multisig/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index e41a551382a2..00eb8205b305 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -127,7 +127,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -154,14 +154,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect diff --git a/x/accounts/go.sum b/x/accounts/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/authz/go.mod b/x/authz/go.mod index 76cbe661365e..c98f42b61870 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -114,7 +114,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -140,14 +140,14 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/authz/go.sum b/x/authz/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/bank/go.mod b/x/bank/go.mod index dd7fe9e3a6e4..93d28689195b 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -112,7 +112,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -138,14 +138,14 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/bank/go.sum b/x/bank/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index 56849bd1be67..c267dd6d589e 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -121,7 +121,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -151,14 +151,14 @@ require ( go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/consensus/go.mod b/x/consensus/go.mod index 4ef22c40986d..d9f318f9be85 100644 --- a/x/consensus/go.mod +++ b/x/consensus/go.mod @@ -121,7 +121,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -150,14 +150,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/consensus/go.sum b/x/consensus/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/consensus/go.sum +++ b/x/consensus/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 401aa001976d..8df9afb0220a 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -123,7 +123,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -151,14 +151,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/distribution/go.sum b/x/distribution/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/epochs/go.mod b/x/epochs/go.mod index cdc73d0f0fd1..e257acf1d3b0 100644 --- a/x/epochs/go.mod +++ b/x/epochs/go.mod @@ -114,7 +114,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -141,14 +141,14 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/epochs/go.sum b/x/epochs/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/epochs/go.sum +++ b/x/epochs/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index 202f82579762..cbdc8163bc93 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -124,7 +124,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -152,14 +152,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 6e890901726d..2cb1e4e92098 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -132,7 +132,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -160,14 +160,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index da9886ff6234..456906d72dda 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -427,8 +427,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -529,8 +529,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -561,8 +561,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -572,8 +572,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -611,19 +611,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/gov/go.mod b/x/gov/go.mod index 691b6a00a3a3..b168e8471f0b 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -122,7 +122,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -147,14 +147,14 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/gov/go.sum b/x/gov/go.sum index 6353a7e865f4..a9f926b3d7b9 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -425,8 +425,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -527,8 +527,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -559,8 +559,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -570,8 +570,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -609,19 +609,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/group/go.mod b/x/group/go.mod index c6e96fac33b2..8c9908f8f8d2 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -134,7 +134,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -162,14 +162,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/group/go.sum b/x/group/go.sum index c227d6c9455a..86f893f9771a 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -427,8 +427,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -529,8 +529,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -561,8 +561,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -572,8 +572,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -611,19 +611,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/mint/go.mod b/x/mint/go.mod index 573b8f520c7a..375a84db5c02 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -114,7 +114,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -141,14 +141,14 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/mint/go.sum b/x/mint/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/nft/go.mod b/x/nft/go.mod index d5fc672c6e33..6416c5281fa3 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -122,7 +122,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -151,14 +151,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/params/go.mod b/x/params/go.mod index d4d221ac0eb3..602d780b46c4 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -117,7 +117,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -144,14 +144,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/params/go.sum b/x/params/go.sum index 7aad8dffed69..4b3e86693f99 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -393,8 +393,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -493,8 +493,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -525,8 +525,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -536,8 +536,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -572,19 +572,19 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index b42d1746d55c..f7b02a2a5d07 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -123,7 +123,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -152,14 +152,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index fad57c5e0c6e..5092eecfcd0a 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -125,7 +125,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -154,14 +154,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index 83e68b8b1318..c3810bb47a77 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -419,8 +419,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -521,8 +521,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -553,8 +553,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -564,8 +564,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -601,19 +601,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/staking/go.mod b/x/staking/go.mod index c654ec5c9b85..6b95c3255105 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -108,7 +108,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -131,13 +131,13 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/x/staking/go.sum b/x/staking/go.sum index 8124ed3835b4..78a17dea7897 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -417,8 +417,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= @@ -551,8 +551,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -562,8 +562,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,19 +599,19 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index fce45690b32e..6830d3a8f66c 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -149,7 +149,7 @@ require ( 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_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect @@ -181,15 +181,15 @@ require ( go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/term v0.26.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/api v0.192.0 // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index a08c233a0e06..fd7aa8f275d6 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -727,8 +727,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= @@ -860,8 +860,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -954,8 +954,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= 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= @@ -981,8 +981,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -997,8 +997,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1080,13 +1080,13 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= 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= @@ -1097,8 +1097,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= 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= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From ec5225c31c3260443996eebec7ef0a2b7f2fee59 Mon Sep 17 00:00:00 2001 From: Dong Lieu <93205232+DongLieu@users.noreply.github.com> Date: Thu, 5 Dec 2024 15:13:29 +0700 Subject: [PATCH 09/62] docs(x/gov): Sync Example with Use in autocli (#22768) --- x/distribution/autocli.go | 2 +- x/gov/autocli.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x/distribution/autocli.go b/x/distribution/autocli.go index d793f2626df5..49c3fefe929a 100644 --- a/x/distribution/autocli.go +++ b/x/distribution/autocli.go @@ -24,7 +24,7 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { RpcMethod: "ValidatorDistributionInfo", Use: "validator-distribution-info ", Short: "Query validator distribution info", - Example: fmt.Sprintf(`Example: $ %s query distribution validator-distribution-info [validator-address]`, version.AppName), + Example: fmt.Sprintf(`$ %s query distribution validator-distribution-info [validator-address]`, version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{ {ProtoField: "validator_address"}, diff --git a/x/gov/autocli.go b/x/gov/autocli.go index b0f97e48c0f4..dba150292cae 100644 --- a/x/gov/autocli.go +++ b/x/gov/autocli.go @@ -145,7 +145,7 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { }, { RpcMethod: "UpdateMessageParams", - Use: "update-params-msg-url-params ", + Use: "update-msg-params-proposal ", Short: "Submit a proposal to update gov module message params. Note: the entire params must be provided.", Example: fmt.Sprintf(`%s tx gov update-msg-params-proposal [msg-url]'{ params }'`, version.AppName), PositionalArgs: []*autocliv1.PositionalArgDescriptor{ From 227854e258f1923e526d6fbdbc888e197d814e2a Mon Sep 17 00:00:00 2001 From: Alex | Skip Date: Thu, 5 Dec 2024 03:29:55 -0500 Subject: [PATCH 10/62] test: fix failing `runtime/v2` test (#22760) --- runtime/v2/services_test.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/runtime/v2/services_test.go b/runtime/v2/services_test.go index 83e16d4e7141..9974d7176da7 100644 --- a/runtime/v2/services_test.go +++ b/runtime/v2/services_test.go @@ -39,8 +39,11 @@ func TestRegisterServices(t *testing.T) { }, } - mockModule.On("RegisterMsgHandlers", app.msgRouterBuilder).Once() - mockModule.On("RegisterQueryHandlers", app.queryRouterBuilder).Once() + msgWrapper := newStfRouterWrapper(app.msgRouterBuilder) + queryWrapper := newStfRouterWrapper(app.queryRouterBuilder) + + mockModule.On("RegisterMsgHandlers", &msgWrapper).Once() + mockModule.On("RegisterQueryHandlers", &queryWrapper).Once() err := mm.RegisterServices(app) From 3727f23efd2083470af70748ba2dab55497bc8c8 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 5 Dec 2024 10:51:30 +0100 Subject: [PATCH 11/62] ci: run runtime/v2 tests in CI (#22769) --- .github/workflows/v2-test.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.github/workflows/v2-test.yml b/.github/workflows/v2-test.yml index a5fe8caf6849..ee2cccea49f5 100644 --- a/.github/workflows/v2-test.yml +++ b/.github/workflows/v2-test.yml @@ -14,6 +14,30 @@ concurrency: cancel-in-progress: true jobs: + runtime-v2: + runs-on: ubuntu-latest + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: "1.23" + check-latest: true + cache: true + cache-dependency-path: go.sum + - uses: technote-space/get-diff-action@v6.1.2 + id: git_diff + with: + PATTERNS: | + runtime/v2/*.go + runtime/v2/go.mod + runtime/v2/go.sum + - name: test & coverage report creation + if: env.GIT_DIFF + run: | + cd runtime/v2 && go test -mod=readonly -race -timeout 30m -tags='ledger test_ledger_mock' + server-v2: runs-on: ubuntu-latest strategy: From 9f7f17b6679e08572b4ba44194ce8bbf7f000d9f Mon Sep 17 00:00:00 2001 From: Hieu Vu <72878483+hieuvubk@users.noreply.github.com> Date: Thu, 5 Dec 2024 17:26:13 +0700 Subject: [PATCH 12/62] test(server/v2/cometbft): Add Consensus query `p2p`, `app`, `grpc` (#22771) --- server/v2/cometbft/abci_test.go | 195 ++++++++++++++++++++++++++++++-- server/v2/cometbft/utils.go | 8 +- 2 files changed, 194 insertions(+), 9 deletions(-) diff --git a/server/v2/cometbft/abci_test.go b/server/v2/cometbft/abci_test.go index b7bc427d13b4..cfc649884660 100644 --- a/server/v2/cometbft/abci_test.go +++ b/server/v2/cometbft/abci_test.go @@ -6,6 +6,7 @@ import ( "encoding/json" "errors" "io" + "reflect" "strings" "sync" "testing" @@ -15,6 +16,7 @@ import ( abciproto "github.com/cometbft/cometbft/api/cometbft/abci/v1" v1 "github.com/cometbft/cometbft/api/cometbft/types/v1" "github.com/cosmos/gogoproto/proto" + gogoproto "github.com/cosmos/gogoproto/proto" gogotypes "github.com/cosmos/gogoproto/types" "github.com/stretchr/testify/require" @@ -33,6 +35,9 @@ import ( "cosmossdk.io/server/v2/stf/branch" "cosmossdk.io/server/v2/stf/mock" consensustypes "cosmossdk.io/x/consensus/types" + + "github.com/cosmos/cosmos-sdk/testutil/testdata" + sdk "github.com/cosmos/cosmos-sdk/types" ) var ( @@ -53,7 +58,9 @@ var ( Msg: &gogotypes.BoolValue{Value: true}, GasLimit: 0, } - actorName = []byte("cookies") + actorName = []byte("cookies") + testAcc = sdk.AccAddress([]byte("addr1_______________")) + versionStr = "0.0.0" ) func getQueryRouterBuilder[T any, PT interface { @@ -583,11 +590,7 @@ func TestConsensus_Info(t *testing.T) { require.Equal(t, res.LastBlockHeight, int64(1)) } -// TODO: -// - GRPC request -// - app request -// - p2p request -func TestConsensus_Query(t *testing.T) { +func TestConsensus_QueryStore(t *testing.T) { c := setUpConsensus(t, 100_000, cometmock.MockMempool[mock.Tx]{}) // Write data to state storage @@ -648,11 +651,149 @@ func TestConsensus_Query(t *testing.T) { require.Equal(t, res.Value, []byte(nil)) } +func TestConsensus_GRPCQuery(t *testing.T) { + c := setUpConsensus(t, 100_000, cometmock.MockMempool[mock.Tx]{}) + + _, err := c.InitChain(context.Background(), &abciproto.InitChainRequest{ + Time: time.Now(), + ChainId: "test", + InitialHeight: 1, + }) + require.NoError(t, err) + + _, err = c.FinalizeBlock(context.Background(), &abciproto.FinalizeBlockRequest{ + Time: time.Now(), + Height: 1, + Txs: [][]byte{mockTx.Bytes()}, + Hash: emptyHash[:], + }) + require.NoError(t, err) + + // empty request + res, err := c.Query(context.Background(), &abciproto.QueryRequest{}) + require.NoError(t, err) + require.Equal(t, res.Code, uint32(1)) + require.Contains(t, res.Log, "no query path provided") + + // query request not exist in handler map + invalidReq := testdata.EchoRequest{ + Message: "echo", + } + invalidReqBz, err := invalidReq.Marshal() + require.NoError(t, err) + invalidQuery := abci.QueryRequest{ + Data: invalidReqBz, + Path: "testpb.EchoRequest", + } + invalidRes, err := c.Query(context.TODO(), &invalidQuery) + require.Error(t, err) + require.Nil(t, invalidRes) + require.Contains(t, err.Error(), "no query handler found") + + // Valid query + req := testdata.SayHelloRequest{Name: "foo"} + reqBz, err := req.Marshal() + require.NoError(t, err) + reqQuery := abci.QueryRequest{ + Data: reqBz, + Path: "testpb.SayHelloRequest", + } + + resQuery, err := c.Query(context.TODO(), &reqQuery) + require.NoError(t, err) + require.Equal(t, abci.CodeTypeOK, resQuery.Code, resQuery) + + var response testdata.SayHelloResponse + require.NoError(t, response.Unmarshal(resQuery.Value)) + require.Equal(t, "Hello foo!", response.Greeting) +} + +func TestConsensus_P2PQuery(t *testing.T) { + c := setUpConsensus(t, 100_000, cometmock.MockMempool[mock.Tx]{}) + + _, err := c.InitChain(context.Background(), &abciproto.InitChainRequest{ + Time: time.Now(), + ChainId: "test", + InitialHeight: 1, + }) + require.NoError(t, err) + + _, err = c.FinalizeBlock(context.Background(), &abciproto.FinalizeBlockRequest{ + Time: time.Now(), + Height: 1, + Txs: [][]byte{mockTx.Bytes()}, + Hash: emptyHash[:], + }) + require.NoError(t, err) + + // empty request + res, err := c.Query(context.Background(), &abciproto.QueryRequest{}) + require.NoError(t, err) + require.Equal(t, res.Code, uint32(1)) + require.Contains(t, res.Log, "no query path provided") + + addrQuery := abci.QueryRequest{ + Path: "/p2p/filter/addr/1.1.1.1:8000", + } + res, err = c.Query(context.TODO(), &addrQuery) + require.NoError(t, err) + require.Equal(t, uint32(3), res.Code) + + idQuery := abci.QueryRequest{ + Path: "/p2p/filter/id/testid", + } + res, err = c.Query(context.TODO(), &idQuery) + require.NoError(t, err) + require.Equal(t, uint32(4), res.Code) +} + +func TestConsensus_AppQuery(t *testing.T) { + c := setUpConsensus(t, 100_000, cometmock.MockMempool[mock.Tx]{}) + + _, err := c.InitChain(context.Background(), &abciproto.InitChainRequest{ + Time: time.Now(), + ChainId: "test", + InitialHeight: 1, + }) + require.NoError(t, err) + + _, err = c.FinalizeBlock(context.Background(), &abciproto.FinalizeBlockRequest{ + Time: time.Now(), + Height: 1, + Txs: [][]byte{mockTx.Bytes()}, + Hash: emptyHash[:], + }) + require.NoError(t, err) + + tx := mock.Tx{ + Sender: testAcc, + Msg: &gogotypes.BoolValue{Value: true}, + GasLimit: 1000, + } + txBytes := tx.Bytes() + + // simulate by calling Query with encoded tx + query := abci.QueryRequest{ + Path: "/app/simulate", + Data: txBytes, + } + queryResult, err := c.Query(context.TODO(), &query) + require.NoError(t, err) + require.True(t, queryResult.IsOK(), queryResult.Log) + + // Query app version + res, err := c.Query(context.TODO(), &abci.QueryRequest{Path: "app/version"}) + require.NoError(t, err) + require.True(t, res.IsOK()) + require.Equal(t, versionStr, string(res.Value)) +} + func setUpConsensus(t *testing.T, gasLimit uint64, mempool mempool.Mempool[mock.Tx]) *consensus[mock.Tx] { t.Helper() + queryHandler := make(map[string]appmodulev2.Handler) msgRouterBuilder := getMsgRouterBuilder(t, func(ctx context.Context, msg *gogotypes.BoolValue) (*gogotypes.BoolValue, error) { - return nil, nil + return msg, nil }) queryRouterBuilder := getQueryRouterBuilder(t, func(ctx context.Context, q *consensustypes.QueryParamsRequest) (*consensustypes.QueryParamsResponse, error) { @@ -669,6 +810,32 @@ func setUpConsensus(t *testing.T, gasLimit uint64, mempool mempool.Mempool[mock. }, nil }) + helloFooHandler := func(ctx context.Context, msg transaction.Msg) (msgResp transaction.Msg, err error) { + typedReq := msg.(*testdata.SayHelloRequest) + handler := testdata.QueryImpl{} + typedResp, err := handler.SayHello(ctx, typedReq) + if err != nil { + return nil, err + } + + return typedResp, nil + } + + queryRouterBuilder.RegisterHandler( + proto.MessageName(&testdata.SayHelloRequest{}), + helloFooHandler, + ) + + queryHandler[proto.MessageName(&testdata.SayHelloRequest{})] = appmodulev2.Handler{ + Func: helloFooHandler, + MakeMsg: func() transaction.Msg { + return reflect.New(gogoproto.MessageType(proto.MessageName(&testdata.SayHelloRequest{})).Elem()).Interface().(transaction.Msg) + }, + MakeMsgResp: func() transaction.Msg { + return reflect.New(gogoproto.MessageType(proto.MessageName(&testdata.SayHelloResponse{})).Elem()).Interface().(transaction.Msg) + }, + } + s, err := stf.New( log.NewNopLogger().With("module", "stf"), msgRouterBuilder, @@ -709,6 +876,16 @@ func setUpConsensus(t *testing.T, gasLimit uint64, mempool mempool.Mempool[mock. nil, ) + addrPeerFilter := func(info string) (*abci.QueryResponse, error) { + require.Equal(t, "1.1.1.1:8000", info) + return &abci.QueryResponse{Code: uint32(3)}, nil + } + + idPeerFilter := func(id string) (*abci.QueryResponse, error) { + require.Equal(t, "testid", id) + return &abci.QueryResponse{Code: uint32(4)}, nil + } + return &consensus[mock.Tx]{ logger: log.NewNopLogger(), appName: "testing-app", @@ -719,6 +896,10 @@ func setUpConsensus(t *testing.T, gasLimit uint64, mempool mempool.Mempool[mock. txCodec: mock.TxCodec{}, chainID: "test", getProtoRegistry: sync.OnceValues(proto.MergedRegistry), + queryHandlersMap: queryHandler, + addrPeerFilter: addrPeerFilter, + idPeerFilter: idPeerFilter, + version: versionStr, } } diff --git a/server/v2/cometbft/utils.go b/server/v2/cometbft/utils.go index d4c3ccf86ba0..81d47b7f8cb8 100644 --- a/server/v2/cometbft/utils.go +++ b/server/v2/cometbft/utils.go @@ -190,6 +190,11 @@ func intoABCISimulationResponse(txRes server.TxResult, indexSet map[string]struc msgResponses[i] = anyMsg } + errMsg := "" + if txRes.Error != nil { + errMsg = txRes.Error.Error() + } + res := &sdk.SimulationResponse{ GasInfo: sdk.GasInfo{ GasWanted: txRes.GasWanted, @@ -197,7 +202,7 @@ func intoABCISimulationResponse(txRes server.TxResult, indexSet map[string]struc }, Result: &sdk.Result{ Data: []byte{}, - Log: txRes.Error.Error(), + Log: errMsg, Events: abciEvents, MsgResponses: msgResponses, }, @@ -284,7 +289,6 @@ func gRPCErrorToSDKError(err error) *abci.QueryResponse { res.Log = err.Error() } return res - } status, ok := grpcstatus.FromError(err) From 66c593f14740b8afeb5dff9fee28851c1aa8fb81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 10:57:45 +0000 Subject: [PATCH 13/62] build(deps): Bump google.golang.org/grpc from 1.68.0 to 1.68.1 (#22764) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] Co-authored-by: Julien Robert Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- api/go.mod | 10 +++++----- api/go.sum | 20 ++++++++++---------- client/v2/go.mod | 4 ++-- client/v2/go.sum | 8 ++++---- depinject/go.mod | 10 +++++----- depinject/go.sum | 16 ++++++++-------- go.mod | 4 ++-- go.sum | 8 ++++---- orm/go.mod | 4 ++-- orm/go.sum | 8 ++++---- runtime/v2/go.mod | 4 ++-- runtime/v2/go.sum | 8 ++++---- server/v2/cometbft/go.mod | 4 ++-- server/v2/cometbft/go.sum | 8 ++++---- server/v2/go.mod | 4 ++-- server/v2/go.sum | 8 ++++---- simapp/go.mod | 4 ++-- simapp/go.sum | 8 ++++---- simapp/v2/go.mod | 4 ++-- simapp/v2/go.sum | 8 ++++---- store/go.mod | 12 ++++++------ store/go.sum | 24 ++++++++++++------------ systemtests/go.mod | 4 ++-- systemtests/go.sum | 8 ++++---- tests/go.mod | 4 ++-- tests/go.sum | 8 ++++---- tests/systemtests/go.mod | 4 ++-- tests/systemtests/go.sum | 8 ++++---- tools/confix/go.mod | 4 ++-- tools/confix/go.sum | 8 ++++---- tools/cosmovisor/go.mod | 4 ++-- tools/cosmovisor/go.sum | 8 ++++---- tools/hubl/go.mod | 4 ++-- tools/hubl/go.sum | 8 ++++---- x/accounts/defaults/base/go.mod | 4 ++-- x/accounts/defaults/base/go.sum | 8 ++++---- x/accounts/defaults/lockup/go.mod | 4 ++-- x/accounts/defaults/lockup/go.sum | 8 ++++---- x/accounts/defaults/multisig/go.mod | 4 ++-- x/accounts/defaults/multisig/go.sum | 8 ++++---- x/accounts/go.mod | 4 ++-- x/accounts/go.sum | 8 ++++---- x/authz/go.mod | 4 ++-- x/authz/go.sum | 8 ++++---- x/bank/go.mod | 4 ++-- x/bank/go.sum | 8 ++++---- x/circuit/go.mod | 4 ++-- x/circuit/go.sum | 8 ++++---- x/consensus/go.mod | 4 ++-- x/consensus/go.sum | 8 ++++---- x/distribution/go.mod | 4 ++-- x/distribution/go.sum | 8 ++++---- x/epochs/go.mod | 4 ++-- x/epochs/go.sum | 8 ++++---- x/evidence/go.mod | 4 ++-- x/evidence/go.sum | 8 ++++---- x/feegrant/go.mod | 4 ++-- x/feegrant/go.sum | 8 ++++---- x/gov/go.mod | 4 ++-- x/gov/go.sum | 8 ++++---- x/group/go.mod | 4 ++-- x/group/go.sum | 8 ++++---- x/mint/go.mod | 4 ++-- x/mint/go.sum | 8 ++++---- x/nft/go.mod | 4 ++-- x/nft/go.sum | 8 ++++---- x/params/go.mod | 4 ++-- x/params/go.sum | 8 ++++---- x/protocolpool/go.mod | 4 ++-- x/protocolpool/go.sum | 8 ++++---- x/slashing/go.mod | 4 ++-- x/slashing/go.sum | 8 ++++---- x/staking/go.mod | 4 ++-- x/staking/go.sum | 8 ++++---- x/tx/go.mod | 10 +++++----- x/tx/go.sum | 20 ++++++++++---------- x/upgrade/go.mod | 4 ++-- x/upgrade/go.sum | 8 ++++---- 78 files changed, 271 insertions(+), 271 deletions(-) diff --git a/api/go.mod b/api/go.mod index 2b55153c3e1c..dffbe243013a 100644 --- a/api/go.mod +++ b/api/go.mod @@ -7,15 +7,15 @@ require ( github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/gogoproto v1.7.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect github.com/google/go-cmp v0.6.0 // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect ) diff --git a/api/go.sum b/api/go.sum index c4ea7ee25503..89fd8f901087 100644 --- a/api/go.sum +++ b/api/go.sum @@ -10,17 +10,17 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= diff --git a/client/v2/go.mod b/client/v2/go.mod index 377ec6a8c91e..15cd0b239e00 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -14,7 +14,7 @@ require ( github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 go.uber.org/mock v0.5.0 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 gotest.tools/v3 v3.5.1 sigs.k8s.io/yaml v1.4.0 @@ -170,7 +170,7 @@ require ( golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect pgregory.net/rapid v1.1.0 // indirect diff --git a/client/v2/go.sum b/client/v2/go.sum index 456906d72dda..df2b716e9c5d 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -655,8 +655,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -667,8 +667,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/depinject/go.mod b/depinject/go.mod index d28f5cfa6c40..e1b55ecbcd53 100644 --- a/depinject/go.mod +++ b/depinject/go.mod @@ -7,7 +7,7 @@ require ( github.com/cosmos/gogoproto v1.7.0 github.com/stretchr/testify v1.10.0 golang.org/x/exp v0.0.0-20231006140011-7918f672742d - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 gotest.tools/v3 v3.5.1 sigs.k8s.io/yaml v1.4.0 @@ -20,10 +20,10 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/tendermint/go-amino v0.16.0 // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/depinject/go.sum b/depinject/go.sum index db29e58cd76f..df0a055b5880 100644 --- a/depinject/go.sum +++ b/depinject/go.sum @@ -37,17 +37,17 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= diff --git a/go.mod b/go.mod index aa60d3318d2d..456cb20b6e89 100644 --- a/go.mod +++ b/go.mod @@ -56,7 +56,7 @@ require ( golang.org/x/crypto v0.30.0 golang.org/x/sync v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 gotest.tools/v3 v3.5.1 pgregory.net/rapid v1.1.0 @@ -171,7 +171,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/qr v0.2.0 // indirect diff --git a/go.sum b/go.sum index b32a666dfdef..c722be7bc2bc 100644 --- a/go.sum +++ b/go.sum @@ -638,8 +638,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -650,8 +650,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/orm/go.mod b/orm/go.mod index 6167db5c5e29..9c9aa58b41dc 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -16,7 +16,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 gotest.tools/v3 v3.5.1 pgregory.net/rapid v1.1.0 @@ -67,7 +67,7 @@ require ( golang.org/x/sys v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/orm/go.sum b/orm/go.sum index 37ae96243591..bf6d73412bbe 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -233,10 +233,10 @@ golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNq google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/runtime/v2/go.mod b/runtime/v2/go.mod index 63c3133abac4..a586442b1e61 100644 --- a/runtime/v2/go.mod +++ b/runtime/v2/go.mod @@ -24,7 +24,7 @@ require ( cosmossdk.io/x/tx v1.0.0-alpha.1 github.com/cosmos/gogoproto v1.7.0 github.com/stretchr/testify v1.10.0 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -89,7 +89,7 @@ require ( golang.org/x/sys v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/runtime/v2/go.sum b/runtime/v2/go.sum index 006844192ba4..82a468165c79 100644 --- a/runtime/v2/go.sum +++ b/runtime/v2/go.sum @@ -338,10 +338,10 @@ golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNq google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod index 190bd9e3688c..20cba34dc235 100644 --- a/server/v2/cometbft/go.mod +++ b/server/v2/cometbft/go.mod @@ -37,7 +37,7 @@ require ( github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.10.0 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 sigs.k8s.io/yaml v1.4.0 ) @@ -182,7 +182,7 @@ require ( golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/server/v2/cometbft/go.sum b/server/v2/cometbft/go.sum index 2c5906c652cd..1cef4bfa7e19 100644 --- a/server/v2/cometbft/go.sum +++ b/server/v2/cometbft/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/server/v2/go.mod b/server/v2/go.mod index 16c7043c5836..0c9be05fde81 100644 --- a/server/v2/go.mod +++ b/server/v2/go.mod @@ -35,7 +35,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.10.0 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -113,7 +113,7 @@ require ( golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/v2/go.sum b/server/v2/go.sum index 1661a401ca79..77d80d52875b 100644 --- a/server/v2/go.sum +++ b/server/v2/go.sum @@ -473,8 +473,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -483,8 +483,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/simapp/go.mod b/simapp/go.mod index 2db52cd2ddfe..71e1c2d67cca 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -45,7 +45,7 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -232,7 +232,7 @@ require ( google.golang.org/api v0.192.0 // indirect google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index 267a871389fd..d3f396fa132e 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -1358,8 +1358,8 @@ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22du google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1395,8 +1395,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index 95545be583fb..c61951d64c2a 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -233,8 +233,8 @@ require ( google.golang.org/api v0.192.0 // indirect google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/grpc v1.68.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/grpc v1.68.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/simapp/v2/go.sum b/simapp/v2/go.sum index bc265eea593a..e663b957246d 100644 --- a/simapp/v2/go.sum +++ b/simapp/v2/go.sum @@ -1349,8 +1349,8 @@ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22du google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1386,8 +1386,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= diff --git a/store/go.mod b/store/go.mod index 08b86b41ab53..7aa1ec2f3bd9 100644 --- a/store/go.mod +++ b/store/go.mod @@ -21,7 +21,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/tidwall/btree v1.7.0 go.uber.org/mock v0.5.0 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 gotest.tools/v3 v3.5.1 ) @@ -56,11 +56,11 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.30.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/store/go.sum b/store/go.sum index 1614e88f3f6f..6a7b5bfdc034 100644 --- a/store/go.sum +++ b/store/go.sum @@ -236,8 +236,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -253,8 +253,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -289,16 +289,16 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -309,10 +309,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/systemtests/go.mod b/systemtests/go.mod index 91e3fd48ef5f..953b3aa44593 100644 --- a/systemtests/go.mod +++ b/systemtests/go.mod @@ -11,7 +11,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/tidwall/gjson v1.14.2 github.com/tidwall/sjson v1.2.5 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 ) require ( @@ -157,7 +157,7 @@ require ( golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/systemtests/go.sum b/systemtests/go.sum index 043fc13d7249..43ef7435a01d 100644 --- a/systemtests/go.sum +++ b/systemtests/go.sum @@ -946,8 +946,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= 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= @@ -966,8 +966,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/tests/go.mod b/tests/go.mod index 4a80aa8cade4..0c6d73279556 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -25,7 +25,7 @@ require ( github.com/spf13/cobra v1.8.1 // indirect github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 gotest.tools/v3 v3.5.1 pgregory.net/rapid v1.1.0 @@ -234,7 +234,7 @@ require ( google.golang.org/api v0.192.0 // indirect google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 4b64ee45b2f6..4ca4d03dc5dd 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -1345,8 +1345,8 @@ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22du google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1382,8 +1382,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= diff --git a/tests/systemtests/go.mod b/tests/systemtests/go.mod index 6608500045bb..558c01f2699a 100644 --- a/tests/systemtests/go.mod +++ b/tests/systemtests/go.mod @@ -157,8 +157,8 @@ require ( golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/grpc v1.68.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/grpc v1.68.1 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tests/systemtests/go.sum b/tests/systemtests/go.sum index e5b744073877..b8ade34dcea5 100644 --- a/tests/systemtests/go.sum +++ b/tests/systemtests/go.sum @@ -948,8 +948,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= 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= @@ -968,8 +968,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/tools/confix/go.mod b/tools/confix/go.mod index 20881f463131..d05e2086be05 100644 --- a/tools/confix/go.mod +++ b/tools/confix/go.mod @@ -154,8 +154,8 @@ require ( golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/grpc v1.68.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/grpc v1.68.1 // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/confix/go.sum b/tools/confix/go.sum index f17426dbb954..fb76842015ef 100644 --- a/tools/confix/go.sum +++ b/tools/confix/go.sum @@ -943,8 +943,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= 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= @@ -963,8 +963,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index 56ff09fbcd6d..00530da494f2 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -12,7 +12,7 @@ require ( github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.10.0 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 ) require ( @@ -180,7 +180,7 @@ require ( google.golang.org/api v0.192.0 // indirect google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index 56a321011df5..597dfc975dfc 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -1530,8 +1530,8 @@ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22du google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= 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= @@ -1573,8 +1573,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= diff --git a/tools/hubl/go.mod b/tools/hubl/go.mod index 3fd8ec5232d7..c07266e20645 100644 --- a/tools/hubl/go.mod +++ b/tools/hubl/go.mod @@ -11,7 +11,7 @@ require ( github.com/manifoldco/promptui v0.9.0 github.com/pelletier/go-toml/v2 v2.2.3 github.com/spf13/cobra v1.8.1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -155,7 +155,7 @@ require ( golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/tools/hubl/go.sum b/tools/hubl/go.sum index 72eee9310ad0..8ba6bee1d333 100644 --- a/tools/hubl/go.sum +++ b/tools/hubl/go.sum @@ -939,8 +939,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= 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= @@ -959,8 +959,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/accounts/defaults/base/go.mod b/x/accounts/defaults/base/go.mod index f0339d46db90..3e61333c0ee6 100644 --- a/x/accounts/defaults/base/go.mod +++ b/x/accounts/defaults/base/go.mod @@ -161,8 +161,8 @@ require ( golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/grpc v1.68.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/grpc v1.68.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/x/accounts/defaults/base/go.sum b/x/accounts/defaults/base/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/accounts/defaults/base/go.sum +++ b/x/accounts/defaults/base/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/accounts/defaults/lockup/go.mod b/x/accounts/defaults/lockup/go.mod index debe568df167..26d7738321e0 100644 --- a/x/accounts/defaults/lockup/go.mod +++ b/x/accounts/defaults/lockup/go.mod @@ -141,8 +141,8 @@ require ( golang.org/x/text v0.21.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/grpc v1.68.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/grpc v1.68.1 // indirect google.golang.org/protobuf v1.35.2 gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/x/accounts/defaults/lockup/go.sum b/x/accounts/defaults/lockup/go.sum index 787d9ce3546e..defaa535dbf8 100644 --- a/x/accounts/defaults/lockup/go.sum +++ b/x/accounts/defaults/lockup/go.sum @@ -565,16 +565,16 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/accounts/defaults/multisig/go.mod b/x/accounts/defaults/multisig/go.mod index 956fdde665d2..916adf5b091b 100644 --- a/x/accounts/defaults/multisig/go.mod +++ b/x/accounts/defaults/multisig/go.mod @@ -161,8 +161,8 @@ require ( golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/grpc v1.68.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/grpc v1.68.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/x/accounts/defaults/multisig/go.sum b/x/accounts/defaults/multisig/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/accounts/defaults/multisig/go.sum +++ b/x/accounts/defaults/multisig/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 00eb8205b305..115240bd69c0 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -14,7 +14,7 @@ require ( github.com/cosmos/gogoproto v1.7.0 github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.10.0 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -165,7 +165,7 @@ require ( golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/x/accounts/go.sum b/x/accounts/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/authz/go.mod b/x/authz/go.mod index c98f42b61870..e0c42f04c74c 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -22,7 +22,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -150,7 +150,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/x/authz/go.sum b/x/authz/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/bank/go.mod b/x/bank/go.mod index 93d28689195b..1ecc9002d25e 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -23,7 +23,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 gotest.tools/v3 v3.5.1 ) @@ -148,7 +148,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/x/bank/go.sum b/x/bank/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index c267dd6d589e..2c3f0fc10228 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -17,7 +17,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 ) require ( @@ -161,7 +161,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/consensus/go.mod b/x/consensus/go.mod index d9f318f9be85..81759226d12c 100644 --- a/x/consensus/go.mod +++ b/x/consensus/go.mod @@ -19,7 +19,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 ) require ( @@ -160,7 +160,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/x/consensus/go.sum b/x/consensus/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/consensus/go.sum +++ b/x/consensus/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 8df9afb0220a..889d6361e07e 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -23,7 +23,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 ) require ( @@ -161,7 +161,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/x/distribution/go.sum b/x/distribution/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/epochs/go.mod b/x/epochs/go.mod index e257acf1d3b0..c021bebcf38a 100644 --- a/x/epochs/go.mod +++ b/x/epochs/go.mod @@ -17,7 +17,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/stretchr/testify v1.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 ) require cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b @@ -151,7 +151,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/x/epochs/go.sum b/x/epochs/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/epochs/go.sum +++ b/x/epochs/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index cbdc8163bc93..e58934590372 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -20,7 +20,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -162,7 +162,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 2cb1e4e92098..929638286f1a 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -23,7 +23,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 gotest.tools/v3 v3.5.1 ) @@ -170,7 +170,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect pgregory.net/rapid v1.1.0 // indirect diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index 456906d72dda..df2b716e9c5d 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -655,8 +655,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -667,8 +667,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/gov/go.mod b/x/gov/go.mod index b168e8471f0b..6c156c8ad12b 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -28,7 +28,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -157,7 +157,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/x/gov/go.sum b/x/gov/go.sum index a9f926b3d7b9..52122d4ece54 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -653,8 +653,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -665,8 +665,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/group/go.mod b/x/group/go.mod index 8c9908f8f8d2..f0e65c0dcb1f 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -29,7 +29,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 pgregory.net/rapid v1.1.0 ) @@ -172,7 +172,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/x/group/go.sum b/x/group/go.sum index 86f893f9771a..01445c948378 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -655,8 +655,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -667,8 +667,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/mint/go.mod b/x/mint/go.mod index 375a84db5c02..5cb87b9513f7 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -22,7 +22,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 gotest.tools/v3 v3.5.1 // indirect ) @@ -151,7 +151,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/x/mint/go.sum b/x/mint/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/nft/go.mod b/x/nft/go.mod index 6416c5281fa3..e482f9dba76f 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -18,7 +18,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 ) require ( @@ -161,7 +161,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/params/go.mod b/x/params/go.mod index 602d780b46c4..2cfd93cc3511 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -22,7 +22,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 ) require ( @@ -154,7 +154,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect google.golang.org/protobuf v1.35.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/x/params/go.sum b/x/params/go.sum index 4b3e86693f99..57b49b487e70 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -616,8 +616,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -628,8 +628,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index f7b02a2a5d07..7a39650e2bef 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -19,7 +19,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -162,7 +162,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index 5092eecfcd0a..b5389554a1f4 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -21,7 +21,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 gotest.tools/v3 v3.5.1 ) @@ -164,7 +164,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect pgregory.net/rapid v1.1.0 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index c3810bb47a77..a683352c0260 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -645,8 +645,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -657,8 +657,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/staking/go.mod b/x/staking/go.mod index 6b95c3255105..c2329d4ce1af 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -24,7 +24,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -140,7 +140,7 @@ require ( golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.27.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect pgregory.net/rapid v1.1.0 // indirect diff --git a/x/staking/go.sum b/x/staking/go.sum index 78a17dea7897..8bd9e5c462e3 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -643,8 +643,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -655,8 +655,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/x/tx/go.mod b/x/tx/go.mod index 736f97fddcfe..2d4ed052ae23 100644 --- a/x/tx/go.mod +++ b/x/tx/go.mod @@ -25,12 +25,12 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/net v0.30.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/grpc v1.68.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/grpc v1.68.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/x/tx/go.sum b/x/tx/go.sum index 7316697685f4..acdb8d0ed415 100644 --- a/x/tx/go.sum +++ b/x/tx/go.sum @@ -42,21 +42,21 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index 6830d3a8f66c..cd31d8f3d9a5 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -27,7 +27,7 @@ require ( github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 - google.golang.org/grpc v1.68.0 + google.golang.org/grpc v1.68.1 google.golang.org/protobuf v1.35.2 ) @@ -194,7 +194,7 @@ require ( golang.org/x/tools v0.27.0 // indirect google.golang.org/api v0.192.0 // indirect google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index fd7aa8f275d6..84cf77b49b18 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -1336,8 +1336,8 @@ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22du google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1373,8 +1373,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= 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= From 00c7756610d76c5e933a437fe02ebe49a3e606f2 Mon Sep 17 00:00:00 2001 From: Akhil Kumar P <36399231+akhilkumarpilli@users.noreply.github.com> Date: Thu, 5 Dec 2024 18:57:26 +0530 Subject: [PATCH 14/62] test(integration): port x/slashing tests to server v2 (#22754) --- tests/integration/slashing/app_config.go | 32 -- tests/integration/slashing/slashing_test.go | 119 -------- .../{ => v2}/slashing/abci_test.go | 76 ++--- .../keeper => v2/slashing}/keeper_test.go | 242 ++++----------- .../slashing}/slash_redelegation_test.go | 277 +++++++----------- .../integration/v2/slashing/slashing_test.go | 175 +++++++++++ testutil/sims/address_helpers.go | 9 +- 7 files changed, 361 insertions(+), 569 deletions(-) delete mode 100644 tests/integration/slashing/app_config.go delete mode 100644 tests/integration/slashing/slashing_test.go rename tests/integration/{ => v2}/slashing/abci_test.go (50%) rename tests/integration/{slashing/keeper => v2/slashing}/keeper_test.go (59%) rename tests/integration/{slashing/keeper => v2/slashing}/slash_redelegation_test.go (61%) create mode 100644 tests/integration/v2/slashing/slashing_test.go diff --git a/tests/integration/slashing/app_config.go b/tests/integration/slashing/app_config.go deleted file mode 100644 index 415bea47145d..000000000000 --- a/tests/integration/slashing/app_config.go +++ /dev/null @@ -1,32 +0,0 @@ -package slashing - -import ( - _ "cosmossdk.io/x/accounts" // import as blank for app wiring - _ "cosmossdk.io/x/bank" // import as blank for app wiring - _ "cosmossdk.io/x/consensus" // import as blank for app wiring - _ "cosmossdk.io/x/distribution" // import as blank for app wiring - _ "cosmossdk.io/x/mint" // import as blank for app wiring - _ "cosmossdk.io/x/protocolpool" // import as blank for app wiring - _ "cosmossdk.io/x/slashing" // import as blank for app wiring - _ "cosmossdk.io/x/staking" // import as blank for app wiring - - "github.com/cosmos/cosmos-sdk/testutil/configurator" - _ "github.com/cosmos/cosmos-sdk/x/auth" // import as blank for app wiring - _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import as blank for app wiring - _ "github.com/cosmos/cosmos-sdk/x/genutil" // import as blank for app wiring -) - -var AppConfig = configurator.NewAppConfig( - configurator.AccountsModule(), - configurator.AuthModule(), - configurator.BankModule(), - configurator.StakingModule(), - configurator.SlashingModule(), - configurator.TxModule(), - configurator.ValidateModule(), - configurator.ConsensusModule(), - configurator.GenutilModule(), - configurator.MintModule(), - configurator.DistributionModule(), - configurator.ProtocolPoolModule(), -) diff --git a/tests/integration/slashing/slashing_test.go b/tests/integration/slashing/slashing_test.go deleted file mode 100644 index be116892c240..000000000000 --- a/tests/integration/slashing/slashing_test.go +++ /dev/null @@ -1,119 +0,0 @@ -package slashing_test - -import ( - "errors" - "testing" - - "github.com/stretchr/testify/require" - - "cosmossdk.io/core/header" - "cosmossdk.io/depinject" - "cosmossdk.io/log" - "cosmossdk.io/math" - bankkeeper "cosmossdk.io/x/bank/keeper" - "cosmossdk.io/x/slashing/keeper" - "cosmossdk.io/x/slashing/types" - stakingkeeper "cosmossdk.io/x/staking/keeper" - stakingtypes "cosmossdk.io/x/staking/types" - - "github.com/cosmos/cosmos-sdk/client" - codecaddress "github.com/cosmos/cosmos-sdk/codec/address" - "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - "github.com/cosmos/cosmos-sdk/testutil/configurator" - "github.com/cosmos/cosmos-sdk/testutil/sims" - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -var ( - priv1 = secp256k1.GenPrivKey() - addr1 = sdk.AccAddress(priv1.PubKey().Address()) - addrCodec = codecaddress.NewBech32Codec("cosmos") - valaddrCodec = codecaddress.NewBech32Codec("cosmosvaloper") - - valKey = ed25519.GenPrivKey() - valAddr = sdk.AccAddress(valKey.PubKey().Address()) -) - -func TestSlashingMsgs(t *testing.T) { - genTokens := sdk.TokensFromConsensusPower(42, sdk.DefaultPowerReduction) - bondTokens := sdk.TokensFromConsensusPower(10, sdk.DefaultPowerReduction) - genCoin := sdk.NewCoin(sdk.DefaultBondDenom, genTokens) - bondCoin := sdk.NewCoin(sdk.DefaultBondDenom, bondTokens) - - addrStr, err := addrCodec.BytesToString(addr1) - require.NoError(t, err) - acc1 := &authtypes.BaseAccount{ - Address: addrStr, - } - accs := []sims.GenesisAccount{{GenesisAccount: acc1, Coins: sdk.Coins{genCoin}}} - - startupCfg := sims.DefaultStartUpConfig() - startupCfg.GenesisAccounts = accs - - var ( - stakingKeeper *stakingkeeper.Keeper - bankKeeper bankkeeper.Keeper - slashingKeeper keeper.Keeper - txConfig client.TxConfig - ) - - app, err := sims.SetupWithConfiguration( - depinject.Configs( - configurator.NewAppConfig( - configurator.AccountsModule(), - configurator.AuthModule(), - configurator.StakingModule(), - configurator.SlashingModule(), - configurator.TxModule(), - configurator.ValidateModule(), - configurator.ConsensusModule(), - configurator.BankModule(), - ), - depinject.Supply(log.NewNopLogger()), - ), - startupCfg, &stakingKeeper, &bankKeeper, &slashingKeeper, &txConfig) - require.NoError(t, err) - - baseApp := app.BaseApp - - ctxCheck := baseApp.NewContext(true) - require.True(t, sdk.Coins{genCoin}.Equal(bankKeeper.GetAllBalances(ctxCheck, addr1))) - - require.NoError(t, err) - - description := stakingtypes.NewDescription("foo_moniker", "", "", "", "", &stakingtypes.Metadata{}) - commission := stakingtypes.NewCommissionRates(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec()) - - addrStrVal, err := valaddrCodec.BytesToString(addr1) - require.NoError(t, err) - createValidatorMsg, err := stakingtypes.NewMsgCreateValidator( - addrStrVal, valKey.PubKey(), bondCoin, description, commission, math.OneInt(), - ) - require.NoError(t, err) - - headerInfo := header.Info{Height: app.LastBlockHeight() + 1} - _, _, err = sims.SignCheckDeliver(t, txConfig, app.BaseApp, headerInfo, []sdk.Msg{createValidatorMsg}, "", []uint64{0}, []uint64{0}, true, true, priv1) - require.NoError(t, err) - require.True(t, sdk.Coins{genCoin.Sub(bondCoin)}.Equal(bankKeeper.GetAllBalances(ctxCheck, addr1))) - - ctxCheck = baseApp.NewContext(true) - validator, err := stakingKeeper.GetValidator(ctxCheck, sdk.ValAddress(addr1)) - require.NoError(t, err) - - require.Equal(t, addrStrVal, validator.OperatorAddress) - require.Equal(t, stakingtypes.Bonded, validator.Status) - require.True(math.IntEq(t, bondTokens, validator.BondedTokens())) - unjailMsg := &types.MsgUnjail{ValidatorAddr: addrStrVal} - - ctxCheck = app.BaseApp.NewContext(true) - _, err = slashingKeeper.ValidatorSigningInfo.Get(ctxCheck, sdk.ConsAddress(valAddr)) - require.NoError(t, err) - - // unjail should fail with unknown validator - headerInfo = header.Info{Height: app.LastBlockHeight() + 1} - _, _, err = sims.SignCheckDeliver(t, txConfig, app.BaseApp, headerInfo, []sdk.Msg{unjailMsg}, "", []uint64{0}, []uint64{1}, false, false, priv1) - require.Error(t, err) - require.True(t, errors.Is(err, types.ErrValidatorNotJailed)) -} diff --git a/tests/integration/slashing/abci_test.go b/tests/integration/v2/slashing/abci_test.go similarity index 50% rename from tests/integration/slashing/abci_test.go rename to tests/integration/v2/slashing/abci_test.go index 96e869743e5d..f771941cf096 100644 --- a/tests/integration/slashing/abci_test.go +++ b/tests/integration/v2/slashing/abci_test.go @@ -8,68 +8,43 @@ import ( "cosmossdk.io/core/comet" coreheader "cosmossdk.io/core/header" - "cosmossdk.io/depinject" - "cosmossdk.io/log" - bankkeeper "cosmossdk.io/x/bank/keeper" + "cosmossdk.io/runtime/v2/services" "cosmossdk.io/x/slashing" - slashingkeeper "cosmossdk.io/x/slashing/keeper" "cosmossdk.io/x/slashing/testutil" - stakingkeeper "cosmossdk.io/x/staking/keeper" stakingtestutil "cosmossdk.io/x/staking/testutil" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/tests/integration/v2" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" ) // TestBeginBlocker is a unit test function that tests the behavior of the BeginBlocker function. // It sets up the necessary dependencies and context, creates a validator, and performs various operations // to test the slashing logic. It checks if the validator is correctly jailed after a certain number of blocks. func TestBeginBlocker(t *testing.T) { - var ( - interfaceRegistry codectypes.InterfaceRegistry - accountKeeper authkeeper.AccountKeeper - bankKeeper bankkeeper.Keeper - stakingKeeper *stakingkeeper.Keeper - slashingKeeper slashingkeeper.Keeper - ) - - app, err := simtestutil.Setup( - depinject.Configs( - AppConfig, - depinject.Supply(log.NewNopLogger()), - ), - &interfaceRegistry, - &accountKeeper, - &bankKeeper, - &stakingKeeper, - &slashingKeeper, - ) - require.NoError(t, err) + f := initFixture(t) - ctx := app.BaseApp.NewContext(false) + ctx := f.ctx pks := simtestutil.CreateTestPubKeys(1) - simtestutil.AddTestAddrsFromPubKeys(bankKeeper, stakingKeeper, ctx, pks, stakingKeeper.TokensFromConsensusPower(ctx, 200)) + simtestutil.AddTestAddrsFromPubKeys(f.bankKeeper, f.stakingKeeper, ctx, pks, f.stakingKeeper.TokensFromConsensusPower(ctx, 200)) addr, pk := sdk.ValAddress(pks[0].Address()), pks[0] - tstaking := stakingtestutil.NewHelper(t, ctx, stakingKeeper) + tstaking := stakingtestutil.NewHelper(t, ctx, f.stakingKeeper) // bond the validator power := int64(100) - acc := accountKeeper.NewAccountWithAddress(ctx, sdk.AccAddress(addr)) - accountKeeper.SetAccount(ctx, acc) + acc := f.accountKeeper.NewAccountWithAddress(ctx, sdk.AccAddress(addr)) + f.accountKeeper.SetAccount(ctx, acc) amt := tstaking.CreateValidatorWithValPower(addr, pk, power, true) - _, err = stakingKeeper.EndBlocker(ctx) + _, err := f.stakingKeeper.EndBlocker(ctx) require.NoError(t, err) - bondDenom, err := stakingKeeper.BondDenom(ctx) + bondDenom, err := f.stakingKeeper.BondDenom(ctx) require.NoError(t, err) require.Equal( - t, bankKeeper.GetAllBalances(ctx, sdk.AccAddress(addr)), + t, f.bankKeeper.GetAllBalances(ctx, sdk.AccAddress(addr)), sdk.NewCoins(sdk.NewCoin(bondDenom, testutil.InitTokens.Sub(amt))), ) - val, err := stakingKeeper.Validator(ctx, addr) + val, err := f.stakingKeeper.Validator(ctx, addr) require.NoError(t, err) require.Equal(t, amt, val.GetBondedTokens()) @@ -78,57 +53,58 @@ func TestBeginBlocker(t *testing.T) { Power: power, } - ctx = ctx.WithCometInfo(comet.Info{ + ctx = integration.SetCometInfo(ctx, comet.Info{ LastCommit: comet.CommitInfo{Votes: []comet.VoteInfo{{ Validator: abciVal, BlockIDFlag: comet.BlockIDFlagCommit, }}}, }) - cometInfoService := runtime.NewContextAwareCometInfoService() + cometInfoService := &services.ContextAwareCometInfoService{} - err = slashing.BeginBlocker(ctx, slashingKeeper, cometInfoService) + err = slashing.BeginBlocker(ctx, f.slashingKeeper, cometInfoService) require.NoError(t, err) - info, err := slashingKeeper.ValidatorSigningInfo.Get(ctx, sdk.ConsAddress(pk.Address())) + info, err := f.slashingKeeper.ValidatorSigningInfo.Get(ctx, sdk.ConsAddress(pk.Address())) require.NoError(t, err) - require.Equal(t, ctx.HeaderInfo().Height, info.StartHeight) + require.Equal(t, integration.HeaderInfoFromContext(ctx).Height, info.StartHeight) require.Equal(t, int64(0), info.IndexOffset) require.Equal(t, time.Unix(0, 0).UTC(), info.JailedUntil) require.Equal(t, int64(0), info.MissedBlocksCounter) height := int64(0) - signedBlocksWindow, err := slashingKeeper.SignedBlocksWindow(ctx) + signedBlocksWindow, err := f.slashingKeeper.SignedBlocksWindow(ctx) require.NoError(t, err) // for 100 blocks, mark the validator as having signed for ; height < signedBlocksWindow; height++ { - ctx = ctx.WithHeaderInfo(coreheader.Info{Height: height}) + ctx = integration.SetHeaderInfo(ctx, coreheader.Info{Height: height}) - err = slashing.BeginBlocker(ctx, slashingKeeper, cometInfoService) + err = slashing.BeginBlocker(ctx, f.slashingKeeper, cometInfoService) require.NoError(t, err) } - minSignedPerWindow, err := slashingKeeper.MinSignedPerWindow(ctx) + minSignedPerWindow, err := f.slashingKeeper.MinSignedPerWindow(ctx) require.NoError(t, err) // for 50 blocks, mark the validator as having not signed for ; height < ((signedBlocksWindow * 2) - minSignedPerWindow + 1); height++ { - ctx = ctx.WithHeaderInfo(coreheader.Info{Height: height}).WithCometInfo(comet.Info{ + ctx = integration.SetHeaderInfo(ctx, coreheader.Info{Height: height}) + ctx = integration.SetCometInfo(ctx, comet.Info{ LastCommit: comet.CommitInfo{Votes: []comet.VoteInfo{{ Validator: abciVal, BlockIDFlag: comet.BlockIDFlagAbsent, }}}, }) - err = slashing.BeginBlocker(ctx, slashingKeeper, cometInfoService) + err = slashing.BeginBlocker(ctx, f.slashingKeeper, cometInfoService) require.NoError(t, err) } // end block - _, err = stakingKeeper.EndBlocker(ctx) + _, err = f.stakingKeeper.EndBlocker(ctx) require.NoError(t, err) // validator should be jailed - validator, err := stakingKeeper.GetValidatorByConsAddr(ctx, sdk.GetConsAddress(pk)) + validator, err := f.stakingKeeper.GetValidatorByConsAddr(ctx, sdk.GetConsAddress(pk)) require.NoError(t, err) require.Equal(t, sdk.Unbonding, validator.GetStatus()) } diff --git a/tests/integration/slashing/keeper/keeper_test.go b/tests/integration/v2/slashing/keeper_test.go similarity index 59% rename from tests/integration/slashing/keeper/keeper_test.go rename to tests/integration/v2/slashing/keeper_test.go index 74ccf5da61f8..94a84de3cf12 100644 --- a/tests/integration/slashing/keeper/keeper_test.go +++ b/tests/integration/v2/slashing/keeper_test.go @@ -1,4 +1,4 @@ -package keeper_test +package slashing import ( "context" @@ -6,173 +6,21 @@ import ( "time" "github.com/stretchr/testify/require" - "go.uber.org/mock/gomock" "gotest.tools/v3/assert" - "cosmossdk.io/core/appmodule" "cosmossdk.io/core/comet" coreheader "cosmossdk.io/core/header" - "cosmossdk.io/log" - storetypes "cosmossdk.io/store/types" - "cosmossdk.io/x/bank" - bankkeeper "cosmossdk.io/x/bank/keeper" - banktypes "cosmossdk.io/x/bank/types" - "cosmossdk.io/x/consensus" - consensusparamkeeper "cosmossdk.io/x/consensus/keeper" - consensustypes "cosmossdk.io/x/consensus/types" - minttypes "cosmossdk.io/x/mint/types" - "cosmossdk.io/x/slashing" - slashingkeeper "cosmossdk.io/x/slashing/keeper" + "cosmossdk.io/core/transaction" "cosmossdk.io/x/slashing/testutil" slashingtypes "cosmossdk.io/x/slashing/types" - "cosmossdk.io/x/staking" - stakingkeeper "cosmossdk.io/x/staking/keeper" stakingtestutil "cosmossdk.io/x/staking/testutil" stakingtypes "cosmossdk.io/x/staking/types" - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/codec" - addresscodec "github.com/cosmos/cosmos-sdk/codec/address" - codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil" - "github.com/cosmos/cosmos-sdk/runtime" - "github.com/cosmos/cosmos-sdk/testutil/integration" + "github.com/cosmos/cosmos-sdk/tests/integration/v2" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" - "github.com/cosmos/cosmos-sdk/x/auth" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - authtestutil "github.com/cosmos/cosmos-sdk/x/auth/testutil" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) -type fixture struct { - app *integration.App - - ctx sdk.Context - - accountKeeper authkeeper.AccountKeeper - bankKeeper bankkeeper.Keeper - slashingKeeper slashingkeeper.Keeper - stakingKeeper *stakingkeeper.Keeper - - addrDels []sdk.AccAddress - valAddrs []sdk.ValAddress -} - -func initFixture(tb testing.TB) *fixture { - tb.Helper() - keys := storetypes.NewKVStoreKeys( - authtypes.StoreKey, banktypes.StoreKey, slashingtypes.StoreKey, stakingtypes.StoreKey, consensustypes.StoreKey, - ) - encodingCfg := moduletestutil.MakeTestEncodingConfig(codectestutil.CodecOptions{}, auth.AppModule{}) - cdc := encodingCfg.Codec - - authority := authtypes.NewModuleAddress("gov") - - maccPerms := map[string][]string{ - minttypes.ModuleName: {authtypes.Minter}, - stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, - stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - } - - msgRouter := baseapp.NewMsgServiceRouter() - queryRouter := baseapp.NewGRPCQueryRouter() - - // gomock initializations - ctrl := gomock.NewController(tb) - acctsModKeeper := authtestutil.NewMockAccountsModKeeper(ctrl) - accNum := uint64(0) - acctsModKeeper.EXPECT().NextAccountNumber(gomock.Any()).AnyTimes().DoAndReturn(func(ctx context.Context) (uint64, error) { - currentNum := accNum - accNum++ - return currentNum, nil - }) - - accountKeeper := authkeeper.NewAccountKeeper( - runtime.NewEnvironment(runtime.NewKVStoreService(keys[authtypes.StoreKey]), log.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(msgRouter)), - cdc, - authtypes.ProtoBaseAccount, - acctsModKeeper, - maccPerms, - addresscodec.NewBech32Codec(sdk.Bech32MainPrefix), - sdk.Bech32MainPrefix, - authority.String(), - ) - - blockedAddresses := map[string]bool{ - accountKeeper.GetAuthority(): false, - } - bankKeeper := bankkeeper.NewBaseKeeper( - runtime.NewEnvironment(runtime.NewKVStoreService(keys[banktypes.StoreKey]), log.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(msgRouter)), - cdc, - accountKeeper, - blockedAddresses, - authority.String(), - ) - - cometInfoService := runtime.NewContextAwareCometInfoService() - - consensusParamsKeeper := consensusparamkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[consensustypes.StoreKey]), log.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(msgRouter)), authtypes.NewModuleAddress("gov").String()) - - stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), log.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(msgRouter)), accountKeeper, bankKeeper, consensusParamsKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), cometInfoService) - - slashingKeeper := slashingkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), log.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(msgRouter)), cdc, &codec.LegacyAmino{}, stakingKeeper, authority.String()) - - bankModule := bank.NewAppModule(cdc, bankKeeper, accountKeeper) - stakingModule := staking.NewAppModule(cdc, stakingKeeper) - slashingModule := slashing.NewAppModule(cdc, slashingKeeper, accountKeeper, bankKeeper, stakingKeeper, cdc.InterfaceRegistry(), cometInfoService) - consensusModule := consensus.NewAppModule(cdc, consensusParamsKeeper) - - integrationApp := integration.NewIntegrationApp(log.NewNopLogger(), keys, cdc, - encodingCfg.InterfaceRegistry.SigningContext().AddressCodec(), - encodingCfg.InterfaceRegistry.SigningContext().ValidatorAddressCodec(), - map[string]appmodule.AppModule{ - banktypes.ModuleName: bankModule, - stakingtypes.ModuleName: stakingModule, - slashingtypes.ModuleName: slashingModule, - consensustypes.ModuleName: consensusModule, - }, - msgRouter, - queryRouter, - ) - - sdkCtx := sdk.UnwrapSDKContext(integrationApp.Context()) - - // Register MsgServer and QueryServer - slashingtypes.RegisterMsgServer(integrationApp.MsgServiceRouter(), slashingkeeper.NewMsgServerImpl(slashingKeeper)) - slashingtypes.RegisterQueryServer(integrationApp.QueryHelper(), slashingkeeper.NewQuerier(slashingKeeper)) - - // set default staking params - // TestParams set the SignedBlocksWindow to 1000 and MaxMissedBlocksPerWindow to 500 - err := slashingKeeper.Params.Set(sdkCtx, testutil.TestParams()) - assert.NilError(tb, err) - addrDels := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, sdkCtx, 6, stakingKeeper.TokensFromConsensusPower(sdkCtx, 200)) - valAddrs := simtestutil.ConvertAddrsToValAddrs(addrDels) - - consaddr0, err := stakingKeeper.ConsensusAddressCodec().BytesToString(addrDels[0]) - assert.NilError(tb, err) - consaddr1, err := stakingKeeper.ConsensusAddressCodec().BytesToString(addrDels[1]) - assert.NilError(tb, err) - - info1 := slashingtypes.NewValidatorSigningInfo(consaddr0, int64(4), time.Unix(2, 0), false, int64(10)) - info2 := slashingtypes.NewValidatorSigningInfo(consaddr1, int64(5), time.Unix(2, 0), false, int64(10)) - - err = slashingKeeper.ValidatorSigningInfo.Set(sdkCtx, sdk.ConsAddress(addrDels[0]), info1) - assert.NilError(tb, err) - err = slashingKeeper.ValidatorSigningInfo.Set(sdkCtx, sdk.ConsAddress(addrDels[1]), info2) - assert.NilError(tb, err) - return &fixture{ - app: integrationApp, - ctx: sdkCtx, - accountKeeper: accountKeeper, - bankKeeper: bankKeeper, - slashingKeeper: slashingKeeper, - stakingKeeper: stakingKeeper, - addrDels: addrDels, - valAddrs: valAddrs, - } -} - func TestUnJailNotBonded(t *testing.T) { t.Parallel() f := initFixture(t) @@ -194,8 +42,8 @@ func TestUnJailNotBonded(t *testing.T) { _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - newHeight := f.ctx.BlockHeight() + 1 - f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) + newHeight := int64(f.app.LastBlockHeight()) + 1 + 1 + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: newHeight}) // create a 6th validator with less power than the cliff validator (won't be bonded) addr, val := f.valAddrs[5], pks[5] @@ -211,8 +59,8 @@ func TestUnJailNotBonded(t *testing.T) { _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - newHeight = f.ctx.BlockHeight() + 1 - f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) + newHeight = integration.HeaderInfoFromContext(f.ctx).Height + 1 + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: newHeight}) tstaking.CheckValidator(addr, stakingtypes.Unbonded, false) @@ -226,8 +74,8 @@ func TestUnJailNotBonded(t *testing.T) { _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - newHeight = f.ctx.BlockHeight() + 1 - f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) + newHeight = integration.HeaderInfoFromContext(f.ctx).Height + 1 + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: newHeight}) // verify that validator is jailed tstaking.CheckValidator(addr, -1, true) @@ -237,16 +85,20 @@ func TestUnJailNotBonded(t *testing.T) { ValidatorAddr: addr.String(), } _, err = f.app.RunMsg( - &msgUnjail, - integration.WithAutomaticFinalizeBlock(), + t, + f.ctx, + func(ctx context.Context) (transaction.Msg, error) { + res, err := f.slashingMsgServer.Unjail(ctx, &msgUnjail) + return res, err + }, integration.WithAutomaticCommit(), ) assert.ErrorContains(t, err, "cannot be unjailed") _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - newHeight = f.ctx.BlockHeight() + 1 - f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) + newHeight = integration.HeaderInfoFromContext(f.ctx).Height + 1 + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: newHeight}) // bond to meet minimum self-delegationa accAddr, err = f.accountKeeper.AddressCodec().BytesToString(addr) assert.NilError(t, err) @@ -256,13 +108,17 @@ func TestUnJailNotBonded(t *testing.T) { _, err = f.stakingKeeper.EndBlocker(f.ctx) assert.NilError(t, err) - newHeight = f.ctx.BlockHeight() + 1 - f.ctx = f.ctx.WithBlockHeight(newHeight).WithHeaderInfo(coreheader.Info{Height: newHeight}) + newHeight = integration.HeaderInfoFromContext(f.ctx).Height + 1 + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: newHeight}) // verify we can immediately unjail _, err = f.app.RunMsg( - &msgUnjail, - integration.WithAutomaticFinalizeBlock(), + t, + f.ctx, + func(ctx context.Context) (transaction.Msg, error) { + res, err := f.slashingMsgServer.Unjail(ctx, &msgUnjail) + return res, err + }, integration.WithAutomaticCommit(), ) assert.NilError(t, err) @@ -277,18 +133,25 @@ func TestHandleNewValidator(t *testing.T) { t.Parallel() f := initFixture(t) + bondDenom, err := f.stakingKeeper.BondDenom(f.ctx) + require.NoError(t, err) + + bondPool := f.stakingKeeper.GetBondedPool(f.ctx) + + initialBondPoolBal := f.bankKeeper.GetBalance(f.ctx, bondPool.GetAddress(), bondDenom).Amount + pks := simtestutil.CreateTestPubKeys(1) addr, valpubkey := f.valAddrs[0], pks[0] tstaking := stakingtestutil.NewHelper(t, f.ctx, f.stakingKeeper) signedBlocksWindow, err := f.slashingKeeper.SignedBlocksWindow(f.ctx) assert.NilError(t, err) - f.ctx = f.ctx.WithBlockHeight(signedBlocksWindow + 1).WithHeaderInfo(coreheader.Info{Height: signedBlocksWindow + 1}) + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: signedBlocksWindow + 1}) assert.NilError(t, f.slashingKeeper.AddrPubkeyRelation.Set(f.ctx, pks[0].Address(), pks[0])) consaddr, err := f.stakingKeeper.ConsensusAddressCodec().BytesToString(valpubkey.Address()) assert.NilError(t, err) - info := slashingtypes.NewValidatorSigningInfo(consaddr, f.ctx.BlockHeight(), time.Unix(0, 0), false, int64(0)) + info := slashingtypes.NewValidatorSigningInfo(consaddr, integration.HeaderInfoFromContext(f.ctx).Height, time.Unix(0, 0), false, int64(0)) assert.NilError(t, f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, sdk.ConsAddress(valpubkey.Address()), info)) assert.Equal(t, signedBlocksWindow+1, info.StartHeight) @@ -300,9 +163,6 @@ func TestHandleNewValidator(t *testing.T) { _, err = f.stakingKeeper.EndBlocker(f.ctx) require.NoError(t, err) - bondDenom, err := f.stakingKeeper.BondDenom(f.ctx) - require.NoError(t, err) - assert.DeepEqual( t, f.bankKeeper.GetAllBalances(f.ctx, sdk.AccAddress(addr)), sdk.NewCoins(sdk.NewCoin(bondDenom, testutil.InitTokens.Sub(amt))), @@ -314,7 +174,7 @@ func TestHandleNewValidator(t *testing.T) { // Now a validator, for two blocks assert.NilError(t, f.slashingKeeper.HandleValidatorSignature(f.ctx, valpubkey.Address(), 100, comet.BlockIDFlagCommit)) - f.ctx = f.ctx.WithBlockHeight(signedBlocksWindow + 2).WithHeaderInfo(coreheader.Info{Height: signedBlocksWindow + 2}) + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: signedBlocksWindow + 2}) assert.NilError(t, f.slashingKeeper.HandleValidatorSignature(f.ctx, valpubkey.Address(), 100, comet.BlockIDFlagAbsent)) info, found := f.slashingKeeper.ValidatorSigningInfo.Get(f.ctx, sdk.ConsAddress(valpubkey.Address())) @@ -326,8 +186,7 @@ func TestHandleNewValidator(t *testing.T) { // validator should be bonded still, should not have been jailed or slashed validator, _ := f.stakingKeeper.GetValidatorByConsAddr(f.ctx, sdk.GetConsAddress(valpubkey)) assert.Equal(t, sdk.Bonded, validator.GetStatus()) - bondPool := f.stakingKeeper.GetBondedPool(f.ctx) - expTokens := f.stakingKeeper.TokensFromConsensusPower(f.ctx, 100) + expTokens := f.stakingKeeper.TokensFromConsensusPower(f.ctx, 100).Add(initialBondPoolBal) assert.Assert(t, expTokens.Equal(f.bankKeeper.GetBalance(f.ctx, bondPool.GetAddress(), bondDenom).Amount)) } @@ -348,7 +207,7 @@ func TestHandleAlreadyJailed(t *testing.T) { consaddr, err := f.stakingKeeper.ConsensusAddressCodec().BytesToString(val.Address()) assert.NilError(t, err) - info := slashingtypes.NewValidatorSigningInfo(consaddr, f.ctx.HeaderInfo().Height, time.Unix(0, 0), false, int64(0)) + info := slashingtypes.NewValidatorSigningInfo(consaddr, integration.HeaderInfoFromContext(f.ctx).Height, time.Unix(0, 0), false, int64(0)) assert.NilError(t, f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, sdk.ConsAddress(val.Address()), info)) acc := f.accountKeeper.NewAccountWithAddress(f.ctx, sdk.AccAddress(addr)) @@ -365,7 +224,7 @@ func TestHandleAlreadyJailed(t *testing.T) { // 1000 first blocks OK height := int64(0) for ; height < signedBlocksWindow; height++ { - f.ctx = f.ctx.WithHeaderInfo(coreheader.Info{Height: height}) + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: height}) err = f.slashingKeeper.HandleValidatorSignature(f.ctx, val.Address(), power, comet.BlockIDFlagCommit) assert.NilError(t, err) } @@ -375,7 +234,7 @@ func TestHandleAlreadyJailed(t *testing.T) { // 501 blocks missed for ; height < signedBlocksWindow+(signedBlocksWindow-minSignedPerWindow)+1; height++ { - f.ctx = f.ctx.WithHeaderInfo(coreheader.Info{Height: height}) + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: height}) err = f.slashingKeeper.HandleValidatorSignature(f.ctx, val.Address(), power, comet.BlockIDFlagAbsent) assert.NilError(t, err) } @@ -393,7 +252,7 @@ func TestHandleAlreadyJailed(t *testing.T) { assert.DeepEqual(t, resultingTokens, validator.GetTokens()) // another block missed - f.ctx = f.ctx.WithHeaderInfo(coreheader.Info{Height: height}) + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: height}) assert.NilError(t, f.slashingKeeper.HandleValidatorSignature(f.ctx, val.Address(), power, comet.BlockIDFlagAbsent)) // validator should not have been slashed twice @@ -432,19 +291,20 @@ func TestValidatorDippingInAndOut(t *testing.T) { consaddrStr, err := f.stakingKeeper.ConsensusAddressCodec().BytesToString(addr) assert.NilError(t, err) - info := slashingtypes.NewValidatorSigningInfo(consaddrStr, f.ctx.BlockHeight(), time.Unix(0, 0), false, int64(0)) + info := slashingtypes.NewValidatorSigningInfo(consaddrStr, integration.HeaderInfoFromContext(f.ctx).Height, time.Unix(0, 0), false, int64(0)) assert.NilError(t, f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, consAddr, info)) tstaking.CreateValidatorWithValPower(valAddr, val, power, true) validatorUpdates, err := f.stakingKeeper.EndBlocker(f.ctx) require.NoError(t, err) - assert.Equal(t, 1, len(validatorUpdates)) + // validator updates length should be equal to 2 as we already have one default validator + assert.Equal(t, 2, len(validatorUpdates)) tstaking.CheckValidator(valAddr, stakingtypes.Bonded, false) // 100 first blocks OK height := int64(0) for ; height < int64(100); height++ { - f.ctx = f.ctx.WithBlockHeight(height).WithHeaderInfo(coreheader.Info{Height: height}) + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: height}) assert.NilError(t, f.slashingKeeper.HandleValidatorSignature(f.ctx, val.Address(), power, comet.BlockIDFlagCommit)) } @@ -458,8 +318,10 @@ func TestValidatorDippingInAndOut(t *testing.T) { // 600 more blocks happened height += 600 - f.ctx = f.ctx.WithBlockHeight(height).WithHeaderInfo(coreheader.Info{Height: height}) + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: height}) + // store this height as we don't have block height value in context + startHeight := height // validator added back in accAddr, err := f.accountKeeper.AddressCodec().BytesToString(sdk.AccAddress(pks[2].Address())) assert.NilError(t, err) @@ -488,7 +350,7 @@ func TestValidatorDippingInAndOut(t *testing.T) { // misses 500 blocks + within the signing windows i.e. 700-1700 // validators misses all 1000 blocks of a SignedBlockWindows for ; height < latest+1; height++ { - err = f.slashingKeeper.HandleValidatorSignature(f.ctx.WithHeaderInfo(coreheader.Info{Height: height}), val.Address(), newPower, comet.BlockIDFlagAbsent) + err = f.slashingKeeper.HandleValidatorSignature(integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: height}), val.Address(), newPower, comet.BlockIDFlagAbsent) assert.NilError(t, err) } @@ -497,7 +359,7 @@ func TestValidatorDippingInAndOut(t *testing.T) { assert.NilError(t, err) tstaking.CheckValidator(valAddr, stakingtypes.Unbonding, true) - info = slashingtypes.NewValidatorSigningInfo(consaddrStr, f.ctx.BlockHeight(), time.Unix(0, 0), false, int64(0)) + info = slashingtypes.NewValidatorSigningInfo(consaddrStr, startHeight, time.Unix(0, 0), false, int64(0)) err = f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, consAddr, info) assert.NilError(t, err) @@ -510,9 +372,9 @@ func TestValidatorDippingInAndOut(t *testing.T) { // some blocks pass height = int64(5000) - f.ctx = f.ctx.WithBlockHeight(height).WithHeaderInfo(coreheader.Info{Height: height}) + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: height}) - info = slashingtypes.NewValidatorSigningInfo(consaddrStr, f.ctx.BlockHeight(), time.Unix(0, 0), false, int64(0)) + info = slashingtypes.NewValidatorSigningInfo(consaddrStr, integration.HeaderInfoFromContext(f.ctx).Height, time.Unix(0, 0), false, int64(0)) err = f.slashingKeeper.ValidatorSigningInfo.Set(f.ctx, consAddr, info) assert.NilError(t, err) @@ -538,7 +400,7 @@ func TestValidatorDippingInAndOut(t *testing.T) { // validator misses 501 blocks after SignedBlockWindow period (1000 blocks) latest = signedBlocksWindow + height for ; height < latest+minSignedPerWindow; height++ { - f.ctx = f.ctx.WithBlockHeight(height).WithHeaderInfo(coreheader.Info{Height: height}) + f.ctx = integration.SetHeaderInfo(f.ctx, coreheader.Info{Height: height}) err = f.slashingKeeper.HandleValidatorSignature(f.ctx, val.Address(), newPower, comet.BlockIDFlagAbsent) assert.NilError(t, err) } diff --git a/tests/integration/slashing/keeper/slash_redelegation_test.go b/tests/integration/v2/slashing/slash_redelegation_test.go similarity index 61% rename from tests/integration/slashing/keeper/slash_redelegation_test.go rename to tests/integration/v2/slashing/slash_redelegation_test.go index b1a8ce858925..4d4b56ff2d33 100644 --- a/tests/integration/slashing/keeper/slash_redelegation_test.go +++ b/tests/integration/v2/slashing/slash_redelegation_test.go @@ -1,4 +1,4 @@ -package keeper_test +package slashing import ( "context" @@ -8,50 +8,24 @@ import ( "github.com/stretchr/testify/require" "cosmossdk.io/core/header" - "cosmossdk.io/depinject" - "cosmossdk.io/log" "cosmossdk.io/math" bankkeeper "cosmossdk.io/x/bank/keeper" banktestutil "cosmossdk.io/x/bank/testutil" - distributionkeeper "cosmossdk.io/x/distribution/keeper" - slashingkeeper "cosmossdk.io/x/slashing/keeper" stakingkeeper "cosmossdk.io/x/staking/keeper" stakingtypes "cosmossdk.io/x/staking/types" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - "github.com/cosmos/cosmos-sdk/tests/integration/slashing" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + "github.com/cosmos/cosmos-sdk/tests/integration/v2" sdk "github.com/cosmos/cosmos-sdk/types" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" ) func TestSlashRedelegation(t *testing.T) { - // setting up - var ( - authKeeper authkeeper.AccountKeeper - stakingKeeper *stakingkeeper.Keeper - bankKeeper bankkeeper.Keeper - slashKeeper slashingkeeper.Keeper - distrKeeper distributionkeeper.Keeper - ) - - app, err := simtestutil.Setup( - depinject.Configs( - depinject.Supply(log.NewNopLogger()), - slashing.AppConfig, - ), - &stakingKeeper, - &bankKeeper, - &slashKeeper, - &distrKeeper, - &authKeeper, - ) - require.NoError(t, err) - - // get sdk context, staking msg server and bond denom - ctx := app.BaseApp.NewContext(false) - stakingMsgServer := stakingkeeper.NewMsgServerImpl(stakingKeeper) - bondDenom, err := stakingKeeper.BondDenom(ctx) + f := initFixture(t) + ctx := f.ctx + + stakingMsgServer := stakingkeeper.NewMsgServerImpl(f.stakingKeeper) + bondDenom, err := f.stakingKeeper.BondDenom(ctx) require.NoError(t, err) // evilVal will be slashed, goodVal won't be slashed @@ -65,12 +39,12 @@ func TestSlashRedelegation(t *testing.T) { testAcc2 := sdk.AccAddress([]byte("addr2_______________")) // fund acc 1 and acc 2 - testCoin := sdk.NewCoin(bondDenom, stakingKeeper.TokensFromConsensusPower(ctx, 10)) - fundAccount(t, ctx, bankKeeper, authKeeper, testAcc1, testCoin) - fundAccount(t, ctx, bankKeeper, authKeeper, testAcc2, testCoin) + testCoin := sdk.NewCoin(bondDenom, f.stakingKeeper.TokensFromConsensusPower(ctx, 10)) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, testAcc1, testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, testAcc2, testCoin) - balance1Before := bankKeeper.GetBalance(ctx, testAcc1, bondDenom) - balance2Before := bankKeeper.GetBalance(ctx, testAcc2, bondDenom) + balance1Before := f.bankKeeper.GetBalance(ctx, testAcc1, bondDenom) + balance2Before := f.bankKeeper.GetBalance(ctx, testAcc2, bondDenom) // assert acc 1 and acc 2 balance require.Equal(t, balance1Before.Amount.String(), testCoin.Amount.String()) @@ -78,7 +52,7 @@ func TestSlashRedelegation(t *testing.T) { // creating evil val evilValAddr := sdk.ValAddress(evilValPubKey.Address()) - fundAccount(t, ctx, bankKeeper, authKeeper, sdk.AccAddress(evilValAddr), testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, sdk.AccAddress(evilValAddr), testCoin) createValMsg1, _ := stakingtypes.NewMsgCreateValidator( evilValAddr.String(), evilValPubKey, testCoin, stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) _, err = stakingMsgServer.CreateValidator(ctx, createValMsg1) @@ -86,16 +60,17 @@ func TestSlashRedelegation(t *testing.T) { // creating good val goodValAddr := sdk.ValAddress(goodValPubKey.Address()) - fundAccount(t, ctx, bankKeeper, authKeeper, sdk.AccAddress(goodValAddr), testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, sdk.AccAddress(goodValAddr), testCoin) createValMsg2, _ := stakingtypes.NewMsgCreateValidator( goodValAddr.String(), goodValPubKey, testCoin, stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) _, err = stakingMsgServer.CreateValidator(ctx, createValMsg2) require.NoError(t, err) - ctx = ctx.WithBlockHeight(1).WithHeaderInfo(header.Info{Height: 1}) + ctx = integration.SetHeaderInfo(ctx, header.Info{Height: 1}) // next block, commit height 1, move to height 2 // acc 1 and acc 2 delegate to evil val - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state := f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // Acc 2 delegate @@ -111,13 +86,14 @@ func TestSlashRedelegation(t *testing.T) { // next block, commit height 2, move to height 3 // with the new delegations, evil val increases in voting power and commit byzantine behavior at height 3 consensus // at the same time, acc 1 and acc 2 withdraw delegation from evil val - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) - evilVal, err := stakingKeeper.GetValidator(ctx, evilValAddr) + evilVal, err := f.stakingKeeper.GetValidator(ctx, evilValAddr) require.NoError(t, err) - evilPower := stakingKeeper.TokensToConsensusPower(ctx, evilVal.Tokens) + evilPower := f.stakingKeeper.TokensToConsensusPower(ctx, evilVal.Tokens) // Acc 1 redelegate from evil val to good val redelMsg := stakingtypes.NewMsgBeginRedelegate(testAcc1.String(), evilValAddr.String(), goodValAddr.String(), testCoin) @@ -135,81 +111,60 @@ func TestSlashRedelegation(t *testing.T) { require.NoError(t, err) // next block, commit height 3, move to height 4 - // Slash evil val for byzantine behavior at height 3 consensus, + // Slash evil val for byzantine behavior at height 2 consensus, // at which acc 1 and acc 2 still contributed to evil val voting power // even tho they undelegate at block 3, the valset update is applied after committed block 3 when height 3 consensus already passes - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // slash evil val with slash factor = 0.9, leaving only 10% of stake after slashing - evilVal, _ = stakingKeeper.GetValidator(ctx, evilValAddr) + evilVal, _ = f.stakingKeeper.GetValidator(ctx, evilValAddr) evilValConsAddr, err := evilVal.GetConsAddr() require.NoError(t, err) - err = slashKeeper.Slash(ctx, evilValConsAddr, math.LegacyMustNewDecFromStr("0.9"), evilPower, 3) + err = f.slashingKeeper.Slash(ctx, evilValConsAddr, math.LegacyMustNewDecFromStr("0.9"), evilPower, 2) require.NoError(t, err) - // assert invariant to make sure we conduct slashing correctly - _, stop := stakingkeeper.AllInvariants(stakingKeeper)(ctx) - require.False(t, stop) - - _, stop = bankkeeper.AllInvariants(bankKeeper)(ctx) - require.False(t, stop) - - _, stop = distributionkeeper.AllInvariants(distrKeeper)(ctx) - require.False(t, stop) - // one eternity later - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1000000000000000000)) - require.NoError(t, err) - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + ctxHeader := integration.HeaderInfoFromContext(ctx) + ctxHeader.Time = ctxHeader.Time.Add(time.Duration(1000000000000000000)) + ctx = integration.SetHeaderInfo(ctx, ctxHeader) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // confirm that account 1 and account 2 has been slashed, and the slash amount is correct - balance1AfterSlashing := bankKeeper.GetBalance(ctx, testAcc1, bondDenom) - balance2AfterSlashing := bankKeeper.GetBalance(ctx, testAcc2, bondDenom) + balance1AfterSlashing := f.bankKeeper.GetBalance(ctx, testAcc1, bondDenom) + balance2AfterSlashing := f.bankKeeper.GetBalance(ctx, testAcc2, bondDenom) require.Equal(t, balance1AfterSlashing.Amount.Mul(math.NewIntFromUint64(10)).String(), balance1Before.Amount.String()) require.Equal(t, balance2AfterSlashing.Amount.Mul(math.NewIntFromUint64(10)).String(), balance2Before.Amount.String()) } -func fundAccount(t *testing.T, ctx context.Context, bankKeeper bankkeeper.Keeper, authKeeper authkeeper.AccountKeeper, addr sdk.AccAddress, amount ...sdk.Coin) { +func fundAccount(t *testing.T, ctx context.Context, bankKeeper bankkeeper.Keeper, accountKeeper authkeeper.AccountKeeper, addr sdk.AccAddress, amount ...sdk.Coin) { t.Helper() - if authKeeper.GetAccount(ctx, addr) == nil { - addrAcc := authKeeper.NewAccountWithAddress(ctx, addr) - authKeeper.SetAccount(ctx, addrAcc) + if accountKeeper.GetAccount(ctx, addr) == nil { + addrAcc := accountKeeper.NewAccountWithAddress(ctx, addr) + accountKeeper.SetAccount(ctx, addrAcc) } require.NoError(t, banktestutil.FundAccount(ctx, bankKeeper, addr, amount)) } func TestOverSlashing(t *testing.T) { + f := initFixture(t) + ctx := f.ctx + // slash penalty percentage slashFraction := "0.45" // percentage of (undelegation/(undelegation + redelegation)) undelegationPercentageStr := "0.30" - // setting up - var ( - stakingKeeper *stakingkeeper.Keeper - bankKeeper bankkeeper.Keeper - slashKeeper slashingkeeper.Keeper - distrKeeper distributionkeeper.Keeper - authKeeper authkeeper.AccountKeeper - ) - - app, err := simtestutil.Setup(depinject.Configs( - depinject.Supply(log.NewNopLogger()), - slashing.AppConfig, - ), &stakingKeeper, &bankKeeper, &slashKeeper, &distrKeeper, &authKeeper) - require.NoError(t, err) - - // get sdk context, staking msg server and bond denom - ctx := app.BaseApp.NewContext(false) - stakingMsgServer := stakingkeeper.NewMsgServerImpl(stakingKeeper) - bondDenom, err := stakingKeeper.BondDenom(ctx) + stakingMsgServer := stakingkeeper.NewMsgServerImpl(f.stakingKeeper) + bondDenom, err := f.stakingKeeper.BondDenom(ctx) require.NoError(t, err) // evilVal will be slashed, goodVal won't be slashed @@ -231,13 +186,13 @@ func TestOverSlashing(t *testing.T) { // fund all accounts testCoin := sdk.NewCoin(bondDenom, math.NewInt(1_000_000)) - fundAccount(t, ctx, bankKeeper, authKeeper, testAcc1, testCoin) - fundAccount(t, ctx, bankKeeper, authKeeper, testAcc2, testCoin) - fundAccount(t, ctx, bankKeeper, authKeeper, testAcc3, testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, testAcc1, testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, testAcc2, testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, testAcc3, testCoin) - balance1Before := bankKeeper.GetBalance(ctx, testAcc1, bondDenom) - balance2Before := bankKeeper.GetBalance(ctx, testAcc2, bondDenom) - balance3Before := bankKeeper.GetBalance(ctx, testAcc3, bondDenom) + balance1Before := f.bankKeeper.GetBalance(ctx, testAcc1, bondDenom) + balance2Before := f.bankKeeper.GetBalance(ctx, testAcc2, bondDenom) + balance3Before := f.bankKeeper.GetBalance(ctx, testAcc3, bondDenom) // assert acc 1, 2 and 3 balance require.Equal(t, testCoin.Amount.String(), balance1Before.Amount.String()) @@ -246,7 +201,7 @@ func TestOverSlashing(t *testing.T) { // create evil val evilValAddr := sdk.ValAddress(evilValPubKey.Address()) - fundAccount(t, ctx, bankKeeper, authKeeper, sdk.AccAddress(evilValAddr), testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, sdk.AccAddress(evilValAddr), testCoin) createValMsg1, _ := stakingtypes.NewMsgCreateValidator( evilValAddr.String(), evilValPubKey, testCoin, stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) _, err = stakingMsgServer.CreateValidator(ctx, createValMsg1) @@ -254,15 +209,16 @@ func TestOverSlashing(t *testing.T) { // create good val 1 goodValAddr := sdk.ValAddress(goodValPubKey.Address()) - fundAccount(t, ctx, bankKeeper, authKeeper, sdk.AccAddress(goodValAddr), testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, sdk.AccAddress(goodValAddr), testCoin) createValMsg2, _ := stakingtypes.NewMsgCreateValidator( goodValAddr.String(), goodValPubKey, testCoin, stakingtypes.Description{Details: "test"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) _, err = stakingMsgServer.CreateValidator(ctx, createValMsg2) require.NoError(t, err) // next block - ctx = ctx.WithBlockHeight(app.LastBlockHeight() + 1).WithHeaderInfo(header.Info{Height: app.LastBlockHeight() + 1}) - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + ctx = integration.SetHeaderInfo(ctx, header.Info{Height: int64(f.app.LastBlockHeight()) + 1}) + _, state := f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // delegate all accs to evil val @@ -279,21 +235,23 @@ func TestOverSlashing(t *testing.T) { require.NoError(t, err) // next block - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // evilValAddr done something bad - misbehaveHeight := ctx.BlockHeader().Height - evilVal, err := stakingKeeper.GetValidator(ctx, evilValAddr) + misbehaveHeight := integration.HeaderInfoFromContext(ctx).Height + evilVal, err := f.stakingKeeper.GetValidator(ctx, evilValAddr) require.NoError(t, err) evilValConsAddr, err := evilVal.GetConsAddr() require.NoError(t, err) - evilPower := stakingKeeper.TokensToConsensusPower(ctx, evilVal.Tokens) + evilPower := f.stakingKeeper.TokensToConsensusPower(ctx, evilVal.Tokens) // next block - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // acc 1: redelegate to goodval1 and undelegate FULL amount @@ -319,7 +277,8 @@ func TestOverSlashing(t *testing.T) { amountToUndelegate := undelegationAmountDec.TruncateInt() // next block - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) portionofTestCoins := sdk.NewCoin(bondDenom, amountToUndelegate) @@ -328,38 +287,35 @@ func TestOverSlashing(t *testing.T) { require.NoError(t, err) // next block - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // slash the evil val - err = slashKeeper.Slash(ctx, evilValConsAddr, math.LegacyMustNewDecFromStr(slashFraction), evilPower, misbehaveHeight) + err = f.slashingKeeper.Slash(ctx, evilValConsAddr, math.LegacyMustNewDecFromStr(slashFraction), evilPower, misbehaveHeight) require.NoError(t, err) - // assert invariants - _, stop := stakingkeeper.AllInvariants(stakingKeeper)(ctx) - require.False(t, stop) - _, stop = bankkeeper.AllInvariants(bankKeeper)(ctx) - require.False(t, stop) - _, stop = distributionkeeper.AllInvariants(distrKeeper)(ctx) - require.False(t, stop) - // fastforward 2 blocks to complete redelegations and unbondings for i := 0; i < 2; i++ { - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1000000000000000000)) + ctxHeader := integration.HeaderInfoFromContext(ctx) + ctxHeader.Time = ctxHeader.Time.Add(time.Duration(1000000000000000000)) + ctx = integration.SetHeaderInfo(ctx, ctxHeader) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) } // we check all accounts should be slashed with the equal amount, and they should end up with same balance including staked amount - stakedAcc1, err := stakingKeeper.GetDelegatorBonded(ctx, testAcc1) + stakedAcc1, err := f.stakingKeeper.GetDelegatorBonded(ctx, testAcc1) require.NoError(t, err) - stakedAcc2, err := stakingKeeper.GetDelegatorBonded(ctx, testAcc2) + stakedAcc2, err := f.stakingKeeper.GetDelegatorBonded(ctx, testAcc2) require.NoError(t, err) - stakedAcc3, err := stakingKeeper.GetDelegatorBonded(ctx, testAcc3) + stakedAcc3, err := f.stakingKeeper.GetDelegatorBonded(ctx, testAcc3) require.NoError(t, err) - balance1AfterSlashing := bankKeeper.GetBalance(ctx, testAcc1, bondDenom).Add(sdk.NewCoin(bondDenom, stakedAcc1)) - balance2AfterSlashing := bankKeeper.GetBalance(ctx, testAcc2, bondDenom).Add(sdk.NewCoin(bondDenom, stakedAcc2)) - balance3AfterSlashing := bankKeeper.GetBalance(ctx, testAcc3, bondDenom).Add(sdk.NewCoin(bondDenom, stakedAcc3)) + balance1AfterSlashing := f.bankKeeper.GetBalance(ctx, testAcc1, bondDenom).Add(sdk.NewCoin(bondDenom, stakedAcc1)) + balance2AfterSlashing := f.bankKeeper.GetBalance(ctx, testAcc2, bondDenom).Add(sdk.NewCoin(bondDenom, stakedAcc2)) + balance3AfterSlashing := f.bankKeeper.GetBalance(ctx, testAcc3, bondDenom).Add(sdk.NewCoin(bondDenom, stakedAcc3)) require.Equal(t, "550000stake", balance1AfterSlashing.String()) require.Equal(t, "550000stake", balance2AfterSlashing.String()) @@ -367,32 +323,11 @@ func TestOverSlashing(t *testing.T) { } func TestSlashRedelegation_ValidatorLeftWithNoTokens(t *testing.T) { - // setting up - var ( - authKeeper authkeeper.AccountKeeper - stakingKeeper *stakingkeeper.Keeper - bankKeeper bankkeeper.Keeper - slashKeeper slashingkeeper.Keeper - distrKeeper distributionkeeper.Keeper - ) - - app, err := simtestutil.Setup( - depinject.Configs( - depinject.Supply(log.NewNopLogger()), - slashing.AppConfig, - ), - &stakingKeeper, - &bankKeeper, - &slashKeeper, - &distrKeeper, - &authKeeper, - ) - require.NoError(t, err) - - // get sdk context, staking msg server and bond denom - ctx := app.BaseApp.NewContext(false).WithBlockHeight(1).WithHeaderInfo(header.Info{Height: 1}) - stakingMsgServer := stakingkeeper.NewMsgServerImpl(stakingKeeper) - bondDenom, err := stakingKeeper.BondDenom(ctx) + f := initFixture(t) + ctx := f.ctx + + stakingMsgServer := stakingkeeper.NewMsgServerImpl(f.stakingKeeper) + bondDenom, err := f.stakingKeeper.BondDenom(ctx) require.NoError(t, err) // create validators DST and SRC @@ -402,9 +337,9 @@ func TestSlashRedelegation_ValidatorLeftWithNoTokens(t *testing.T) { dstAddr := sdk.ValAddress(dstPubKey.Address()) srcAddr := sdk.ValAddress(srcPubKey.Address()) - testCoin := sdk.NewCoin(bondDenom, stakingKeeper.TokensFromConsensusPower(ctx, 1000)) - fundAccount(t, ctx, bankKeeper, authKeeper, sdk.AccAddress(dstAddr), testCoin) - fundAccount(t, ctx, bankKeeper, authKeeper, sdk.AccAddress(srcAddr), testCoin) + testCoin := sdk.NewCoin(bondDenom, f.stakingKeeper.TokensFromConsensusPower(ctx, 1000)) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, sdk.AccAddress(dstAddr), testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, sdk.AccAddress(srcAddr), testCoin) createValMsgDST, _ := stakingtypes.NewMsgCreateValidator( dstAddr.String(), dstPubKey, testCoin, stakingtypes.Description{Details: "Validator DST"}, stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)), math.OneInt()) @@ -418,10 +353,10 @@ func TestSlashRedelegation_ValidatorLeftWithNoTokens(t *testing.T) { // create a user accounts and delegate to SRC and DST userAcc := sdk.AccAddress([]byte("user1_______________")) - fundAccount(t, ctx, bankKeeper, authKeeper, userAcc, testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, userAcc, testCoin) userAcc2 := sdk.AccAddress([]byte("user2_______________")) - fundAccount(t, ctx, bankKeeper, authKeeper, userAcc2, testCoin) + fundAccount(t, ctx, f.bankKeeper, f.accountKeeper, userAcc2, testCoin) delMsg := stakingtypes.NewMsgDelegate(userAcc.String(), srcAddr.String(), testCoin) _, err = stakingMsgServer.Delegate(ctx, delMsg) @@ -431,18 +366,20 @@ func TestSlashRedelegation_ValidatorLeftWithNoTokens(t *testing.T) { _, err = stakingMsgServer.Delegate(ctx, delMsg) require.NoError(t, err) - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state := f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // commit an infraction with DST and store the power at this height - dstVal, err := stakingKeeper.GetValidator(ctx, dstAddr) + dstVal, err := f.stakingKeeper.GetValidator(ctx, dstAddr) require.NoError(t, err) - dstPower := stakingKeeper.TokensToConsensusPower(ctx, dstVal.Tokens) + dstPower := f.stakingKeeper.TokensToConsensusPower(ctx, dstVal.Tokens) dstConsAddr, err := dstVal.GetConsAddr() require.NoError(t, err) - dstInfractionHeight := ctx.BlockHeight() + dstInfractionHeight := f.app.LastBlockHeight() + 1 - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // undelegate all the user tokens from DST @@ -451,14 +388,15 @@ func TestSlashRedelegation_ValidatorLeftWithNoTokens(t *testing.T) { require.NoError(t, err) // commit an infraction with SRC and store the power at this height - srcVal, err := stakingKeeper.GetValidator(ctx, srcAddr) + srcVal, err := f.stakingKeeper.GetValidator(ctx, srcAddr) require.NoError(t, err) - srcPower := stakingKeeper.TokensToConsensusPower(ctx, srcVal.Tokens) + srcPower := f.stakingKeeper.TokensToConsensusPower(ctx, srcVal.Tokens) srcConsAddr, err := srcVal.GetConsAddr() require.NoError(t, err) - srcInfractionHeight := ctx.BlockHeight() + srcInfractionHeight := f.app.LastBlockHeight() + 1 - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) // redelegate all the user tokens from SRC to DST @@ -471,7 +409,8 @@ func TestSlashRedelegation_ValidatorLeftWithNoTokens(t *testing.T) { _, err = stakingMsgServer.Undelegate(ctx, undelMsg) require.NoError(t, err) - ctx, err = simtestutil.NextBlock(app, ctx, time.Duration(1)) + _, state = f.app.Deliver(t, ctx, nil) + _, err = f.app.Commit(state) require.NoError(t, err) undelMsg = stakingtypes.NewMsgUndelegate(userAcc.String(), dstAddr.String(), testCoin) @@ -479,24 +418,14 @@ func TestSlashRedelegation_ValidatorLeftWithNoTokens(t *testing.T) { require.NoError(t, err) // check that dst now has zero tokens - valDst, err := stakingKeeper.GetValidator(ctx, dstAddr) + valDst, err := f.stakingKeeper.GetValidator(ctx, dstAddr) require.NoError(t, err) require.Equal(t, math.ZeroInt().String(), valDst.Tokens.String()) // slash the infractions - err = slashKeeper.Slash(ctx, dstConsAddr, math.LegacyMustNewDecFromStr("0.8"), dstPower, dstInfractionHeight) + err = f.slashingKeeper.Slash(ctx, dstConsAddr, math.LegacyMustNewDecFromStr("0.8"), dstPower, int64(dstInfractionHeight)) require.NoError(t, err) - err = slashKeeper.Slash(ctx, srcConsAddr, math.LegacyMustNewDecFromStr("0.5"), srcPower, srcInfractionHeight) + err = f.slashingKeeper.Slash(ctx, srcConsAddr, math.LegacyMustNewDecFromStr("0.5"), srcPower, int64(srcInfractionHeight)) require.NoError(t, err) - - // assert invariants to ensure correctness - _, stop := stakingkeeper.AllInvariants(stakingKeeper)(ctx) - require.False(t, stop) - - _, stop = bankkeeper.AllInvariants(bankKeeper)(ctx) - require.False(t, stop) - - _, stop = distributionkeeper.AllInvariants(distrKeeper)(ctx) - require.False(t, stop) } diff --git a/tests/integration/v2/slashing/slashing_test.go b/tests/integration/v2/slashing/slashing_test.go new file mode 100644 index 000000000000..bc835e84a39a --- /dev/null +++ b/tests/integration/v2/slashing/slashing_test.go @@ -0,0 +1,175 @@ +package slashing + +import ( + "context" + "testing" + "time" + + "github.com/stretchr/testify/require" + "gotest.tools/v3/assert" + + "cosmossdk.io/depinject" + "cosmossdk.io/log" + "cosmossdk.io/math" + _ "cosmossdk.io/x/accounts" // import as blank for app wiring + _ "cosmossdk.io/x/bank" // import as blank for app wiring + bankkeeper "cosmossdk.io/x/bank/keeper" + banktestutil "cosmossdk.io/x/bank/testutil" + _ "cosmossdk.io/x/consensus" // import as blank for app wiring + _ "cosmossdk.io/x/distribution" // import as blank for app wiring + distrkeeper "cosmossdk.io/x/distribution/keeper" + _ "cosmossdk.io/x/mint" // import as blank for app wiring + _ "cosmossdk.io/x/protocolpool" // import as blank for app wiring + _ "cosmossdk.io/x/slashing" // import as blank for app wiring + slashingkeeper "cosmossdk.io/x/slashing/keeper" + "cosmossdk.io/x/slashing/testutil" + slashingtypes "cosmossdk.io/x/slashing/types" + _ "cosmossdk.io/x/staking" // import as blank for app wiring + stakingkeeper "cosmossdk.io/x/staking/keeper" + stakingtypes "cosmossdk.io/x/staking/types" + + "github.com/cosmos/cosmos-sdk/client" + codecaddress "github.com/cosmos/cosmos-sdk/codec/address" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/tests/integration/v2" + "github.com/cosmos/cosmos-sdk/testutil/configurator" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/x/auth" // import as blank for app wiring + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import as blank for app wiring + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + _ "github.com/cosmos/cosmos-sdk/x/genutil" // import as blank for app wiring +) + +var ( + priv1 = secp256k1.GenPrivKey() + addr1 = sdk.AccAddress(priv1.PubKey().Address()) + valaddrCodec = codecaddress.NewBech32Codec("cosmosvaloper") + + valKey = ed25519.GenPrivKey() + valAddr = sdk.AccAddress(valKey.PubKey().Address()) +) + +type fixture struct { + app *integration.App + + ctx context.Context + + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + slashingKeeper slashingkeeper.Keeper + stakingKeeper *stakingkeeper.Keeper + distrKeeper distrkeeper.Keeper + + slashingMsgServer slashingtypes.MsgServer + txConfig client.TxConfig + + valAddrs []sdk.ValAddress +} + +func initFixture(t *testing.T) *fixture { + t.Helper() + + res := fixture{} + + moduleConfigs := []configurator.ModuleOption{ + configurator.AccountsModule(), + configurator.AuthModule(), + configurator.BankModule(), + configurator.StakingModule(), + configurator.SlashingModule(), + configurator.TxModule(), + configurator.ValidateModule(), + configurator.ConsensusModule(), + configurator.GenutilModule(), + configurator.MintModule(), + configurator.DistributionModule(), + configurator.ProtocolPoolModule(), + } + + acc := &authtypes.BaseAccount{ + Address: addr1.String(), + } + + var err error + startupCfg := integration.DefaultStartUpConfig(t) + startupCfg.GenesisAccounts = []integration.GenesisAccount{{GenesisAccount: acc}} + + startupCfg.BranchService = &integration.BranchService{} + startupCfg.HeaderService = &integration.HeaderService{} + + res.app, err = integration.NewApp( + depinject.Configs(configurator.NewAppV2Config(moduleConfigs...), depinject.Supply(log.NewNopLogger())), + startupCfg, + &res.bankKeeper, &res.accountKeeper, &res.stakingKeeper, &res.slashingKeeper, &res.distrKeeper, &res.txConfig) + require.NoError(t, err) + + res.ctx = res.app.StateLatestContext(t) + + // set default staking params + // TestParams set the SignedBlocksWindow to 1000 and MaxMissedBlocksPerWindow to 500 + err = res.slashingKeeper.Params.Set(res.ctx, testutil.TestParams()) + assert.NilError(t, err) + + addrDels := simtestutil.AddTestAddrsIncremental(res.bankKeeper, res.stakingKeeper, res.ctx, 6, res.stakingKeeper.TokensFromConsensusPower(res.ctx, 200)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrDels) + + consaddr0, err := res.stakingKeeper.ConsensusAddressCodec().BytesToString(addrDels[0]) + require.NoError(t, err) + consaddr1, err := res.stakingKeeper.ConsensusAddressCodec().BytesToString(addrDels[1]) + require.NoError(t, err) + + info1 := slashingtypes.NewValidatorSigningInfo(consaddr0, int64(4), time.Unix(2, 0), false, int64(10)) + info2 := slashingtypes.NewValidatorSigningInfo(consaddr1, int64(5), time.Unix(2, 0), false, int64(10)) + + err = res.slashingKeeper.ValidatorSigningInfo.Set(res.ctx, sdk.ConsAddress(addrDels[0]), info1) + require.NoError(t, err) + err = res.slashingKeeper.ValidatorSigningInfo.Set(res.ctx, sdk.ConsAddress(addrDels[1]), info2) + require.NoError(t, err) + + res.valAddrs = valAddrs + res.slashingMsgServer = slashingkeeper.NewMsgServerImpl(res.slashingKeeper) + + return &res +} + +func TestSlashingMsgs(t *testing.T) { + f := initFixture(t) + + genTokens := sdk.TokensFromConsensusPower(42, sdk.DefaultPowerReduction) + bondTokens := sdk.TokensFromConsensusPower(10, sdk.DefaultPowerReduction) + genCoin := sdk.NewCoin(sdk.DefaultBondDenom, genTokens) + bondCoin := sdk.NewCoin(sdk.DefaultBondDenom, bondTokens) + + require.NoError(t, banktestutil.FundAccount(f.ctx, f.bankKeeper, addr1, sdk.NewCoins(genCoin))) + + description := stakingtypes.NewDescription("foo_moniker", "", "", "", "", &stakingtypes.Metadata{}) + commission := stakingtypes.NewCommissionRates(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec()) + + addrStrVal, err := valaddrCodec.BytesToString(addr1) + require.NoError(t, err) + createValidatorMsg, err := stakingtypes.NewMsgCreateValidator( + addrStrVal, valKey.PubKey(), bondCoin, description, commission, math.OneInt(), + ) + require.NoError(t, err) + + _ = f.app.SignCheckDeliver(t, f.ctx, []sdk.Msg{createValidatorMsg}, "", []uint64{0}, []uint64{0}, []cryptotypes.PrivKey{priv1}, "") + require.True(t, sdk.Coins{genCoin.Sub(bondCoin)}.Equal(f.bankKeeper.GetAllBalances(f.ctx, addr1))) + + validator, err := f.stakingKeeper.GetValidator(f.ctx, sdk.ValAddress(addr1)) + require.NoError(t, err) + + require.Equal(t, addrStrVal, validator.OperatorAddress) + require.Equal(t, stakingtypes.Bonded, validator.Status) + require.True(math.IntEq(t, bondTokens, validator.BondedTokens())) + unjailMsg := &slashingtypes.MsgUnjail{ValidatorAddr: addrStrVal} + + _, err = f.slashingKeeper.ValidatorSigningInfo.Get(f.ctx, sdk.ConsAddress(valAddr)) + require.NoError(t, err) + + // unjail should fail with validator not jailed error + _ = f.app.SignCheckDeliver(t, f.ctx, []sdk.Msg{unjailMsg}, "", []uint64{0}, []uint64{1}, []cryptotypes.PrivKey{priv1}, slashingtypes.ErrValidatorNotJailed.Error()) +} diff --git a/testutil/sims/address_helpers.go b/testutil/sims/address_helpers.go index d0b8bb8ce7fc..f90225502b80 100644 --- a/testutil/sims/address_helpers.go +++ b/testutil/sims/address_helpers.go @@ -2,6 +2,7 @@ package sims import ( "bytes" + "context" "encoding/hex" "errors" "strconv" @@ -20,7 +21,7 @@ const mintModuleName = "mint" type GenerateAccountStrategy func(int) []sdk.AccAddress // AddTestAddrsFromPubKeys adds the addresses into the SimApp providing only the public keys. -func AddTestAddrsFromPubKeys(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx sdk.Context, pubKeys []cryptotypes.PubKey, accAmt math.Int) { +func AddTestAddrsFromPubKeys(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx context.Context, pubKeys []cryptotypes.PubKey, accAmt math.Int) { bondDenom, err := stakingKeeper.BondDenom(ctx) if err != nil { panic(err) @@ -39,11 +40,11 @@ func AddTestAddrs(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx sdk.Co } // AddTestAddrsIncremental constructs and returns accNum amount of accounts with an initial balance of accAmt in random order -func AddTestAddrsIncremental(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx sdk.Context, accNum int, accAmt math.Int) []sdk.AccAddress { +func AddTestAddrsIncremental(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx context.Context, accNum int, accAmt math.Int) []sdk.AccAddress { return addTestAddrs(bankKeeper, stakingKeeper, ctx, accNum, accAmt, CreateIncrementalAccounts) } -func addTestAddrs(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx sdk.Context, accNum int, accAmt math.Int, strategy GenerateAccountStrategy) []sdk.AccAddress { +func addTestAddrs(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx context.Context, accNum int, accAmt math.Int, strategy GenerateAccountStrategy) []sdk.AccAddress { testAddrs := strategy(accNum) bondDenom, err := stakingKeeper.BondDenom(ctx) if err != nil { @@ -58,7 +59,7 @@ func addTestAddrs(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx sdk.Co return testAddrs } -func initAccountWithCoins(bankKeeper BankKeeper, ctx sdk.Context, addr sdk.AccAddress, coins sdk.Coins) { +func initAccountWithCoins(bankKeeper BankKeeper, ctx context.Context, addr sdk.AccAddress, coins sdk.Coins) { if err := bankKeeper.MintCoins(ctx, mintModuleName, coins); err != nil { panic(err) } From abc5fd0226abb7942e563ff8e71de4b8e8c6e127 Mon Sep 17 00:00:00 2001 From: Alexander Peters Date: Thu, 5 Dec 2024 21:28:14 +0100 Subject: [PATCH 15/62] feat(math): Implement custom hybrid un-/marshal model (#22529) --- math/CHANGELOG.md | 3 + math/dec.go | 82 ++++++++++++++++++-- math/dec_examples_test.go | 2 +- math/dec_test.go | 153 ++++++++++++++++++++++++-------------- 4 files changed, 177 insertions(+), 63 deletions(-) diff --git a/math/CHANGELOG.md b/math/CHANGELOG.md index 7ccd0e252390..1e9d08c3ada6 100644 --- a/math/CHANGELOG.md +++ b/math/CHANGELOG.md @@ -36,6 +36,9 @@ Ref: https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.j ## [Unreleased] +* [#11783](https://github.com/cosmos/cosmos-sdk/issues/11783) feat(math): Upstream GDA based decimal type + + ## [math/v1.4.0](https://github.com/cosmos/cosmos-sdk/releases/tag/math/v1.4.0) - 2024-01-20 ### Features diff --git a/math/dec.go b/math/dec.go index 3f96345e249b..4935fb2eb9a3 100644 --- a/math/dec.go +++ b/math/dec.go @@ -4,6 +4,7 @@ import ( "encoding/json" stderrors "errors" "math/big" + "strconv" "github.com/cockroachdb/apd/v3" @@ -299,7 +300,7 @@ func (x Dec) Int64() (int64, error) { // fit precisely into an *big.Int. func (x Dec) BigInt() (*big.Int, error) { y, _ := x.Reduce() - z, ok := new(big.Int).SetString(y.String(), 10) + z, ok := new(big.Int).SetString(y.Text('f'), 10) if !ok { return nil, ErrNonIntegral } @@ -334,7 +335,7 @@ func (x Dec) SdkIntTrim() (Int, error) { // String formatted in decimal notation: '-ddddd.dddd', no exponent func (x Dec) String() string { - return x.dec.Text('f') + return string(fmtE(x.dec, 'E')) } // Text converts the floating-point number x to a string according @@ -407,14 +408,81 @@ func (x Dec) Reduce() (Dec, int) { return y, n } +// Marshal serializes the decimal value into a byte slice in text format. +// This method represents the decimal in a portable and compact hybrid notation. +// Based on the exponent value, the number is formatted into decimal: -ddddd.ddddd, no exponent +// or scientific notation: -d.ddddE±dd +// +// For example, the following transformations are made: +// - 0 -> 0 +// - 123 -> 123 +// - 10000 -> 10000 +// - -0.001 -> -0.001 +// - -0.000000001 -> -1E-9 +// +// Returns: +// - A byte slice of the decimal in text format. +// - An error if the decimal cannot be reduced or marshaled properly. func (x Dec) Marshal() ([]byte, error) { - // implemented in a new PR. See: https://github.com/cosmos/cosmos-sdk/issues/22525 - panic("not implemented") + var d apd.Decimal + if _, _, err := dec128Context.Reduce(&d, &x.dec); err != nil { + return nil, ErrInvalidDec.Wrap(err.Error()) + } + return fmtE(d, 'E'), nil +} + +// fmtE formats a decimal number into a byte slice in scientific notation or fixed-point notation depending on the exponent. +// If the adjusted exponent is between -6 and 6 inclusive, it uses fixed-point notation, otherwise it uses scientific notation. +func fmtE(d apd.Decimal, fmt byte) []byte { + var scratch, dest [16]byte + buf := dest[:0] + digits := d.Coeff.Append(scratch[:0], 10) + totalDigits := int64(len(digits)) + adj := int64(d.Exponent) + totalDigits - 1 + if adj > -6 && adj < 6 { + return []byte(d.Text('f')) + } + switch { + case totalDigits > 5: + beforeComma := digits[0 : totalDigits-6] + adj -= int64(len(beforeComma) - 1) + buf = append(buf, beforeComma...) + buf = append(buf, '.') + buf = append(buf, digits[totalDigits-6:]...) + case totalDigits > 1: + buf = append(buf, digits[0]) + buf = append(buf, '.') + buf = append(buf, digits[1:]...) + default: + buf = append(buf, digits[0:]...) + } + + buf = append(buf, fmt) + var ch byte + if adj < 0 { + ch = '-' + adj = -adj + } else { + ch = '+' + } + buf = append(buf, ch) + return strconv.AppendInt(buf, adj, 10) } +// Unmarshal parses a byte slice containing a text-formatted decimal and stores the result in the receiver. +// It returns an error if the byte slice does not represent a valid decimal. func (x *Dec) Unmarshal(data []byte) error { - // implemented in a new PR. See: https://github.com/cosmos/cosmos-sdk/issues/22525 - panic("not implemented") + result, err := NewDecFromString(string(data)) + if err != nil { + return ErrInvalidDec.Wrap(err.Error()) + } + + if result.dec.Form != apd.Finite { + return ErrInvalidDec.Wrap("unknown decimal form") + } + + x.dec = result.dec + return nil } // MarshalTo encodes the receiver into the provided byte slice and returns the number of bytes written and any error encountered. @@ -435,7 +503,7 @@ func (x Dec) Size() int { // MarshalJSON serializes the Dec struct into a JSON-encoded byte slice using scientific notation. func (x Dec) MarshalJSON() ([]byte, error) { - return json.Marshal(x.dec.Text('E')) + return json.Marshal(fmtE(x.dec, 'E')) } // UnmarshalJSON implements the json.Unmarshaler interface for the Dec type, converting JSON strings to Dec objects. diff --git a/math/dec_examples_test.go b/math/dec_examples_test.go index 5c2dc8a021ed..c2cf3f5a836f 100644 --- a/math/dec_examples_test.go +++ b/math/dec_examples_test.go @@ -308,7 +308,7 @@ func ExampleDec_MulExact() { // 2.50 // exponent out of range: invalid decimal // unexpected rounding - // 0.00000000000000000000000000000000000 + // 0E-35 // 0 } diff --git a/math/dec_test.go b/math/dec_test.go index ef4c9fbd5de3..f5e91572c0d2 100644 --- a/math/dec_test.go +++ b/math/dec_test.go @@ -3,7 +3,6 @@ package math import ( "fmt" "math" - "strconv" "strings" "testing" @@ -152,11 +151,11 @@ func TestNewDecFromInt64(t *testing.T) { }, "max value": { src: math.MaxInt64, - exp: strconv.Itoa(math.MaxInt64), + exp: "9223372036854.775807E+6", }, "min value": { src: math.MinInt64, - exp: strconv.Itoa(math.MinInt64), + exp: "9223372036854.775808E+6", }, } for name, spec := range specs { @@ -1247,15 +1246,17 @@ func TestToBigInt(t *testing.T) { {"12345.6", "", ErrNonIntegral}, } for idx, tc := range tcs { - a, err := NewDecFromString(tc.intStr) - require.NoError(t, err) - b, err := a.BigInt() - if tc.isError == nil { - require.NoError(t, err, "test_%d", idx) - require.Equal(t, tc.out, b.String(), "test_%d", idx) - } else { - require.ErrorIs(t, err, tc.isError, "test_%d", idx) - } + t.Run(fmt.Sprintf("%d", idx), func(t *testing.T) { + a, err := NewDecFromString(tc.intStr) + require.NoError(t, err) + b, err := a.BigInt() + if tc.isError == nil { + require.NoError(t, err, "test_%d", idx) + require.Equal(t, tc.out, b.String(), "test_%d", idx) + } else { + require.ErrorIs(t, err, tc.isError, "test_%d", idx) + } + }) } } @@ -1309,55 +1310,38 @@ func must[T any](r T, err error) T { } func TestMarshalUnmarshal(t *testing.T) { - t.Skip("not supported, yet") specs := map[string]struct { x Dec exp string expErr error }{ - "No trailing zeros": { - x: NewDecFromInt64(123456), - exp: "1.23456E+5", - }, - "Trailing zeros": { - x: NewDecFromInt64(123456000), - exp: "1.23456E+8", - }, "Zero value": { x: NewDecFromInt64(0), - exp: "0E+0", + exp: "0", }, "-0": { x: NewDecFromInt64(-0), - exp: "0E+0", - }, - "Decimal value": { - x: must(NewDecFromString("1.30000")), - exp: "1.3E+0", - }, - "Positive value": { - x: NewDecFromInt64(10), - exp: "1E+1", + exp: "0", }, - "negative 10": { - x: NewDecFromInt64(-10), - exp: "-1E+1", + "1 decimal place": { + x: must(NewDecFromString("0.1")), + exp: "0.1", }, - "9 with trailing zeros": { - x: must(NewDecFromString("9." + strings.Repeat("0", 34))), - exp: "9E+0", + "2 decimal places": { + x: must(NewDecFromString("0.01")), + exp: "0.01", }, - "negative 1 with negative exponent zeros": { - x: must(NewDecFromString("-1.000001")), - exp: "-1.000001E+0", + "3 decimal places": { + x: must(NewDecFromString("0.001")), + exp: "0.001", }, - "negative 1 with trailing zeros": { - x: must(NewDecFromString("-1." + strings.Repeat("0", 34))), - exp: "-1E+0", + "4 decimal places": { + x: must(NewDecFromString("0.0001")), + exp: "0.0001", }, "5 decimal places": { x: must(NewDecFromString("0.00001")), - exp: "1E-5", + exp: "0.00001", }, "6 decimal places": { x: must(NewDecFromString("0.000001")), @@ -1367,17 +1351,73 @@ func TestMarshalUnmarshal(t *testing.T) { x: must(NewDecFromString("0.0000001")), exp: "1E-7", }, + "1": { + x: must(NewDecFromString("1")), + exp: "1", + }, + "12": { + x: must(NewDecFromString("12")), + exp: "12", + }, + "123": { + x: must(NewDecFromString("123")), + exp: "123", + }, + "1234": { + x: must(NewDecFromString("1234")), + exp: "1234", + }, + "12345": { + x: must(NewDecFromString("12345")), + exp: "12345", + }, + "123456": { + x: must(NewDecFromString("123456")), + exp: "123456", + }, + "1234567": { + x: must(NewDecFromString("1234567")), + exp: "1.234567E+6", + }, + "12345678": { + x: must(NewDecFromString("12345678")), + exp: "12.345678E+6", + }, + "123456789": { + x: must(NewDecFromString("123456789")), + exp: "123.456789E+6", + }, + "1234567890": { + x: must(NewDecFromString("1234567890")), + exp: "123.456789E+7", + }, + "12345678900": { + x: must(NewDecFromString("12345678900")), + exp: "123.456789E+8", + }, + "negative 1 with negative exponent": { + x: must(NewDecFromString("-1.000001")), + exp: "-1.000001", + }, + "-1.0000001 - negative 1 with negative exponent": { + x: must(NewDecFromString("-1.0000001")), + exp: "-1.0000001", + }, + "3 decimal places before the comma": { + x: must(NewDecFromString("100")), + exp: "100", + }, "4 decimal places before the comma": { x: must(NewDecFromString("1000")), - exp: "1E+3", + exp: "1000", }, "5 decimal places before the comma": { x: must(NewDecFromString("10000")), - exp: "1E+4", + exp: "10000", }, "6 decimal places before the comma": { x: must(NewDecFromString("100000")), - exp: "1E+5", + exp: "100000", }, "7 decimal places before the comma": { x: must(NewDecFromString("1000000")), @@ -1388,12 +1428,12 @@ func TestMarshalUnmarshal(t *testing.T) { exp: "1E+100000", }, "1.1e100000": { - x: NewDecWithExp(11, 100_000), - expErr: ErrInvalidDec, + x: must(NewDecFromString("1.1e100000")), + exp: "1.1E+100000", }, - "1.e100000": { - x: NewDecWithExp(1, 100_000), - exp: "1E+100000", + "1e100001": { + x: NewDecWithExp(1, 100_001), + expErr: ErrInvalidDec, }, } for name, spec := range specs { @@ -1404,9 +1444,12 @@ func TestMarshalUnmarshal(t *testing.T) { return } require.NoError(t, gotErr) - unmarshalled := new(Dec) - require.NoError(t, unmarshalled.Unmarshal(marshaled)) - assert.Equal(t, spec.exp, unmarshalled.dec.Text('E')) + assert.Equal(t, spec.exp, string(marshaled)) + // and backwards + unmarshalledDec := new(Dec) + require.NoError(t, unmarshalledDec.Unmarshal(marshaled)) + assert.Equal(t, spec.exp, unmarshalledDec.String()) + assert.True(t, spec.x.Equal(*unmarshalledDec)) }) } } From 10c54005be717b7871f549b0472671c476538af3 Mon Sep 17 00:00:00 2001 From: Matt Kocubinski Date: Thu, 5 Dec 2024 16:47:32 -0600 Subject: [PATCH 16/62] fix(confix): correctly distinguish server/v2 config (#22780) --- tools/confix/upgrade.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/confix/upgrade.go b/tools/confix/upgrade.go index d212bbfb7927..d0ced95da66f 100644 --- a/tools/confix/upgrade.go +++ b/tools/confix/upgrade.go @@ -44,7 +44,7 @@ func Upgrade(ctx context.Context, plan transform.Plan, doc *tomledit.Document, c } // ignore validation for serverv2 by checking any default field found in doc - isServerV2 := doc.First(strings.Split("store.options.ss-pruning-option", ".")...) != nil + isServerV2 := doc.First(strings.Split("store.options.sc-pruning-option", ".")...) != nil // allow to skip validation if !skipValidate && !isServerV2 { From 3a2a0ac66671bad596251e5c1d04c23a44561ced Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 6 Dec 2024 14:19:56 +0800 Subject: [PATCH 17/62] test(systemtests): fix query block-results in TestStakeUnstake for v2 (#22782) --- server/v2/testdata/app.toml | 7 ------- tests/systemtests/staking_test.go | 6 +++++- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/server/v2/testdata/app.toml b/server/v2/testdata/app.toml index 3f0e640a8c3e..be2f82566692 100644 --- a/server/v2/testdata/app.toml +++ b/server/v2/testdata/app.toml @@ -30,13 +30,6 @@ ss-type = 'pebble' # State commitment database type. Currently we support: "iavl" and "iavl-v2" sc-type = 'iavl' -# Pruning options for state storage -[store.options.ss-pruning-option] -# Number of recent heights to keep on disk. -keep-recent = 2 -# Height interval at which pruned heights are removed from disk. -interval = 100 - # Pruning options for state commitment [store.options.sc-pruning-option] # Number of recent heights to keep on disk. diff --git a/tests/systemtests/staking_test.go b/tests/systemtests/staking_test.go index ba734d6e8d90..b1b3829a9d1f 100644 --- a/tests/systemtests/staking_test.go +++ b/tests/systemtests/staking_test.go @@ -42,7 +42,11 @@ func TestStakeUnstake(t *testing.T) { assert.Equal(t, int64(8999999), cli.QueryBalance(account1Addr, "stake")) // check validator has been updated - rsp = cli.CustomQuery("q", "block-results", gjson.Get(rsp, "height").String()) + if systest.IsV2() { + rsp = cli.CustomQuery("q", "comet", "block-results", gjson.Get(rsp, "height").String()) + } else { + rsp = cli.CustomQuery("q", "block-results", gjson.Get(rsp, "height").String()) + } validatorUpdates := gjson.Get(rsp, "validator_updates").Array() assert.NotEmpty(t, validatorUpdates) vpk := gjson.Get(validatorUpdates[0].String(), "pub_key_bytes").String() From 4caac04c23af4eb19085ec4fb1b2e0d6d1e363b8 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 6 Dec 2024 12:03:12 +0100 Subject: [PATCH 18/62] test(systemtests): fix gRPC tests for v1 & v2 (#22774) --- server/v2/appmanager/appmanager.go | 2 +- systemtests/CHANGELOG.md | 4 + systemtests/rest_support.go | 99 +++++++++++++---- tests/systemtests/authz_test.go | 142 ++++++++++++------------- tests/systemtests/bank_test.go | 52 ++++----- tests/systemtests/distribution_test.go | 98 ++++++++--------- tests/systemtests/go.mod | 2 +- tests/systemtests/go.sum | 4 +- 8 files changed, 233 insertions(+), 170 deletions(-) diff --git a/server/v2/appmanager/appmanager.go b/server/v2/appmanager/appmanager.go index b31bd33db977..19f7eaae545c 100644 --- a/server/v2/appmanager/appmanager.go +++ b/server/v2/appmanager/appmanager.go @@ -230,7 +230,7 @@ func (a appManager[T]) Query(ctx context.Context, version uint64, request transa _, queryState, err = a.db.StateLatest() } if err != nil { - return nil, err + return nil, fmt.Errorf("invalid height: %w", err) } return a.stf.Query(ctx, queryState, a.config.QueryGasLimit, request) } diff --git a/systemtests/CHANGELOG.md b/systemtests/CHANGELOG.md index 77787b91d7a8..2a27c4162cf2 100644 --- a/systemtests/CHANGELOG.md +++ b/systemtests/CHANGELOG.md @@ -36,6 +36,10 @@ Ref: https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.j ## [Unreleased] +## [v1.0.0-rc.3] - 2024-12-05 + +* [#22774](https://github.com/cosmos/cosmos-sdk/pull/22774) Add greater than or equal support in Rest test suite + ## [v1.0.0-rc.2] - 2024-11-26 * [#22577](https://github.com/cosmos/cosmos-sdk/pull/22577) Support invalid RPC response for CometBFT v1 diff --git a/systemtests/rest_support.go b/systemtests/rest_support.go index aa7efd807cc4..b2615fc2aed6 100644 --- a/systemtests/rest_support.go +++ b/systemtests/rest_support.go @@ -7,15 +7,14 @@ import ( "testing" "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/testutil" ) type RestTestCase struct { - Name string - Url string - ExpCode int - ExpOut string + Name string + Url string + ExpCode int + ExpCodeGTE int + ExpOut string } // RunRestQueries runs given Rest testcases by making requests and @@ -25,33 +24,71 @@ func RunRestQueries(t *testing.T, testCases ...RestTestCase) { for _, tc := range testCases { t.Run(tc.Name, func(t *testing.T) { - resp := GetRequestWithHeaders(t, tc.Url, nil, tc.ExpCode) + if tc.ExpCodeGTE > 0 && tc.ExpCode > 0 { + require.Fail(t, "only one of ExpCode or ExpCodeGTE should be set") + } + + var resp []byte + if tc.ExpCodeGTE > 0 { + resp = GetRequestWithHeadersGreaterThanOrEqual(t, tc.Url, nil, tc.ExpCodeGTE) + } else { + resp = GetRequestWithHeaders(t, tc.Url, nil, tc.ExpCode) + } require.JSONEq(t, tc.ExpOut, string(resp)) }) } } -// TestRestQueryIgnoreNumbers runs given rest testcases by making requests and +// RunRestQueriesIgnoreNumbers runs given rest testcases by making requests and // checking response with expected output ignoring number values // This method is used when number values in response are non-deterministic -func TestRestQueryIgnoreNumbers(t *testing.T, testCases ...RestTestCase) { +func RunRestQueriesIgnoreNumbers(t *testing.T, testCases ...RestTestCase) { t.Helper() + // regex for standalone quoted numbers (e.g., "-3" or "0.02") + standaloneQuotedNumberRegex := regexp.MustCompile(`"(-?\d+(\.\d+)?)"`) + // regex for numbers in escaped strings (e.g., \"-3\") + escapedNumberRegex := regexp.MustCompile(`\\\"(-?\d+(\.\d+)?)\\\"`) + // regex for unquoted numbers (e.g., 2, -1, 0.02,) + unquotedNumberRegex := regexp.MustCompile(`\b-?\d+(\.\d+)?\b,`) + + replaceNumber := func(input string) string { + // handle numbers in escaped strings + result := escapedNumberRegex.ReplaceAllStringFunc(input, func(match string) string { + // replace with escaped "NUMBER" + return `\"NUMBER\"` + }) + + // handle standalone quoted numbers + result = standaloneQuotedNumberRegex.ReplaceAllStringFunc(result, func(match string) string { + // replace with "NUMBER" (quotes preserved) + return `"NUMBER"` + }) + + // handle unquoted numbers + result = unquotedNumberRegex.ReplaceAllStringFunc(result, func(match string) string { + // replace with "NUMBER" (add quotes to ensure json validity) + return `"NUMBER",` + }) + + return result + } + for _, tc := range testCases { t.Run(tc.Name, func(t *testing.T) { - resp, err := testutil.GetRequest(tc.Url) - require.NoError(t, err) - - // regular expression pattern to match any numeric value in the JSON - numberRegexPattern := `"\d+(\.\d+)?"` + if tc.ExpCodeGTE > 0 && tc.ExpCode > 0 { + require.Fail(t, "only one of ExpCode or ExpCodeGTE should be set") + } - // compile the regex - r, err := regexp.Compile(numberRegexPattern) - require.NoError(t, err) + var resp []byte + if tc.ExpCodeGTE > 0 { + resp = GetRequestWithHeadersGreaterThanOrEqual(t, tc.Url, nil, tc.ExpCodeGTE) + } else { + resp = GetRequestWithHeaders(t, tc.Url, nil, tc.ExpCode) + } - // replace all numeric values in the above JSONs with `NUMBER` text - expectedJSON := r.ReplaceAllString(tc.ExpOut, `"NUMBER"`) - actualJSON := r.ReplaceAllString(string(resp), `"NUMBER"`) + expectedJSON := replaceNumber(tc.ExpOut) + actualJSON := replaceNumber(string(resp)) // compare two jsons require.JSONEq(t, expectedJSON, actualJSON) @@ -85,3 +122,25 @@ func GetRequestWithHeaders(t *testing.T, url string, headers map[string]string, return body } + +func GetRequestWithHeadersGreaterThanOrEqual(t *testing.T, url string, headers map[string]string, expCode int) []byte { + t.Helper() + req, err := http.NewRequest("GET", url, nil) + require.NoError(t, err) + + for key, value := range headers { + req.Header.Set(key, value) + } + + httpClient := &http.Client{} + res, err := httpClient.Do(req) + require.NoError(t, err) + defer func() { + _ = res.Body.Close() + }() + body, err := io.ReadAll(res.Body) + require.NoError(t, err) + require.GreaterOrEqual(t, res.StatusCode, expCode, "status code should be greater or equal to %d, got: %d, %s", expCode, res.StatusCode, body) + + return body +} diff --git a/tests/systemtests/authz_test.go b/tests/systemtests/authz_test.go index 902b6631e8f8..9e6f117bb905 100644 --- a/tests/systemtests/authz_test.go +++ b/tests/systemtests/authz_test.go @@ -682,78 +682,78 @@ func TestAuthzGRPCQueries(t *testing.T) { grantTestCases := []systest.RestTestCase{ { - "invalid granter address", - fmt.Sprintf(grantURL, "invalid_granter", grantee1Addr, msgSendTypeURL), - http.StatusInternalServerError, - bech32FailOutput, + Name: "invalid granter address", + Url: fmt.Sprintf(grantURL, "invalid_granter", grantee1Addr, msgSendTypeURL), + ExpCodeGTE: http.StatusBadRequest, + ExpOut: bech32FailOutput, }, { - "invalid grantee address", - fmt.Sprintf(grantURL, granterAddr, "invalid_grantee", msgSendTypeURL), - http.StatusInternalServerError, - bech32FailOutput, + Name: "invalid grantee address", + Url: fmt.Sprintf(grantURL, granterAddr, "invalid_grantee", msgSendTypeURL), + ExpCodeGTE: http.StatusBadRequest, + ExpOut: bech32FailOutput, }, { - "with empty granter", - fmt.Sprintf(grantURL, "", grantee1Addr, msgSendTypeURL), - http.StatusInternalServerError, - emptyStrOutput, + Name: "with empty granter", + Url: fmt.Sprintf(grantURL, "", grantee1Addr, msgSendTypeURL), + ExpCodeGTE: http.StatusBadRequest, + ExpOut: emptyStrOutput, }, { - "with empty grantee", - fmt.Sprintf(grantURL, granterAddr, "", msgSendTypeURL), - http.StatusInternalServerError, - emptyStrOutput, + Name: "with empty grantee", + Url: fmt.Sprintf(grantURL, granterAddr, "", msgSendTypeURL), + ExpCodeGTE: http.StatusBadRequest, + ExpOut: emptyStrOutput, }, { - "invalid msg-type", - fmt.Sprintf(grantURL, granterAddr, grantee1Addr, "invalidMsg"), - http.StatusInternalServerError, - invalidMsgTypeOutput, + Name: "invalid msg-type", + Url: fmt.Sprintf(grantURL, granterAddr, grantee1Addr, "invalidMsg"), + ExpCode: http.StatusInternalServerError, + ExpOut: invalidMsgTypeOutput, }, { - "valid grant query", - fmt.Sprintf(grantURL, granterAddr, grantee1Addr, msgSendTypeURL), - http.StatusOK, - expGrantOutput, + Name: "valid grant query", + Url: fmt.Sprintf(grantURL, granterAddr, grantee1Addr, msgSendTypeURL), + ExpCode: http.StatusOK, + ExpOut: expGrantOutput, }, } - systest.RunRestQueries(t, grantTestCases...) + systest.RunRestQueriesIgnoreNumbers(t, grantTestCases...) // test query grants grpc endpoint grantsURL := baseurl + "/cosmos/authz/v1beta1/grants?granter=%s&grantee=%s" grantsTestCases := []systest.RestTestCase{ { - "expect single grant", - fmt.Sprintf(grantsURL, granterAddr, grantee1Addr), - http.StatusOK, - fmt.Sprintf(`{"grants":[{%s}],"pagination":{"next_key":null,"total":"1"}}`, grant1), + Name: "expect single grant", + Url: fmt.Sprintf(grantsURL, granterAddr, grantee1Addr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"grants":[{%s}],"pagination":{"next_key":null,"total":"1"}}`, grant1), }, { - "expect two grants", - fmt.Sprintf(grantsURL, granterAddr, grantee2Addr), - http.StatusOK, - fmt.Sprintf(`{"grants":[{%s},{%s}],"pagination":{"next_key":null,"total":"2"}}`, grant2, grant3), + Name: "expect two grants", + Url: fmt.Sprintf(grantsURL, granterAddr, grantee2Addr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"grants":[{%s},{%s}],"pagination":{"next_key":null,"total":"2"}}`, grant2, grant3), }, { - "expect single grant with pagination", - fmt.Sprintf(grantsURL+"&pagination.limit=1", granterAddr, grantee2Addr), - http.StatusOK, - fmt.Sprintf(`{"grants":[{%s}],"pagination":{"next_key":"L2Nvc21vcy5nb3YudjEuTXNnVm90ZQ==","total":"0"}}`, grant2), + Name: "expect single grant with pagination", + Url: fmt.Sprintf(grantsURL+"&pagination.limit=1", granterAddr, grantee2Addr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"grants":[{%s}],"pagination":{"next_key":"L2Nvc21vcy5nb3YudjEuTXNnVm90ZQ==","total":"0"}}`, grant2), }, { - "expect single grant with pagination limit and offset", - fmt.Sprintf(grantsURL+"&pagination.limit=1&pagination.offset=1", granterAddr, grantee2Addr), - http.StatusOK, - fmt.Sprintf(`{"grants":[{%s}],"pagination":{"next_key":null,"total":"0"}}`, grant3), + Name: "expect single grant with pagination limit and offset", + Url: fmt.Sprintf(grantsURL+"&pagination.limit=1&pagination.offset=1", granterAddr, grantee2Addr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"grants":[{%s}],"pagination":{"next_key":null,"total":"0"}}`, grant3), }, { - "expect two grants with pagination", - fmt.Sprintf(grantsURL+"&pagination.limit=2", granterAddr, grantee2Addr), - http.StatusOK, - fmt.Sprintf(`{"grants":[{%s},{%s}],"pagination":{"next_key":null,"total":"0"}}`, grant2, grant3), + Name: "expect two grants with pagination", + Url: fmt.Sprintf(grantsURL+"&pagination.limit=2", granterAddr, grantee2Addr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"grants":[{%s},{%s}],"pagination":{"next_key":null,"total":"0"}}`, grant2, grant3), }, } @@ -768,26 +768,26 @@ func TestAuthzGRPCQueries(t *testing.T) { granterTestCases := []systest.RestTestCase{ { - "invalid granter account address", - fmt.Sprintf(grantsByGranterURL, "invalid address"), - http.StatusInternalServerError, - decodingFailedOutput, + Name: "invalid granter account address", + Url: fmt.Sprintf(grantsByGranterURL, "invalid address"), + ExpCodeGTE: http.StatusBadRequest, + ExpOut: decodingFailedOutput, }, { - "no authorizations found from granter", - fmt.Sprintf(grantsByGranterURL, grantee2Addr), - http.StatusOK, - noAuthorizationsOutput, + Name: "no authorizations found from granter", + Url: fmt.Sprintf(grantsByGranterURL, grantee2Addr), + ExpCode: http.StatusOK, + ExpOut: noAuthorizationsOutput, }, { - "valid granter query", - fmt.Sprintf(grantsByGranterURL, grantee1Addr), - http.StatusOK, - granterQueryOutput, + Name: "valid granter query", + Url: fmt.Sprintf(grantsByGranterURL, grantee1Addr), + ExpCode: http.StatusOK, + ExpOut: granterQueryOutput, }, } - systest.RunRestQueries(t, granterTestCases...) + systest.RunRestQueriesIgnoreNumbers(t, granterTestCases...) // test query grants by grantee grpc endpoint grantsByGranteeURL := baseurl + "/cosmos/authz/v1beta1/grants/grantee/%s" @@ -795,26 +795,26 @@ func TestAuthzGRPCQueries(t *testing.T) { granteeTestCases := []systest.RestTestCase{ { - "invalid grantee account address", - fmt.Sprintf(grantsByGranteeURL, "invalid address"), - http.StatusInternalServerError, - decodingFailedOutput, + Name: "invalid grantee account address", + Url: fmt.Sprintf(grantsByGranteeURL, "invalid address"), + ExpCodeGTE: http.StatusBadRequest, + ExpOut: decodingFailedOutput, }, { - "no authorizations found from grantee", - fmt.Sprintf(grantsByGranteeURL, granterAddr), - http.StatusOK, - noAuthorizationsOutput, + Name: "no authorizations found from grantee", + Url: fmt.Sprintf(grantsByGranteeURL, granterAddr), + ExpCode: http.StatusOK, + ExpOut: noAuthorizationsOutput, }, { - "valid grantee query", - fmt.Sprintf(grantsByGranteeURL, grantee1Addr), - http.StatusOK, - grantee1GrantsOutput, + Name: "valid grantee query", + Url: fmt.Sprintf(grantsByGranteeURL, grantee1Addr), + ExpCode: http.StatusOK, + ExpOut: grantee1GrantsOutput, }, } - systest.RunRestQueries(t, granteeTestCases...) + systest.RunRestQueriesIgnoreNumbers(t, granteeTestCases...) } func setupChain(t *testing.T) (*systest.CLIWrapper, string, string) { diff --git a/tests/systemtests/bank_test.go b/tests/systemtests/bank_test.go index 1171e1466ab8..c5c45bca6d63 100644 --- a/tests/systemtests/bank_test.go +++ b/tests/systemtests/bank_test.go @@ -265,7 +265,7 @@ func TestBankGRPCQueries(t *testing.T) { map[string]string{ blockHeightHeader: fmt.Sprintf("%d", blockHeight+5), }, - http.StatusInternalServerError, + http.StatusBadRequest, "invalid height", }, { @@ -280,7 +280,7 @@ func TestBankGRPCQueries(t *testing.T) { for _, tc := range supplyTestCases { t.Run(tc.name, func(t *testing.T) { - resp := systest.GetRequestWithHeaders(t, tc.url, tc.headers, tc.expHttpCode) + resp := systest.GetRequestWithHeadersGreaterThanOrEqual(t, tc.url, tc.headers, tc.expHttpCode) require.Contains(t, string(resp), tc.expOut) }) } @@ -289,22 +289,22 @@ func TestBankGRPCQueries(t *testing.T) { denomMetadataUrl := baseurl + "/cosmos/bank/v1beta1/denoms_metadata" dmTestCases := []systest.RestTestCase{ { - "test GRPC client metadata", - denomMetadataUrl, - http.StatusOK, - fmt.Sprintf(`{"metadatas":%s,"pagination":{"next_key":null,"total":"2"}}`, bankDenomMetadata), + Name: "test GRPC client metadata", + Url: denomMetadataUrl, + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"metadatas":%s,"pagination":{"next_key":null,"total":"2"}}`, bankDenomMetadata), }, { - "test GRPC client metadata of a specific denom", - denomMetadataUrl + "/uatom", - http.StatusOK, - fmt.Sprintf(`{"metadata":%s}`, atomDenomMetadata), + Name: "test GRPC client metadata of a specific denom", + Url: denomMetadataUrl + "/uatom", + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"metadata":%s}`, atomDenomMetadata), }, { - "test GRPC client metadata of a bogus denom", - denomMetadataUrl + "/foobar", - http.StatusNotFound, - `{"code":5, "message":"client metadata for denom foobar", "details":[]}`, + Name: "test GRPC client metadata of a bogus denom", + Url: denomMetadataUrl + "/foobar", + ExpCode: http.StatusNotFound, + ExpOut: `{"code":5, "message":"client metadata for denom foobar", "details":[]}`, }, } @@ -316,22 +316,22 @@ func TestBankGRPCQueries(t *testing.T) { balanceTestCases := []systest.RestTestCase{ { - "test GRPC total account balance", - balanceUrl + account1Addr, - http.StatusOK, - allBalancesOutput, + Name: "test GRPC total account balance", + Url: balanceUrl + account1Addr, + ExpCode: http.StatusOK, + ExpOut: allBalancesOutput, }, { - "test GRPC account balance of a specific denom", - fmt.Sprintf("%s%s/by_denom?denom=%s", balanceUrl, account1Addr, newDenom), - http.StatusOK, - fmt.Sprintf(`{"balance":%s}`, specificDenomOutput), + Name: "test GRPC account balance of a specific denom", + Url: fmt.Sprintf("%s%s/by_denom?denom=%s", balanceUrl, account1Addr, newDenom), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"balance":%s}`, specificDenomOutput), }, { - "test GRPC account balance of a bogus denom", - fmt.Sprintf("%s%s/by_denom?denom=foobar", balanceUrl, account1Addr), - http.StatusOK, - fmt.Sprintf(`{"balance":%s}`, bogusDenomOutput), + Name: "test GRPC account balance of a bogus denom", + Url: fmt.Sprintf("%s%s/by_denom?denom=foobar", balanceUrl, account1Addr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"balance":%s}`, bogusDenomOutput), }, } diff --git a/tests/systemtests/distribution_test.go b/tests/systemtests/distribution_test.go index 7e40589bf5da..495fd5807e81 100644 --- a/tests/systemtests/distribution_test.go +++ b/tests/systemtests/distribution_test.go @@ -129,10 +129,10 @@ func TestDistrValidatorGRPCQueries(t *testing.T) { paramsTestCases := []systest.RestTestCase{ { - "gRPC request params", - paramsURL, - http.StatusOK, - `{"params":{"community_tax":"0.020000000000000000","base_proposer_reward":"0.000000000000000000","bonus_proposer_reward":"0.000000000000000000","withdraw_addr_enabled":true}}`, + Name: "gRPC request params", + Url: paramsURL, + ExpCode: http.StatusOK, + ExpOut: `{"params":{"community_tax":"0.020000000000000000","base_proposer_reward":"0.000000000000000000","bonus_proposer_reward":"0.000000000000000000","withdraw_addr_enabled":true}}`, }, } systest.RunRestQueries(t, paramsTestCases...) @@ -143,39 +143,39 @@ func TestDistrValidatorGRPCQueries(t *testing.T) { validatorsTestCases := []systest.RestTestCase{ { - "gRPC request validator with valid validator address", - fmt.Sprintf(validatorsURL, valOperAddr), - http.StatusOK, - validatorsOutput, + Name: "gRPC request validator with valid validator address", + Url: fmt.Sprintf(validatorsURL, valOperAddr), + ExpCode: http.StatusOK, + ExpOut: validatorsOutput, }, } - systest.TestRestQueryIgnoreNumbers(t, validatorsTestCases...) + systest.RunRestQueriesIgnoreNumbers(t, validatorsTestCases...) // test outstanding rewards grpc endpoint outstandingRewardsURL := baseurl + `/cosmos/distribution/v1beta1/validators/%s/outstanding_rewards` rewardsTestCases := []systest.RestTestCase{ { - "gRPC request outstanding rewards with valid validator address", - fmt.Sprintf(outstandingRewardsURL, valOperAddr), - http.StatusOK, - fmt.Sprintf(`{"rewards":{"rewards":[%s]}}`, expectedAmountOutput), + Name: "gRPC request outstanding rewards with valid validator address", + Url: fmt.Sprintf(outstandingRewardsURL, valOperAddr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"rewards":{"rewards":[%s]}}`, expectedAmountOutput), }, } - systest.TestRestQueryIgnoreNumbers(t, rewardsTestCases...) + systest.RunRestQueriesIgnoreNumbers(t, rewardsTestCases...) // test validator commission grpc endpoint commissionURL := baseurl + `/cosmos/distribution/v1beta1/validators/%s/commission` commissionTestCases := []systest.RestTestCase{ { - "gRPC request commission with valid validator address", - fmt.Sprintf(commissionURL, valOperAddr), - http.StatusOK, - fmt.Sprintf(`{"commission":{"commission":[%s]}}`, expectedAmountOutput), + Name: "gRPC request commission with valid validator address", + Url: fmt.Sprintf(commissionURL, valOperAddr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"commission":{"commission":[%s]}}`, expectedAmountOutput), }, } - systest.TestRestQueryIgnoreNumbers(t, commissionTestCases...) + systest.RunRestQueriesIgnoreNumbers(t, commissionTestCases...) // test validator slashes grpc endpoint slashURL := baseurl + `/cosmos/distribution/v1beta1/validators/%s/slashes` @@ -183,25 +183,25 @@ func TestDistrValidatorGRPCQueries(t *testing.T) { slashTestCases := []systest.RestTestCase{ { - "invalid start height", - fmt.Sprintf(slashURL+`?starting_height=%s&ending_height=%s`, valOperAddr, "-3", "3"), - http.StatusBadRequest, - invalidHeightOutput, + Name: "invalid start height", + Url: fmt.Sprintf(slashURL+`?starting_height=%s&ending_height=%s`, valOperAddr, "-3", "3"), + ExpCode: http.StatusBadRequest, + ExpOut: invalidHeightOutput, }, { - "invalid end height", - fmt.Sprintf(slashURL+`?starting_height=%s&ending_height=%s`, valOperAddr, "1", "-3"), - http.StatusBadRequest, - invalidHeightOutput, + Name: "invalid end height", + Url: fmt.Sprintf(slashURL+`?starting_height=%s&ending_height=%s`, valOperAddr, "1", "-3"), + ExpCode: http.StatusBadRequest, + ExpOut: invalidHeightOutput, }, { - "valid request get slashes", - fmt.Sprintf(slashURL+`?starting_height=%s&ending_height=%s`, valOperAddr, "1", "3"), - http.StatusOK, - `{"slashes":[],"pagination":{"next_key":null,"total":"0"}}`, + Name: "valid request get slashes", + Url: fmt.Sprintf(slashURL+`?starting_height=%s&ending_height=%s`, valOperAddr, "1", "3"), + ExpCode: http.StatusOK, + ExpOut: `{"slashes":[],"pagination":{"next_key":null,"total":"0"}}`, }, } - systest.RunRestQueries(t, slashTestCases...) + systest.RunRestQueriesIgnoreNumbers(t, slashTestCases...) } func TestDistrDelegatorGRPCQueries(t *testing.T) { @@ -257,28 +257,28 @@ func TestDistrDelegatorGRPCQueries(t *testing.T) { delegatorRewardsTestCases := []systest.RestTestCase{ { - "valid rewards request with valid delegator address", - fmt.Sprintf(delegatorRewardsURL, delAddr), - http.StatusOK, - rewardsOutput, + Name: "valid rewards request with valid delegator address", + Url: fmt.Sprintf(delegatorRewardsURL, delAddr), + ExpCode: http.StatusOK, + ExpOut: rewardsOutput, }, { - "valid request(specific validator rewards)", - fmt.Sprintf(delegatorRewardsURL+`/%s`, delAddr, valOperAddr), - http.StatusOK, - fmt.Sprintf(`{"rewards":[%s]}`, expectedAmountOutput), + Name: "valid request(specific validator rewards)", + Url: fmt.Sprintf(delegatorRewardsURL+`/%s`, delAddr, valOperAddr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"rewards":[%s]}`, expectedAmountOutput), }, } - systest.TestRestQueryIgnoreNumbers(t, delegatorRewardsTestCases...) + systest.RunRestQueriesIgnoreNumbers(t, delegatorRewardsTestCases...) // test delegator validators grpc endpoint delegatorValsURL := baseurl + `/cosmos/distribution/v1beta1/delegators/%s/validators` valsTestCases := []systest.RestTestCase{ { - "gRPC request delegator validators with valid delegator address", - fmt.Sprintf(delegatorValsURL, delAddr), - http.StatusOK, - fmt.Sprintf(`{"validators":["%s"]}`, valOperAddr), + Name: "gRPC request delegator validators with valid delegator address", + Url: fmt.Sprintf(delegatorValsURL, delAddr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"validators":["%s"]}`, valOperAddr), }, } systest.RunRestQueries(t, valsTestCases...) @@ -287,10 +287,10 @@ func TestDistrDelegatorGRPCQueries(t *testing.T) { withdrawAddrURL := baseurl + `/cosmos/distribution/v1beta1/delegators/%s/withdraw_address` withdrawAddrTestCases := []systest.RestTestCase{ { - "gRPC request withdraw address with valid delegator address", - fmt.Sprintf(withdrawAddrURL, delAddr), - http.StatusOK, - fmt.Sprintf(`{"withdraw_address":"%s"}`, delAddr), + Name: "gRPC request withdraw address with valid delegator address", + Url: fmt.Sprintf(withdrawAddrURL, delAddr), + ExpCode: http.StatusOK, + ExpOut: fmt.Sprintf(`{"withdraw_address":"%s"}`, delAddr), }, } systest.RunRestQueries(t, withdrawAddrTestCases...) diff --git a/tests/systemtests/go.mod b/tests/systemtests/go.mod index 558c01f2699a..0305bff6e11e 100644 --- a/tests/systemtests/go.mod +++ b/tests/systemtests/go.mod @@ -4,7 +4,7 @@ go 1.23 require ( cosmossdk.io/math v1.4.0 - cosmossdk.io/systemtests v1.0.0-rc.1.0.20241128092904-215d5c16f64d + cosmossdk.io/systemtests v1.0.0-rc.2.0.20241205143753-9e94ea87f6e4 github.com/cosmos/cosmos-sdk v0.50.6 ) diff --git a/tests/systemtests/go.sum b/tests/systemtests/go.sum index b8ade34dcea5..8c0abace40bd 100644 --- a/tests/systemtests/go.sum +++ b/tests/systemtests/go.sum @@ -16,8 +16,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= -cosmossdk.io/systemtests v1.0.0-rc.1.0.20241128092904-215d5c16f64d h1:zZUt9DD+3qvwnpQHPwYJ5+NEUU4wMFeNpPBegWMfbn8= -cosmossdk.io/systemtests v1.0.0-rc.1.0.20241128092904-215d5c16f64d/go.mod h1:ME2eFY/+2CjaFrPOMW8paPXupMzYaDMTKQ1sRvi71hU= +cosmossdk.io/systemtests v1.0.0-rc.2.0.20241205143753-9e94ea87f6e4 h1:gt0rrxBW4x9KM3+ES8Gy5BZbKIHI3AspYEuvWZO6fgU= +cosmossdk.io/systemtests v1.0.0-rc.2.0.20241205143753-9e94ea87f6e4/go.mod h1:B3RY1tY/iwLjQ9MUTz+GsiXV9gEdS8mfUvSQtWUwaAo= cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894 h1:kHEvzVqpNv/9pnaEPBsgE/FMc+cVmWjSsInRufkZkpQ= cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894/go.mod h1:Tb6/tpONmtL5qFdOMdv1pdvrtJNxcazZBoz04HB71ss= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= From 9c40d0f6d64fa653ec5c4eb5ce51445a83ead41a Mon Sep 17 00:00:00 2001 From: son trinh Date: Fri, 6 Dec 2024 20:02:26 +0700 Subject: [PATCH 19/62] docs(x/accounts/defaults/lockup): Add slash document for lockup account (#22783) --- x/accounts/defaults/lockup/README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/x/accounts/defaults/lockup/README.md b/x/accounts/defaults/lockup/README.md index 8525b18cd5ef..879d4a9a7e1d 100644 --- a/x/accounts/defaults/lockup/README.md +++ b/x/accounts/defaults/lockup/README.md @@ -8,6 +8,7 @@ * [PeriodicLockup](#periodiclockup) * [PermanentLocked](#permanentlocked) * [Genesis Initialization](#genesis-initialization) +* [In An Event Of Slashing](#in-an-event-of-slashing) * [Examples](#examples) * [Simple](#simple) * [Slashing](#slashing) @@ -108,6 +109,29 @@ type PermanentLockingAccount struct { +## In An Event Of Slashing + +As defined, base lockup store `DelegatedLocking` by amount. In an event of a validator that the lockup account delegate to is slash which affect the actual delegation amount, this will leave the `DelegatedLocking` have an excess amount even if user undelegate all of the +account delegated amount. This excess amount would affect the spendable amount, further details are as below: + +The spendable amount is calculated as: +`spendableAmount` = `balance` - `notBondedLockedAmount` +where `notBondedLockedAmount` = `lockedAmount` - `Min(lockedAmount, delegatedLockedAmount)` + +As seen in the formula `notBondedLockedAmout` can only be 0 or a positive value when `DelegatedLockedAmount` < `LockedAmount`. Let call `NewDelegatedLockedAmount` is the `delegatedLockedAmount` when applying N slash + +1. Case 1: Originally `DelegatedLockedAmount` > `lockedAmount` but when applying the slash amount the `NewDelegatedLockedAmount` < `lockedAmount` then + * When not applying slash `notBondedLockedAmout` will be 0 + * When apply slash `notBondedLockedAmout` will be `lockedAmount` - `NewDelegatedLockedAmount` = a positive amount +2. Case 2: where originally `DelegatedLockedAmount` < `lockedAmount` when applying the slash amount the `NewDelegatedLockedAmount` < `lockedAmount` then + * When not applying slash `lockedAmount` - `DelegatedLockedAmount` + * When apply slash `notBondedLockedAmout` will be `lockedAmount` - `NewDelegatedLockedAmount` = `lockedAmount` - `(DelegatedLockedAmount - N)` = `lockedAmount` - `DelegatedLockedAmount` + N +3. Case 3: where originally `DelegatedLockedAmount` > `lockedAmount` when applying the slash amount still the `NewDelegatedLockedAmount` > `lockedAmount` then `notBondedLockedAmout` will be 0 applying slash or not + +In cases 1 and 2, `notBondedLockedAmount` decreases when not applying the slash, resulting in a higher `spendableAmount`. + +Due to the nature of x/accounts, as other modules cannot assume certain account types exist so the handling of slashing event must be done internally within x/accounts's accounts. For lockup accounts, this would make the logic overcomplicated. Since these effects are only an edge case that affect a small number of users, so here we would accept the trade off for a simpler design. This design decision aligns with the legacy vesting account implementation. + ## Examples ### Simple @@ -206,7 +230,7 @@ It can still, however, delegate. BC = 2.5 + 5 = 7.5 ``` - Notice how we have an excess amount of `DV`. + Notice how we have an excess amount of `DV`. This is explained in [In An Event Of Slashing](#in-an-event-of-slashing) ### Periodic Lockup From 467dc245bcf5d52d9989ea6925cbb3a523ce1673 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 6 Dec 2024 14:57:12 +0100 Subject: [PATCH 20/62] test(systemtests): fix mint v2 tests (#22789) --- tests/systemtests/mint_test.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tests/systemtests/mint_test.go b/tests/systemtests/mint_test.go index d1c43bd9d863..e6712c4af327 100644 --- a/tests/systemtests/mint_test.go +++ b/tests/systemtests/mint_test.go @@ -40,13 +40,6 @@ func TestMintQueries(t *testing.T) { baseurl := systest.Sut.APIAddress() blockHeightHeader := "x-cosmos-block-height" queryAtHeight := "1" - - // TODO: check why difference in values when querying with height between v1 and v2 - // ref: https://github.com/cosmos/cosmos-sdk/issues/22302 - if systest.IsV2() { - queryAtHeight = "2" - } - paramsResp := `{"params":{"mint_denom":"stake","inflation_rate_change":"0.130000000000000000","inflation_max":"1.000000000000000000","inflation_min":"0.000000000000000000","goal_bonded":"0.670000000000000000","blocks_per_year":"6311520","max_supply":"0"}}` inflationResp := `{"inflation":"1.000000000000000000"}` annualProvisionsResp := `{"annual_provisions":"2000000000.000000000000000000"}` From dda47b5e0e8b503d98318de3d90f98210b055260 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 6 Dec 2024 15:16:59 +0100 Subject: [PATCH 21/62] chore: clean-up main (#22787) --- .github/workflows/build.yml | 4 +- .github/workflows/test.yml | 5 - math/dec_test.go | 2 +- schema/indexer/start.go | 2 +- scripts/build/build.mk | 4 - scripts/go-lint-all.bash | 5 - server/v2/cometbft/abci_test.go | 21 +- simapp/CHANGELOG.md | 2 +- simapp/app.go | 890 ------------------ simapp/app_di.go | 2 - simapp/go.mod | 4 +- simapp/simd/cmd/root.go | 137 --- simapp/simd/cmd/root_di.go | 2 - tests/integration/v2/app.go | 2 + .../v2/evidence/infraction_test.go | 21 +- 15 files changed, 20 insertions(+), 1083 deletions(-) delete mode 100644 simapp/app.go delete mode 100644 simapp/simd/cmd/root.go diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e6c6f4ee640c..d2a99a8f0523 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -50,8 +50,8 @@ jobs: ################### - name: Build run: GOARCH=${{ matrix.go-arch }} make build - - name: Build Legacy - run: GOARCH=${{ matrix.go-arch }} COSMOS_BUILD_OPTIONS=legacy make build + - name: Build v2 + run: GOARCH=${{ matrix.go-arch }} COSMOS_BUILD_OPTIONS=v2 make build - name: Build with rocksdb backend if: matrix.go-arch == 'amd64' run: GOARCH=${{ matrix.go-arch }} COSMOS_BUILD_OPTIONS="rocksdb" make build diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4990e889c330..19f27d25d952 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -526,11 +526,6 @@ jobs: run: | cd simapp go test -mod=readonly -timeout 30m -tags='norace ledger test_ledger_mock' ./... - - name: tests simapp v1 - if: env.GIT_DIFF - run: | - cd simapp - go test -mod=readonly -timeout 30m -tags='app_v1 norace ledger test_ledger_mock' ./... test-simapp-v2: runs-on: ubuntu-latest diff --git a/math/dec_test.go b/math/dec_test.go index f5e91572c0d2..0b148032eb1f 100644 --- a/math/dec_test.go +++ b/math/dec_test.go @@ -1282,7 +1282,7 @@ func TestToSdkInt(t *testing.T) { {src: "1E100000", expErr: true}, } for _, tc := range tcs { - t.Run(fmt.Sprintf(tc.src), func(t *testing.T) { + t.Run(fmt.Sprint(tc.src), func(t *testing.T) { a, err := NewDecFromString(tc.src) require.NoError(t, err) b, gotErr := a.SdkIntTrim() diff --git a/schema/indexer/start.go b/schema/indexer/start.go index f675c2916026..66fbdb52a6d3 100644 --- a/schema/indexer/start.go +++ b/schema/indexer/start.go @@ -120,7 +120,7 @@ func StartIndexing(opts IndexingOptions) (IndexingTarget, error) { targetCfg.Config, err = unmarshalIndexerCustomConfig(targetCfg.Config, init.ConfigType) if err != nil { - return IndexingTarget{}, fmt.Errorf("failed to unmarshal indexer config for target %q: %v", targetName, err) + return IndexingTarget{}, fmt.Errorf("failed to unmarshal indexer config for target %q: %v", targetName, err) //nolint:errorlint // we support go 1.12, so no error wrapping } initRes, err := init.InitFunc(InitParams{ diff --git a/scripts/build/build.mk b/scripts/build/build.mk index 4727b05e98a3..581ee1dbe06d 100644 --- a/scripts/build/build.mk +++ b/scripts/build/build.mk @@ -48,10 +48,6 @@ ifeq (secp,$(findstring secp,$(COSMOS_BUILD_OPTIONS))) build_tags += libsecp256k1_sdk endif -ifeq (legacy,$(findstring legacy,$(COSMOS_BUILD_OPTIONS))) - build_tags += app_v1 -endif - ifeq (v2,$(findstring v2,$(COSMOS_BUILD_OPTIONS))) SIMAPP = simapp/v2 APPNAME = simdv2 diff --git a/scripts/go-lint-all.bash b/scripts/go-lint-all.bash index 565aa6a41649..f643cc56aa46 100755 --- a/scripts/go-lint-all.bash +++ b/scripts/go-lint-all.bash @@ -21,11 +21,6 @@ lint_module() { fi echo "linting $(grep "^module" go.mod) [$(date -Iseconds -u)]" golangci-lint run ./... -c "${REPO_ROOT}/.golangci.yml" "$@" --build-tags=${LINT_TAGS} - - # always lint simapp with app_v1 build tag, otherwise it never gets linted - if [[ "$(grep "^module" go.mod)" == "module cosmossdk.io/simapp" ]]; then - golangci-lint run ./... -c "${REPO_ROOT}/.golangci.yml" "$@" --build-tags=app_v1 - fi } export -f lint_module diff --git a/server/v2/cometbft/abci_test.go b/server/v2/cometbft/abci_test.go index cfc649884660..17ff917c6511 100644 --- a/server/v2/cometbft/abci_test.go +++ b/server/v2/cometbft/abci_test.go @@ -15,7 +15,6 @@ import ( abci "github.com/cometbft/cometbft/abci/types" abciproto "github.com/cometbft/cometbft/api/cometbft/abci/v1" v1 "github.com/cometbft/cometbft/api/cometbft/types/v1" - "github.com/cosmos/gogoproto/proto" gogoproto "github.com/cosmos/gogoproto/proto" gogotypes "github.com/cosmos/gogoproto/types" "github.com/stretchr/testify/require" @@ -65,11 +64,11 @@ var ( func getQueryRouterBuilder[T any, PT interface { *T - proto.Message + gogoproto.Message }, U any, UT interface { *U - proto.Message + gogoproto.Message }]( t *testing.T, handler func(ctx context.Context, msg PT) (UT, error), @@ -77,7 +76,7 @@ func getQueryRouterBuilder[T any, PT interface { t.Helper() queryRouterBuilder := stf.NewMsgRouterBuilder() err := queryRouterBuilder.RegisterHandler( - proto.MessageName(PT(new(T))), + gogoproto.MessageName(PT(new(T))), func(ctx context.Context, msg transaction.Msg) (msgResp transaction.Msg, err error) { typedReq := msg.(PT) typedResp, err := handler(ctx, typedReq) @@ -107,7 +106,7 @@ func getMsgRouterBuilder[T any, PT interface { t.Helper() msgRouterBuilder := stf.NewMsgRouterBuilder() err := msgRouterBuilder.RegisterHandler( - proto.MessageName(PT(new(T))), + gogoproto.MessageName(PT(new(T))), func(ctx context.Context, msg transaction.Msg) (msgResp transaction.Msg, err error) { typedReq := msg.(PT) typedResp, err := handler(ctx, typedReq) @@ -821,18 +820,18 @@ func setUpConsensus(t *testing.T, gasLimit uint64, mempool mempool.Mempool[mock. return typedResp, nil } - queryRouterBuilder.RegisterHandler( - proto.MessageName(&testdata.SayHelloRequest{}), + _ = queryRouterBuilder.RegisterHandler( + gogoproto.MessageName(&testdata.SayHelloRequest{}), helloFooHandler, ) - queryHandler[proto.MessageName(&testdata.SayHelloRequest{})] = appmodulev2.Handler{ + queryHandler[gogoproto.MessageName(&testdata.SayHelloRequest{})] = appmodulev2.Handler{ Func: helloFooHandler, MakeMsg: func() transaction.Msg { - return reflect.New(gogoproto.MessageType(proto.MessageName(&testdata.SayHelloRequest{})).Elem()).Interface().(transaction.Msg) + return reflect.New(gogoproto.MessageType(gogoproto.MessageName(&testdata.SayHelloRequest{})).Elem()).Interface().(transaction.Msg) }, MakeMsgResp: func() transaction.Msg { - return reflect.New(gogoproto.MessageType(proto.MessageName(&testdata.SayHelloResponse{})).Elem()).Interface().(transaction.Msg) + return reflect.New(gogoproto.MessageType(gogoproto.MessageName(&testdata.SayHelloResponse{})).Elem()).Interface().(transaction.Msg) }, } @@ -895,7 +894,7 @@ func setUpConsensus(t *testing.T, gasLimit uint64, mempool mempool.Mempool[mock. cfg: Config{AppTomlConfig: DefaultAppTomlConfig()}, txCodec: mock.TxCodec{}, chainID: "test", - getProtoRegistry: sync.OnceValues(proto.MergedRegistry), + getProtoRegistry: sync.OnceValues(gogoproto.MergedRegistry), queryHandlersMap: queryHandler, addrPeerFilter: addrPeerFilter, idPeerFilter: idPeerFilter, diff --git a/simapp/CHANGELOG.md b/simapp/CHANGELOG.md index edc90c22cf89..55861fab0d3d 100644 --- a/simapp/CHANGELOG.md +++ b/simapp/CHANGELOG.md @@ -47,7 +47,7 @@ Always refer to the [UPGRADING.md](https://github.com/cosmos/cosmos-sdk/blob/mai * [#19726](https://github.com/cosmos/cosmos-sdk/pull/19726) Update APIs to match CometBFT v1. * [#21466](https://github.com/cosmos/cosmos-sdk/pull/21466) Allow chains to plug in their own public key types in `base.Account` * [#21508](https://github.com/cosmos/cosmos-sdk/pull/21508) Abstract the way we update the version of the app state in `app.go` using the interface `VersionModifier`. - + ## v0.47 to v0.50 diff --git a/simapp/app.go b/simapp/app.go deleted file mode 100644 index 7417205250c0..000000000000 --- a/simapp/app.go +++ /dev/null @@ -1,890 +0,0 @@ -//go:build app_v1 - -package simapp - -import ( - "encoding/json" - "fmt" - "io" - "maps" - "os" - "path/filepath" - - abci "github.com/cometbft/cometbft/api/cometbft/abci/v1" - cmtcrypto "github.com/cometbft/cometbft/crypto" - cmted25519 "github.com/cometbft/cometbft/crypto/ed25519" - "github.com/cosmos/gogoproto/proto" - "github.com/spf13/cast" - - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" - "cosmossdk.io/client/v2/autocli" - clienthelpers "cosmossdk.io/client/v2/helpers" - coreaddress "cosmossdk.io/core/address" - corestore "cosmossdk.io/core/store" - "cosmossdk.io/log" - storetypes "cosmossdk.io/store/types" - "cosmossdk.io/x/accounts" - "cosmossdk.io/x/accounts/accountstd" - baseaccount "cosmossdk.io/x/accounts/defaults/base" - lockup "cosmossdk.io/x/accounts/defaults/lockup" - "cosmossdk.io/x/accounts/defaults/multisig" - "cosmossdk.io/x/accounts/testing/account_abstraction" - "cosmossdk.io/x/accounts/testing/counter" - "cosmossdk.io/x/authz" - authzkeeper "cosmossdk.io/x/authz/keeper" - authzmodule "cosmossdk.io/x/authz/module" - "cosmossdk.io/x/bank" - bankkeeper "cosmossdk.io/x/bank/keeper" - banktypes "cosmossdk.io/x/bank/types" - "cosmossdk.io/x/circuit" - circuitkeeper "cosmossdk.io/x/circuit/keeper" - circuittypes "cosmossdk.io/x/circuit/types" - "cosmossdk.io/x/consensus" - consensusparamkeeper "cosmossdk.io/x/consensus/keeper" - consensustypes "cosmossdk.io/x/consensus/types" - distr "cosmossdk.io/x/distribution" - distrkeeper "cosmossdk.io/x/distribution/keeper" - distrtypes "cosmossdk.io/x/distribution/types" - "cosmossdk.io/x/epochs" - epochskeeper "cosmossdk.io/x/epochs/keeper" - epochstypes "cosmossdk.io/x/epochs/types" - "cosmossdk.io/x/evidence" - evidencekeeper "cosmossdk.io/x/evidence/keeper" - evidencetypes "cosmossdk.io/x/evidence/types" - "cosmossdk.io/x/feegrant" - feegrantkeeper "cosmossdk.io/x/feegrant/keeper" - feegrantmodule "cosmossdk.io/x/feegrant/module" - "cosmossdk.io/x/gov" - govkeeper "cosmossdk.io/x/gov/keeper" - govtypes "cosmossdk.io/x/gov/types" - govv1 "cosmossdk.io/x/gov/types/v1" - govv1beta1 "cosmossdk.io/x/gov/types/v1beta1" - "cosmossdk.io/x/group" - groupkeeper "cosmossdk.io/x/group/keeper" - groupmodule "cosmossdk.io/x/group/module" - "cosmossdk.io/x/mint" - mintkeeper "cosmossdk.io/x/mint/keeper" - minttypes "cosmossdk.io/x/mint/types" - "cosmossdk.io/x/nft" - nftkeeper "cosmossdk.io/x/nft/keeper" - nftmodule "cosmossdk.io/x/nft/module" - "cosmossdk.io/x/protocolpool" - poolkeeper "cosmossdk.io/x/protocolpool/keeper" - pooltypes "cosmossdk.io/x/protocolpool/types" - "cosmossdk.io/x/slashing" - slashingkeeper "cosmossdk.io/x/slashing/keeper" - slashingtypes "cosmossdk.io/x/slashing/types" - "cosmossdk.io/x/staking" - stakingkeeper "cosmossdk.io/x/staking/keeper" - stakingtypes "cosmossdk.io/x/staking/types" - txdecode "cosmossdk.io/x/tx/decode" - "cosmossdk.io/x/tx/signing" - "cosmossdk.io/x/upgrade" - upgradekeeper "cosmossdk.io/x/upgrade/keeper" - upgradetypes "cosmossdk.io/x/upgrade/types" - - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" - nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/address" - "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/runtime" - runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" - "github.com/cosmos/cosmos-sdk/server" - "github.com/cosmos/cosmos-sdk/server/api" - "github.com/cosmos/cosmos-sdk/server/config" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/std" - testdata_pulsar "github.com/cosmos/cosmos-sdk/testutil/testdata/testpb" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/types/msgservice" - sigtypes "github.com/cosmos/cosmos-sdk/types/tx/signing" - "github.com/cosmos/cosmos-sdk/version" - "github.com/cosmos/cosmos-sdk/x/auth" - "github.com/cosmos/cosmos-sdk/x/auth/ante" - "github.com/cosmos/cosmos-sdk/x/auth/ante/unorderedtx" - authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/cosmos/cosmos-sdk/x/auth/posthandler" - authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" - authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" - txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/auth/vesting" - vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" -) - -const appName = "SimApp" - -var ( - // DefaultNodeHome default home directories for the application daemon - DefaultNodeHome string - - // module account permissions - maccPerms = map[string][]string{ - authtypes.FeeCollectorName: nil, - distrtypes.ModuleName: nil, - pooltypes.ModuleName: nil, - pooltypes.StreamAccount: nil, - pooltypes.ProtocolPoolDistrAccount: nil, - minttypes.ModuleName: {authtypes.Minter}, - stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, - stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - govtypes.ModuleName: {authtypes.Burner}, - nft.ModuleName: nil, - } -) - -var ( - _ runtime.AppI = (*SimApp)(nil) - _ servertypes.Application = (*SimApp)(nil) -) - -// SimApp extends an ABCI application, but with most of its parameters exported. -// They are exported for convenience in creating helper functions, as object -// capabilities aren't needed for testing. -type SimApp struct { - *baseapp.BaseApp - logger log.Logger - legacyAmino *codec.LegacyAmino - appCodec codec.Codec - txConfig client.TxConfig - interfaceRegistry types.InterfaceRegistry - - // keys to access the substores - keys map[string]*storetypes.KVStoreKey - - // keepers - AccountsKeeper accounts.Keeper - AuthKeeper authkeeper.AccountKeeper - BankKeeper bankkeeper.BaseKeeper - StakingKeeper *stakingkeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - MintKeeper *mintkeeper.Keeper - DistrKeeper distrkeeper.Keeper - GovKeeper govkeeper.Keeper - UpgradeKeeper *upgradekeeper.Keeper - AuthzKeeper authzkeeper.Keeper - EvidenceKeeper evidencekeeper.Keeper - FeeGrantKeeper feegrantkeeper.Keeper - GroupKeeper groupkeeper.Keeper - NFTKeeper nftkeeper.Keeper - ConsensusParamsKeeper consensusparamkeeper.Keeper - CircuitKeeper circuitkeeper.Keeper - PoolKeeper poolkeeper.Keeper - EpochsKeeper *epochskeeper.Keeper - - // managers - ModuleManager *module.Manager - UnorderedTxManager *unorderedtx.Manager - sm *module.SimulationManager - - // module configurator - configurator module.Configurator //nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1. -} - -func init() { - var err error - DefaultNodeHome, err = clienthelpers.GetNodeHomeDirectory(".simapp") - if err != nil { - panic(err) - } -} - -// NewSimApp returns a reference to an initialized SimApp. -func NewSimApp( - logger log.Logger, - db corestore.KVStoreWithBatch, - traceStore io.Writer, - loadLatest bool, - appOpts servertypes.AppOptions, - baseAppOptions ...func(*baseapp.BaseApp), -) *SimApp { - interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{ - ProtoFiles: proto.HybridResolver, - SigningOptions: signing.Options{ - AddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), - ValidatorAddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), - }, - }) - appCodec := codec.NewProtoCodec(interfaceRegistry) - legacyAmino := codec.NewLegacyAmino() - signingCtx := interfaceRegistry.SigningContext() - txDecoder, err := txdecode.NewDecoder(txdecode.Options{ - SigningContext: signingCtx, - ProtoCodec: appCodec, - }) - if err != nil { - panic(err) - } - txConfig := authtx.NewTxConfig(appCodec, signingCtx.AddressCodec(), signingCtx.ValidatorAddressCodec(), authtx.DefaultSignModes) - - govModuleAddr, err := signingCtx.AddressCodec().BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName)) - if err != nil { - panic(err) - } - - if err := signingCtx.Validate(); err != nil { - panic(err) - } - - std.RegisterLegacyAminoCodec(legacyAmino) - std.RegisterInterfaces(interfaceRegistry) - - // Below we could construct and set an application specific mempool and - // ABCI 1.0 PrepareProposal and ProcessProposal handlers. These defaults are - // already set in the SDK's BaseApp, this shows an example of how to override - // them. - // - // Example: - // - // bApp := baseapp.NewBaseApp(...) - // nonceMempool := mempool.NewSenderNonceMempool() - // abciPropHandler := NewDefaultProposalHandler(nonceMempool, bApp) - // - // bApp.SetMempool(nonceMempool) - // bApp.SetPrepareProposal(abciPropHandler.PrepareProposalHandler()) - // bApp.SetProcessProposal(abciPropHandler.ProcessProposalHandler()) - // - // Alternatively, you can construct BaseApp options, append those to - // baseAppOptions and pass them to NewBaseApp. - // - // Example: - // - // prepareOpt = func(app *baseapp.BaseApp) { - // abciPropHandler := baseapp.NewDefaultProposalHandler(nonceMempool, app) - // app.SetPrepareProposal(abciPropHandler.PrepareProposalHandler()) - // } - // baseAppOptions = append(baseAppOptions, prepareOpt) - - // create and set dummy vote extension handler - voteExtOp := func(bApp *baseapp.BaseApp) { - voteExtHandler := NewVoteExtensionHandler() - voteExtHandler.SetHandlers(bApp) - } - baseAppOptions = append(baseAppOptions, voteExtOp, baseapp.SetOptimisticExecution(), - baseapp.SetIncludeNestedMsgsGas([]sdk.Msg{&govv1.MsgSubmitProposal{}})) - - bApp := baseapp.NewBaseApp(appName, logger, db, txConfig.TxDecoder(), baseAppOptions...) - bApp.SetCommitMultiStoreTracer(traceStore) - bApp.SetVersion(version.Version) - bApp.SetInterfaceRegistry(interfaceRegistry) - bApp.SetTxEncoder(txConfig.TxEncoder()) - - keys := storetypes.NewKVStoreKeys( - authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, - minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, - govtypes.StoreKey, consensustypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, - evidencetypes.StoreKey, circuittypes.StoreKey, - authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, pooltypes.StoreKey, - accounts.StoreKey, epochstypes.StoreKey, - ) - - // register streaming services - if err := bApp.RegisterStreamingServices(appOpts, keys); err != nil { - panic(err) - } - - app := &SimApp{ - BaseApp: bApp, - logger: logger, - legacyAmino: legacyAmino, - appCodec: appCodec, - txConfig: txConfig, - interfaceRegistry: interfaceRegistry, - keys: keys, - } - cometService := runtime.NewContextAwareCometInfoService() - - // set the BaseApp's parameter store - app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[consensustypes.StoreKey]), logger.With(log.ModuleKey, "x/consensus")), govModuleAddr) - bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore) - - // set the version modifier - bApp.SetVersionModifier(consensus.ProvideAppVersionModifier(app.ConsensusParamsKeeper)) - - // add keepers - accountsKeeper, err := accounts.NewKeeper( - appCodec, - runtime.NewEnvironment(runtime.NewKVStoreService(keys[accounts.StoreKey]), logger.With(log.ModuleKey, "x/accounts"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), - signingCtx.AddressCodec(), - appCodec.InterfaceRegistry(), - txDecoder, - // TESTING: do not add - accountstd.AddAccount("counter", counter.NewAccount), - accountstd.AddAccount("aa_minimal", account_abstraction.NewMinimalAbstractedAccount), - // Lockup account - accountstd.AddAccount(lockup.CONTINUOUS_LOCKING_ACCOUNT, lockup.NewContinuousLockingAccount), - accountstd.AddAccount(lockup.PERIODIC_LOCKING_ACCOUNT, lockup.NewPeriodicLockingAccount), - accountstd.AddAccount(lockup.DELAYED_LOCKING_ACCOUNT, lockup.NewDelayedLockingAccount), - accountstd.AddAccount(lockup.PERMANENT_LOCKING_ACCOUNT, lockup.NewPermanentLockingAccount), - accountstd.AddAccount("multisig", multisig.NewAccount), - // PRODUCTION: add - baseaccount.NewAccount("base", txConfig.SignModeHandler(), baseaccount.WithSecp256K1PubKey()), - ) - if err != nil { - panic(err) - } - app.AccountsKeeper = accountsKeeper - - app.AuthKeeper = authkeeper.NewAccountKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[authtypes.StoreKey]), logger.With(log.ModuleKey, "x/auth")), appCodec, authtypes.ProtoBaseAccount, accountsKeeper, maccPerms, signingCtx.AddressCodec(), sdk.Bech32MainPrefix, govModuleAddr) - - blockedAddrs, err := BlockedAddresses(signingCtx.AddressCodec()) - if err != nil { - panic(err) - } - app.BankKeeper = bankkeeper.NewBaseKeeper( - runtime.NewEnvironment(runtime.NewKVStoreService(keys[banktypes.StoreKey]), logger.With(log.ModuleKey, "x/bank")), - appCodec, - app.AuthKeeper, - blockedAddrs, - govModuleAddr, - ) - - // optional: enable sign mode textual by overwriting the default tx config (after setting the bank keeper) - enabledSignModes := append(authtx.DefaultSignModes, sigtypes.SignMode_SIGN_MODE_TEXTUAL) - txConfigOpts := authtx.ConfigOptions{ - EnabledSignModes: enabledSignModes, - TextualCoinMetadataQueryFn: txmodule.NewBankKeeperCoinMetadataQueryFn(app.BankKeeper), - SigningOptions: &signing.Options{ - AddressCodec: signingCtx.AddressCodec(), - ValidatorAddressCodec: signingCtx.ValidatorAddressCodec(), - }, - } - txConfig, err = authtx.NewTxConfigWithOptions( - appCodec, - txConfigOpts, - ) - if err != nil { - panic(err) - } - app.txConfig = txConfig - - app.StakingKeeper = stakingkeeper.NewKeeper( - appCodec, - runtime.NewEnvironment( - runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), - logger.With(log.ModuleKey, "x/staking"), - runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), - runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), - app.AuthKeeper, - app.BankKeeper, - app.ConsensusParamsKeeper, - govModuleAddr, - signingCtx.ValidatorAddressCodec(), - authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), - cometService, - ) - - app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[minttypes.StoreKey]), logger.With(log.ModuleKey, "x/mint")), app.AuthKeeper, app.BankKeeper, authtypes.FeeCollectorName, govModuleAddr) - if err := app.MintKeeper.SetMintFn(mintkeeper.DefaultMintFn(minttypes.DefaultInflationCalculationFn, app.StakingKeeper, app.MintKeeper)); err != nil { - panic(err) - } - - app.PoolKeeper = poolkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[pooltypes.StoreKey]), logger.With(log.ModuleKey, "x/protocolpool")), app.AuthKeeper, app.BankKeeper, govModuleAddr) - - app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[distrtypes.StoreKey]), logger.With(log.ModuleKey, "x/distribution")), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, cometService, authtypes.FeeCollectorName, govModuleAddr) - - app.SlashingKeeper = slashingkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), logger.With(log.ModuleKey, "x/slashing")), - appCodec, legacyAmino, app.StakingKeeper, govModuleAddr, - ) - - app.FeeGrantKeeper = feegrantkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[feegrant.StoreKey]), logger.With(log.ModuleKey, "x/feegrant")), appCodec, app.AuthKeeper.AddressCodec()) - - // register the staking hooks - // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks - app.StakingKeeper.SetHooks( - stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()), - ) - - app.CircuitKeeper = circuitkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[circuittypes.StoreKey]), logger.With(log.ModuleKey, "x/circuit")), appCodec, govModuleAddr, app.AuthKeeper.AddressCodec()) - app.BaseApp.SetCircuitBreaker(&app.CircuitKeeper) - - app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), logger.With(log.ModuleKey, "x/authz"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), appCodec, signingCtx.AddressCodec()) - - groupConfig := group.DefaultConfig() - /* - Example of group params: - config.MaxExecutionPeriod = "1209600s" // example execution period in seconds - config.MaxMetadataLen = 1000 // example metadata length in bytes - config.MaxProposalTitleLen = 255 // example max title length in characters - config.MaxProposalSummaryLen = 10200 // example max summary length in characters - */ - app.GroupKeeper = groupkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[group.StoreKey]), logger.With(log.ModuleKey, "x/group"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), appCodec, app.AuthKeeper, groupConfig) - - // get skipUpgradeHeights from the app options - skipUpgradeHeights := map[int64]bool{} - for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { - skipUpgradeHeights[int64(h)] = true - } - homePath := cast.ToString(appOpts.Get(flags.FlagHome)) - // set the governance module account as the authority for conducting upgrades - app.UpgradeKeeper = upgradekeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), logger.With(log.ModuleKey, "x/upgrade"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), skipUpgradeHeights, appCodec, homePath, app.BaseApp, govModuleAddr, app.ConsensusParamsKeeper) - - // Register the proposal types - // Deprecated: Avoid adding new handlers, instead use the new proposal flow - // by granting the governance module the right to execute the message. - // See: https://docs.cosmos.network/main/modules/gov#proposal-messages - govRouter := govv1beta1.NewRouter() - govConfig := govkeeper.DefaultConfig() - /* - Example of setting gov params: - govConfig.MaxMetadataLen = 10000 - */ - govKeeper := govkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[govtypes.StoreKey]), logger.With(log.ModuleKey, "x/gov"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.PoolKeeper, govConfig, govModuleAddr) - - // Set legacy router for backwards compatibility with gov v1beta1 - govKeeper.SetLegacyRouter(govRouter) - - app.GovKeeper = *govKeeper.SetHooks( - govtypes.NewMultiGovHooks( - // register the governance hooks - ), - ) - - app.NFTKeeper = nftkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[nftkeeper.StoreKey]), logger.With(log.ModuleKey, "x/nft")), appCodec, app.AuthKeeper, app.BankKeeper) - - // create evidence keeper with router - evidenceKeeper := evidencekeeper.NewKeeper( - appCodec, - runtime.NewEnvironment(runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), logger.With(log.ModuleKey, "x/evidence"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), - app.StakingKeeper, - app.SlashingKeeper, - app.ConsensusParamsKeeper, - app.AuthKeeper.AddressCodec(), - app.StakingKeeper.ConsensusAddressCodec(), - ) - // If evidence needs to be handled for the app, set routes in router here and seal - app.EvidenceKeeper = *evidenceKeeper - - app.EpochsKeeper = epochskeeper.NewKeeper( - runtime.NewEnvironment(runtime.NewKVStoreService(keys[epochstypes.StoreKey]), logger.With(log.ModuleKey, "x/epochs")), - appCodec, - ) - - app.EpochsKeeper.SetHooks( - epochstypes.NewMultiEpochHooks( - // insert epoch hooks receivers here - ), - ) - - /**** Module Options ****/ - - // NOTE: Any module instantiated in the module manager that is later modified - // must be passed by reference here. - app.ModuleManager = module.NewManager( - genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator), - accounts.NewAppModule(appCodec, app.AccountsKeeper), - auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), - vesting.NewAppModule(app.AuthKeeper, app.BankKeeper), - bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper), - feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper), - mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService), - distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper), - staking.NewAppModule(appCodec, app.StakingKeeper), - upgrade.NewAppModule(app.UpgradeKeeper), - evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService), - authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry), - groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), - nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry), - consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), - circuit.NewAppModule(appCodec, app.CircuitKeeper), - protocolpool.NewAppModule(appCodec, app.PoolKeeper, app.AuthKeeper, app.BankKeeper), - epochs.NewAppModule(appCodec, app.EpochsKeeper), - ) - - app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino) - app.ModuleManager.RegisterInterfaces(interfaceRegistry) - - // NOTE: upgrade module is required to be prioritized - app.ModuleManager.SetOrderPreBlockers( - upgradetypes.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. - // NOTE: staking module is required if HistoricalEntries param > 0 - app.ModuleManager.SetOrderBeginBlockers( - minttypes.ModuleName, - distrtypes.ModuleName, - pooltypes.ModuleName, - slashingtypes.ModuleName, - evidencetypes.ModuleName, - stakingtypes.ModuleName, - genutiltypes.ModuleName, - authz.ModuleName, - epochstypes.ModuleName, - ) - app.ModuleManager.SetOrderEndBlockers( - govtypes.ModuleName, - stakingtypes.ModuleName, - genutiltypes.ModuleName, - feegrant.ModuleName, - group.ModuleName, - pooltypes.ModuleName, - ) - - // NOTE: The genutils module must occur after staking so that pools are - // properly initialized with tokens from genesis accounts. - // NOTE: The genutils module must also occur after auth so that it can access the params from auth. - genesisModuleOrder := []string{ - consensustypes.ModuleName, - accounts.ModuleName, - authtypes.ModuleName, - banktypes.ModuleName, - distrtypes.ModuleName, - stakingtypes.ModuleName, - slashingtypes.ModuleName, - govtypes.ModuleName, - minttypes.ModuleName, - genutiltypes.ModuleName, - evidencetypes.ModuleName, - authz.ModuleName, - feegrant.ModuleName, - nft.ModuleName, - group.ModuleName, - upgradetypes.ModuleName, - vestingtypes.ModuleName, - circuittypes.ModuleName, - pooltypes.ModuleName, - epochstypes.ModuleName, - } - app.ModuleManager.SetOrderInitGenesis(genesisModuleOrder...) - app.ModuleManager.SetOrderExportGenesis(genesisModuleOrder...) - - // Uncomment if you want to set a custom migration order here. - // app.ModuleManager.SetOrderMigrations(custom order) - - app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) - err = app.ModuleManager.RegisterServices(app.configurator) - if err != nil { - panic(err) - } - - // RegisterUpgradeHandlers is used for registering any on-chain upgrades. - // Make sure it's called after `app.ModuleManager` and `app.configurator` are set. - app.RegisterUpgradeHandlers() - - autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.ModuleManager.Modules)) - - reflectionSvc, err := runtimeservices.NewReflectionService() - if err != nil { - panic(err) - } - reflectionv1.RegisterReflectionServiceServer(app.GRPCQueryRouter(), reflectionSvc) - - // add test gRPC service for testing gRPC queries in isolation - testdata_pulsar.RegisterQueryServer(app.GRPCQueryRouter(), testdata_pulsar.QueryImpl{}) - - // create the simulation manager and define the order of the modules for deterministic simulations - // - // NOTE: this is not required apps that don't use the simulator for fuzz testing - // transactions - overrideModules := map[string]module.AppModuleSimulation{ - authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil), - } - app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules) - - // create, start, and load the unordered tx manager - utxDataDir := filepath.Join(homePath, "data") - app.UnorderedTxManager = unorderedtx.NewManager(utxDataDir) - app.UnorderedTxManager.Start() - - if err := app.UnorderedTxManager.OnInit(); err != nil { - panic(fmt.Errorf("failed to initialize unordered tx manager: %w", err)) - } - - // register custom snapshot extensions (if any) - if manager := app.SnapshotManager(); manager != nil { - err := manager.RegisterExtensions( - unorderedtx.NewSnapshotter(app.UnorderedTxManager), - ) - if err != nil { - panic(fmt.Errorf("failed to register snapshot extension: %w", err)) - } - } - - app.sm.RegisterStoreDecoders() - - // initialize stores - app.MountKVStores(keys) - - // initialize BaseApp - app.SetInitChainer(app.InitChainer) - app.SetPreBlocker(app.PreBlocker) - app.SetBeginBlocker(app.BeginBlocker) - app.SetEndBlocker(app.EndBlocker) - app.setAnteHandler(txConfig) - - // In v0.46, the SDK introduces _postHandlers_. PostHandlers are like - // antehandlers, but are run _after_ the `runMsgs` execution. They are also - // defined as a chain, and have the same signature as antehandlers. - // - // In baseapp, postHandlers are run in the same store branch as `runMsgs`, - // meaning that both `runMsgs` and `postHandler` state will be committed if - // both are successful, and both will be reverted if any of the two fails. - // - // The SDK exposes a default postHandlers chain - // - // Please note that changing any of the anteHandler or postHandler chain is - // likely to be a state-machine breaking change, which needs a coordinated - // upgrade. - app.setPostHandler() - - // At startup, after all modules have been registered, check that all prot - // annotations are correct. - protoFiles, err := proto.MergedRegistry() - if err != nil { - panic(err) - } - err = msgservice.ValidateProtoAnnotations(protoFiles) - if err != nil { - // Once we switch to using protoreflect-based antehandlers, we might - // want to panic here instead of logging a warning. - fmt.Fprintln(os.Stderr, err.Error()) - } - - if loadLatest { - if err := app.LoadLatestVersion(); err != nil { - panic(fmt.Errorf("error loading last version: %w", err)) - } - } - - return app -} - -func (app *SimApp) setAnteHandler(txConfig client.TxConfig) { - anteHandler, err := NewAnteHandler( - HandlerOptions{ - ante.HandlerOptions{ - Environment: runtime.NewEnvironment(nil, app.logger, runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), // nil is set as the kvstoreservice to avoid module access - AccountAbstractionKeeper: app.AccountsKeeper, - AccountKeeper: app.AuthKeeper, - BankKeeper: app.BankKeeper, - ConsensusKeeper: app.ConsensusParamsKeeper, - SignModeHandler: txConfig.SignModeHandler(), - FeegrantKeeper: app.FeeGrantKeeper, - SigGasConsumer: ante.DefaultSigVerificationGasConsumer, - UnorderedTxManager: app.UnorderedTxManager, - }, - &app.CircuitKeeper, - }, - ) - if err != nil { - panic(err) - } - - // Set the AnteHandler for the app - app.SetAnteHandler(anteHandler) -} - -func (app *SimApp) setPostHandler() { - postHandler, err := posthandler.NewPostHandler( - posthandler.HandlerOptions{}, - ) - if err != nil { - panic(err) - } - - app.SetPostHandler(postHandler) -} - -// Close closes all necessary application resources. -// It implements servertypes.Application. -func (app *SimApp) Close() error { - if err := app.BaseApp.Close(); err != nil { - return err - } - - return app.UnorderedTxManager.Close() -} - -// Name returns the name of the App -func (app *SimApp) Name() string { return app.BaseApp.Name() } - -// PreBlocker application updates every pre block -func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.FinalizeBlockRequest) error { - app.UnorderedTxManager.OnNewBlock(ctx.BlockTime()) - return app.ModuleManager.PreBlock(ctx) -} - -// BeginBlocker application updates every begin block -func (app *SimApp) BeginBlocker(ctx sdk.Context) (sdk.BeginBlock, error) { - return app.ModuleManager.BeginBlock(ctx) -} - -// EndBlocker application updates every end block -func (app *SimApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) { - return app.ModuleManager.EndBlock(ctx) -} - -func (a *SimApp) Configurator() module.Configurator { //nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1. - return a.configurator -} - -// InitChainer application update at chain initialization -func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.InitChainRequest) (*abci.InitChainResponse, error) { - var genesisState GenesisState - err := json.Unmarshal(req.AppStateBytes, &genesisState) - if err != nil { - return nil, err - } - err = app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()) - if err != nil { - return nil, err - } - return app.ModuleManager.InitGenesis(ctx, genesisState) -} - -// LoadHeight loads a particular height -func (app *SimApp) LoadHeight(height int64) error { - return app.LoadVersion(height) -} - -// LegacyAmino returns SimApp's amino codec. -// -// NOTE: This is solely to be used for testing purposes as it may be desirable -// for modules to register their own custom testing types. -func (app *SimApp) LegacyAmino() *codec.LegacyAmino { - return app.legacyAmino -} - -// AppCodec returns SimApp's app codec. -// -// NOTE: This is solely to be used for testing purposes as it may be desirable -// for modules to register their own custom testing types. -func (app *SimApp) AppCodec() codec.Codec { - return app.appCodec -} - -// InterfaceRegistry returns SimApp's InterfaceRegistry -func (app *SimApp) InterfaceRegistry() types.InterfaceRegistry { - return app.interfaceRegistry -} - -// TxConfig returns SimApp's TxConfig -func (app *SimApp) TxConfig() client.TxConfig { - return app.txConfig -} - -// AutoCliOpts returns the autocli options for the app. -func (app *SimApp) AutoCliOpts() autocli.AppOptions { - return autocli.AppOptions{ - Modules: app.ModuleManager.Modules, - ModuleOptions: runtimeservices.ExtractAutoCLIOptions(app.ModuleManager.Modules), - } -} - -// DefaultGenesis returns a default genesis from the registered AppModule's. -func (a *SimApp) DefaultGenesis() map[string]json.RawMessage { - return a.ModuleManager.DefaultGenesis() -} - -// GetKey returns the KVStoreKey for the provided store key. -// -// NOTE: This is solely to be used for testing purposes. -func (app *SimApp) GetKey(storeKey string) *storetypes.KVStoreKey { - return app.keys[storeKey] -} - -// GetStoreKeys returns all the stored store keys. -func (app *SimApp) GetStoreKeys() []storetypes.StoreKey { - keys := make([]storetypes.StoreKey, 0, len(app.keys)) - for _, key := range app.keys { - keys = append(keys, key) - } - - return keys -} - -// SimulationManager implements the SimulationApp interface -func (app *SimApp) SimulationManager() *module.SimulationManager { - return app.sm -} - -// RegisterAPIRoutes registers all application module routes with the provided -// API server. -func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { - clientCtx := apiSvr.ClientCtx - // Register new tx routes from grpc-gateway. - authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // Register new CometBFT queries routes from grpc-gateway. - cmtservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // Register node gRPC service for grpc-gateway. - nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // Register grpc-gateway routes for all modules. - app.ModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // register swagger API from root so that other applications can override easily - if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil { - panic(err) - } -} - -// RegisterTxService implements the Application.RegisterTxService method. -func (app *SimApp) RegisterTxService(clientCtx client.Context) { - authtx.RegisterTxService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.BaseApp.Simulate, app.interfaceRegistry) -} - -// RegisterTendermintService implements the Application.RegisterTendermintService method. -func (app *SimApp) RegisterTendermintService(clientCtx client.Context) { - cmtApp := server.NewCometABCIWrapper(app) - cmtservice.RegisterTendermintService( - clientCtx, - app.BaseApp.GRPCQueryRouter(), - app.interfaceRegistry, - cmtApp.Query, - ) -} - -func (app *SimApp) RegisterNodeService(clientCtx client.Context, cfg config.Config) { - nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter(), cfg) -} - -// ValidatorKeyProvider returns a function that generates a validator key -// Supported key types are those supported by Comet: ed25519, secp256k1, bls12-381 -func (app *SimApp) ValidatorKeyProvider() runtime.KeyGenF { - return func() (cmtcrypto.PrivKey, error) { - return cmted25519.GenPrivKey(), nil - } -} - -// GetMaccPerms returns a copy of the module account permissions -// -// NOTE: This is solely to be used for testing purposes. -func GetMaccPerms() map[string][]string { - return maps.Clone(maccPerms) -} - -// BlockedAddresses returns all the app's blocked account addresses. -func BlockedAddresses(ac coreaddress.Codec) (map[string]bool, error) { - modAccAddrs := make(map[string]bool) - for acc := range GetMaccPerms() { - addr, err := ac.BytesToString(authtypes.NewModuleAddress(acc)) - if err != nil { - return nil, err - } - modAccAddrs[addr] = true - } - - // allow the following addresses to receive funds - addr, err := ac.BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName)) - if err != nil { - return nil, err - } - delete(modAccAddrs, addr) - - return modAccAddrs, nil -} diff --git a/simapp/app_di.go b/simapp/app_di.go index 6e8f8d4f63ee..90de295e8b7d 100644 --- a/simapp/app_di.go +++ b/simapp/app_di.go @@ -1,5 +1,3 @@ -//go:build !app_v1 - package simapp import ( diff --git a/simapp/go.mod b/simapp/go.mod index 71e1c2d67cca..973d5e993666 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -32,14 +32,14 @@ require ( cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 cosmossdk.io/x/slashing v0.0.0-00010101000000-000000000000 cosmossdk.io/x/staking v0.0.0-20240226161501-23359a0b6d91 - cosmossdk.io/x/tx v1.0.0-alpha.1 + cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect cosmossdk.io/x/upgrade v0.0.0-20230613133644-0a778132a60f github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 github.com/cometbft/cometbft/api v1.0.0-rc2 // this version is not used as it is always replaced by the latest Cosmos SDK version github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/gogoproto v1.7.0 - github.com/spf13/cast v1.7.0 + github.com/spf13/cast v1.7.0 // indirect github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.19.0 diff --git a/simapp/simd/cmd/root.go b/simapp/simd/cmd/root.go deleted file mode 100644 index 7851629e7716..000000000000 --- a/simapp/simd/cmd/root.go +++ /dev/null @@ -1,137 +0,0 @@ -//go:build app_v1 - -package cmd - -import ( - "os" - - "github.com/spf13/cobra" - - coretesting "cosmossdk.io/core/testing" - "cosmossdk.io/log" - "cosmossdk.io/simapp" - "cosmossdk.io/simapp/params" - txsigning "cosmossdk.io/x/tx/signing" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/config" - nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" - addresscodec "github.com/cosmos/cosmos-sdk/codec/address" - "github.com/cosmos/cosmos-sdk/server" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/tx/signing" - "github.com/cosmos/cosmos-sdk/x/auth/tx" - authtxconfig "github.com/cosmos/cosmos-sdk/x/auth/tx/config" - "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -// NewRootCmd creates a new root command for simd. It is called once in the -// main function. -func NewRootCmd() *cobra.Command { - // we "pre"-instantiate the application for getting the injected/configured encoding configuration - // note, this is not necessary when using app wiring, as depinject can be directly used (see root_v2.go) - tempApp := simapp.NewSimApp(log.NewNopLogger(), coretesting.NewMemDB(), nil, true, simtestutil.NewAppOptionsWithFlagHome(simapp.DefaultNodeHome)) - encodingConfig := params.EncodingConfig{ - InterfaceRegistry: tempApp.InterfaceRegistry(), - Codec: tempApp.AppCodec(), - TxConfig: tempApp.TxConfig(), - Amino: tempApp.LegacyAmino(), - } - - initClientCtx := client.Context{}. - WithCodec(encodingConfig.Codec). - WithInterfaceRegistry(encodingConfig.InterfaceRegistry). - WithTxConfig(encodingConfig.TxConfig). - WithLegacyAmino(encodingConfig.Amino). - WithInput(os.Stdin). - WithAccountRetriever(types.AccountRetriever{}). - WithAddressCodec(addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix())). - WithValidatorAddressCodec(addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix())). - WithConsensusAddressCodec(addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix())). - WithHomeDir(simapp.DefaultNodeHome). - WithViper(""). // uses by default the binary name as prefix - WithAddressPrefix(sdk.GetConfig().GetBech32AccountAddrPrefix()). - WithValidatorPrefix(sdk.GetConfig().GetBech32ValidatorAddrPrefix()) - - rootCmd := &cobra.Command{ - Use: "simd", - Short: "simulation app", - SilenceErrors: true, - PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { - // set the default command outputs - cmd.SetOut(cmd.OutOrStdout()) - cmd.SetErr(cmd.ErrOrStderr()) - - initClientCtx = initClientCtx.WithCmdContext(cmd.Context()) - initClientCtx, err := client.ReadPersistentCommandFlags(initClientCtx, cmd.Flags()) - if err != nil { - return err - } - - customClientTemplate, customClientConfig := initClientConfig() - initClientCtx, err = config.CreateClientConfig(initClientCtx, customClientTemplate, customClientConfig) - if err != nil { - return err - } - - // This needs to go after CreateClientConfig, as that function - // sets the RPC client needed for SIGN_MODE_TEXTUAL. This sign mode - // is only available if the client is online. - if !initClientCtx.Offline { - enabledSignModes := append(tx.DefaultSignModes, signing.SignMode_SIGN_MODE_TEXTUAL) - txConfigOpts := tx.ConfigOptions{ - EnabledSignModes: enabledSignModes, - TextualCoinMetadataQueryFn: authtxconfig.NewGRPCCoinMetadataQueryFn(initClientCtx), - SigningOptions: &txsigning.Options{ - AddressCodec: initClientCtx.InterfaceRegistry.SigningContext().AddressCodec(), - ValidatorAddressCodec: initClientCtx.InterfaceRegistry.SigningContext().ValidatorAddressCodec(), - }, - } - txConfig, err := tx.NewTxConfigWithOptions( - initClientCtx.Codec, - txConfigOpts, - ) - if err != nil { - return err - } - - initClientCtx = initClientCtx.WithTxConfig(txConfig) - } - - if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { - return err - } - - customAppTemplate, customAppConfig := initAppConfig() - customCMTConfig := initCometBFTConfig() - - return server.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, customCMTConfig) - }, - } - - initRootCmd(rootCmd, tempApp.ModuleManager) - - // autocli opts - customClientTemplate, customClientConfig := initClientConfig() - var err error - initClientCtx, err = config.CreateClientConfig(initClientCtx, customClientTemplate, customClientConfig) - if err != nil { - panic(err) - } - - autoCliOpts := tempApp.AutoCliOpts() - autoCliOpts.AddressCodec = initClientCtx.AddressCodec - autoCliOpts.ValidatorAddressCodec = initClientCtx.ValidatorAddressCodec - autoCliOpts.ConsensusAddressCodec = initClientCtx.ConsensusAddressCodec - autoCliOpts.Cdc = initClientCtx.Codec - - nodeCmds := nodeservice.NewNodeCommands() - autoCliOpts.ModuleOptions[nodeCmds.Name()] = nodeCmds.AutoCLIOptions() - - if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { - panic(err) - } - - return rootCmd -} diff --git a/simapp/simd/cmd/root_di.go b/simapp/simd/cmd/root_di.go index ea6e70f37a99..4d3b2d5774ac 100644 --- a/simapp/simd/cmd/root_di.go +++ b/simapp/simd/cmd/root_di.go @@ -1,5 +1,3 @@ -//go:build !app_v1 - package cmd import ( diff --git a/tests/integration/v2/app.go b/tests/integration/v2/app.go index 8eba29665cf3..72a4873cba6b 100644 --- a/tests/integration/v2/app.go +++ b/tests/integration/v2/app.go @@ -445,6 +445,8 @@ func (a *App) SignCheckDeliver( // It required the context to have the integration context. // a new state is committed if the option WithAutomaticCommit is set in options. func (app *App) RunMsg(t *testing.T, ctx context.Context, handler handler, option ...Option) (resp transaction.Msg, err error) { + t.Helper() + // set options cfg := &RunMsgConfig{} for _, opt := range option { diff --git a/tests/integration/v2/evidence/infraction_test.go b/tests/integration/v2/evidence/infraction_test.go index 16cd31f4e83d..351b2f3ea9be 100644 --- a/tests/integration/v2/evidence/infraction_test.go +++ b/tests/integration/v2/evidence/infraction_test.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "encoding/hex" - "fmt" "testing" "time" @@ -25,7 +24,6 @@ import ( _ "cosmossdk.io/x/evidence" // import as blank for app wiring "cosmossdk.io/x/evidence/exported" "cosmossdk.io/x/evidence/keeper" - evidencetypes "cosmossdk.io/x/evidence/types" minttypes "cosmossdk.io/x/mint/types" _ "cosmossdk.io/x/slashing" // import as blank for app wiring slashingkeeper "cosmossdk.io/x/slashing/keeper" @@ -251,6 +249,7 @@ func TestHandleDoubleSign_TooOld(t *testing.T) { require.NotNil(t, f.consensusKeeper.ParamsStore) require.NoError(t, f.consensusKeeper.ParamsStore.Set(ctx, *simtestutil.DefaultConsensusParams)) cp, err := f.consensusKeeper.ParamsStore.Get(ctx) + require.NoError(t, err) ctx = integration.SetCometInfo(ctx, nci) ctx = integration.SetHeaderInfo(ctx, header.Info{ @@ -412,21 +411,3 @@ func newPubKey(pk string) (res cryptotypes.PubKey) { return pubkey } - -func testEquivocationHandler(_ interface{}) evidencetypes.Handler { - return func(ctx context.Context, e exported.Evidence) error { - if err := e.ValidateBasic(); err != nil { - return err - } - - ee, ok := e.(*evidencetypes.Equivocation) - if !ok { - return fmt.Errorf("unexpected evidence type: %T", e) - } - if ee.Height%2 == 0 { - return fmt.Errorf("unexpected even evidence height: %d", ee.Height) - } - - return nil - } -} From 8ca82729fafde0fbdad7de6e6d18c76f7584bb93 Mon Sep 17 00:00:00 2001 From: xujiangyu <47973791+xujiangyu@users.noreply.github.com> Date: Sat, 7 Dec 2024 20:53:05 +0800 Subject: [PATCH 22/62] test: add test examples for prefixdb.go (#22752) Co-authored-by: heren-ke --- store/db/prefixdb_test.go | 49 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 store/db/prefixdb_test.go diff --git a/store/db/prefixdb_test.go b/store/db/prefixdb_test.go new file mode 100644 index 000000000000..199aa50d056a --- /dev/null +++ b/store/db/prefixdb_test.go @@ -0,0 +1,49 @@ +package db_test + +import ( + "testing" + + "cosmossdk.io/store/db" + "cosmossdk.io/store/mock" + "github.com/stretchr/testify/require" + "go.uber.org/mock/gomock" +) + +func TestPrefixDB(t *testing.T) { + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + mockDB := mock.NewMockKVStoreWithBatch(mockCtrl) + prefix := []byte("test:") + pdb := db.NewPrefixDB(mockDB, prefix) + + key := []byte("key1") + value := []byte("value1") + mockDB.EXPECT().Set(gomock.Eq(append(prefix, key...)), gomock.Eq(value)).Return(nil) + + err := pdb.Set(key, value) + require.NoError(t, err) + + mockDB.EXPECT().Get(gomock.Eq(append(prefix, key...))).Return(value, nil) + + returnedValue, err := pdb.Get(key) + require.NoError(t, err) + require.Equal(t, value, returnedValue) + + mockDB.EXPECT().Has(gomock.Eq(append(prefix, key...))).Return(true, nil) + + has, err := pdb.Has(key) + require.NoError(t, err) + require.True(t, has) + + mockDB.EXPECT().Delete(gomock.Eq(append(prefix, key...))).Return(nil) + + err = pdb.Delete(key) + require.NoError(t, err) + + mockDB.EXPECT().Has(gomock.Eq(append(prefix, key...))).Return(false, nil) + + has, err = pdb.Has(key) + require.NoError(t, err) + require.False(t, has) +} From 7e02d59d3208b3f08b20f64acf08cce17f5c97be Mon Sep 17 00:00:00 2001 From: Andi <36215014+ChengenH@users.noreply.github.com> Date: Mon, 9 Dec 2024 14:45:09 +0800 Subject: [PATCH 23/62] refactor(x/tx): Error handling now includes detailed information using fmt.Errorf (#22796) Signed-off-by: ChengenH --- x/tx/signing/textual/coins.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/x/tx/signing/textual/coins.go b/x/tx/signing/textual/coins.go index 2bcd8230905d..d23681a61377 100644 --- a/x/tx/signing/textual/coins.go +++ b/x/tx/signing/textual/coins.go @@ -41,17 +41,17 @@ func (vr coinsValueRenderer) Format(ctx context.Context, v protoreflect.Value) ( coin := &basev1beta1.Coin{} err := coerceToMessage(v.Interface().(protoreflect.Message).Interface(), coin) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to coerce message to coin: %w", err) } metadata, err := vr.coinMetadataQuerier(ctx, coin.Denom) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to query coin metadata: %w", err) } formatted, err := FormatCoins([]*basev1beta1.Coin{coin}, []*bankv1beta1.Metadata{metadata}) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to format coins: %w", err) } return []Screen{{Content: formatted}}, nil @@ -68,18 +68,18 @@ func (vr coinsValueRenderer) FormatRepeated(ctx context.Context, v protoreflect. coin := &basev1beta1.Coin{} err := coerceToMessage(protoCoins.Get(i).Interface().(protoreflect.Message).Interface(), coin) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to coerce message to coin: %w", err) } coins[i] = coin metadatas[i], err = vr.coinMetadataQuerier(ctx, coin.Denom) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to query coin metadata: %w", err) } } formatted, err := FormatCoins(coins, metadatas) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to format coins: %w", err) } return []Screen{{Content: formatted}}, nil From 9525d91f6e6021e49fb90bd911a3f8b8a3959219 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 9 Dec 2024 08:14:16 +0100 Subject: [PATCH 24/62] fix(simapp/v2): register extra gRPC gateway routes (#22786) --- server/v2/cometbft/grpc.go | 195 ++++++++++++++++++++++--------- simapp/v2/simdv2/cmd/commands.go | 31 +++-- 2 files changed, 166 insertions(+), 60 deletions(-) diff --git a/server/v2/cometbft/grpc.go b/server/v2/cometbft/grpc.go index 66bbc86731f1..170475246d35 100644 --- a/server/v2/cometbft/grpc.go +++ b/server/v2/cometbft/grpc.go @@ -3,6 +3,7 @@ package cometbft import ( "context" "fmt" + "strings" abci "github.com/cometbft/cometbft/abci/types" abciproto "github.com/cometbft/cometbft/api/cometbft/abci/v1" @@ -24,6 +25,8 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" txtypes "github.com/cosmos/cosmos-sdk/types/tx" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" + authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" ) type appSimulator[T transaction.Tx] interface { @@ -50,51 +53,6 @@ func gRPCServiceRegistrar[T transaction.Tx]( } } -// CometBFTAutoCLIDescriptor is the auto-generated CLI descriptor for the CometBFT service -var CometBFTAutoCLIDescriptor = &autocliv1.ServiceCommandDescriptor{ - Service: cmtv1beta1.Service_ServiceDesc.ServiceName, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "GetNodeInfo", - Use: "node-info", - Short: "Query the current node info", - }, - { - RpcMethod: "GetSyncing", - Use: "syncing", - Short: "Query node syncing status", - }, - { - RpcMethod: "GetLatestBlock", - Use: "block-latest", - Short: "Query for the latest committed block", - }, - { - RpcMethod: "GetBlockByHeight", - Use: "block-by-height ", - Short: "Query for a committed block by height", - Long: "Query for a specific committed block using the CometBFT RPC `block_by_height` method", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "height"}}, - }, - { - RpcMethod: "GetLatestValidatorSet", - Use: "validator-set", - Alias: []string{"validator-set-latest", "comet-validator-set", "cometbft-validator-set", "tendermint-validator-set"}, - Short: "Query for the latest validator set", - }, - { - RpcMethod: "GetValidatorSetByHeight", - Use: "validator-set-by-height ", - Short: "Query for a validator set by height", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "height"}}, - }, - { - RpcMethod: "ABCIQuery", - Skip: true, - }, - }, -} - type txServer[T transaction.Tx] struct { clientCtx client.Context txCodec transaction.Codec[T] @@ -112,8 +70,33 @@ func (t txServer[T]) GetBlockWithTxs(context.Context, *txtypes.GetBlockWithTxsRe } // GetTx implements tx.ServiceServer. -func (t txServer[T]) GetTx(context.Context, *txtypes.GetTxRequest) (*txtypes.GetTxResponse, error) { - return nil, status.Error(codes.Unimplemented, "not implemented") +func (t txServer[T]) GetTx(ctx context.Context, req *txtypes.GetTxRequest) (*txtypes.GetTxResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be nil") + } + + if len(req.Hash) == 0 { + return nil, status.Error(codes.InvalidArgument, "tx hash cannot be empty") + } + + result, err := authtx.QueryTx(t.clientCtx, req.Hash) + if err != nil { + if strings.Contains(err.Error(), "not found") { + return nil, status.Errorf(codes.NotFound, "tx not found: %s", req.Hash) + } + + return nil, err + } + + protoTx, ok := result.Tx.GetCachedValue().(*txtypes.Tx) + if !ok { + return nil, status.Errorf(codes.Internal, "expected %T, got %T", txtypes.Tx{}, result.Tx.GetCachedValue()) + } + + return &txtypes.GetTxResponse{ + Tx: protoTx, + TxResponse: result, + }, nil } // GetTxsEvent implements tx.ServiceServer. @@ -181,18 +164,79 @@ func (t txServer[T]) TxDecode(context.Context, *txtypes.TxDecodeRequest) (*txtyp } // TxDecodeAmino implements tx.ServiceServer. -func (t txServer[T]) TxDecodeAmino(context.Context, *txtypes.TxDecodeAminoRequest) (*txtypes.TxDecodeAminoResponse, error) { - return nil, status.Error(codes.Unimplemented, "not implemented") +func (t txServer[T]) TxDecodeAmino(_ context.Context, req *txtypes.TxDecodeAminoRequest) (*txtypes.TxDecodeAminoResponse, error) { + if req.AminoBinary == nil { + return nil, status.Error(codes.InvalidArgument, "invalid empty tx bytes") + } + + var stdTx legacytx.StdTx + err := t.clientCtx.LegacyAmino.Unmarshal(req.AminoBinary, &stdTx) + if err != nil { + return nil, err + } + + res, err := t.clientCtx.LegacyAmino.MarshalJSON(stdTx) + if err != nil { + return nil, err + } + + return &txtypes.TxDecodeAminoResponse{ + AminoJson: string(res), + }, nil } // TxEncode implements tx.ServiceServer. -func (t txServer[T]) TxEncode(context.Context, *txtypes.TxEncodeRequest) (*txtypes.TxEncodeResponse, error) { - return nil, status.Error(codes.Unimplemented, "not implemented") +func (t txServer[T]) TxEncode(_ context.Context, req *txtypes.TxEncodeRequest) (*txtypes.TxEncodeResponse, error) { + if req.Tx == nil { + return nil, status.Error(codes.InvalidArgument, "invalid empty tx") + } + + bodyBytes, err := t.clientCtx.Codec.Marshal(req.Tx.Body) + if err != nil { + return nil, err + } + + authInfoBytes, err := t.clientCtx.Codec.Marshal(req.Tx.AuthInfo) + if err != nil { + return nil, err + } + + raw := &txtypes.TxRaw{ + BodyBytes: bodyBytes, + AuthInfoBytes: authInfoBytes, + Signatures: req.Tx.Signatures, + } + + encodedBytes, err := t.clientCtx.Codec.Marshal(raw) + if err != nil { + return nil, err + } + + return &txtypes.TxEncodeResponse{ + TxBytes: encodedBytes, + }, nil } // TxEncodeAmino implements tx.ServiceServer. -func (t txServer[T]) TxEncodeAmino(context.Context, *txtypes.TxEncodeAminoRequest) (*txtypes.TxEncodeAminoResponse, error) { - return nil, status.Error(codes.Unimplemented, "not implemented") +func (t txServer[T]) TxEncodeAmino(_ context.Context, req *txtypes.TxEncodeAminoRequest) (*txtypes.TxEncodeAminoResponse, error) { + if req.AminoJson == "" { + return nil, status.Error(codes.InvalidArgument, "invalid empty tx json") + } + + var stdTx legacytx.StdTx + err := t.clientCtx.LegacyAmino.UnmarshalJSON([]byte(req.AminoJson), &stdTx) + if err != nil { + return nil, err + } + + encodedBytes, err := t.clientCtx.LegacyAmino.Marshal(stdTx) + if err != nil { + return nil, err + } + + return &txtypes.TxEncodeAminoResponse{ + AminoBinary: encodedBytes, + }, nil } var _ txtypes.ServiceServer = txServer[transaction.Tx]{} @@ -236,3 +280,48 @@ func (s nodeServer[T]) Status(ctx context.Context, _ *nodeservice.StatusRequest) ValidatorHash: nodeInfo.LastBlockAppHash, }, nil } + +// CometBFTAutoCLIDescriptor is the auto-generated CLI descriptor for the CometBFT service +var CometBFTAutoCLIDescriptor = &autocliv1.ServiceCommandDescriptor{ + Service: cmtv1beta1.Service_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "GetNodeInfo", + Use: "node-info", + Short: "Query the current node info", + }, + { + RpcMethod: "GetSyncing", + Use: "syncing", + Short: "Query node syncing status", + }, + { + RpcMethod: "GetLatestBlock", + Use: "block-latest", + Short: "Query for the latest committed block", + }, + { + RpcMethod: "GetBlockByHeight", + Use: "block-by-height ", + Short: "Query for a committed block by height", + Long: "Query for a specific committed block using the CometBFT RPC `block_by_height` method", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "height"}}, + }, + { + RpcMethod: "GetLatestValidatorSet", + Use: "validator-set", + Alias: []string{"validator-set-latest", "comet-validator-set", "cometbft-validator-set", "tendermint-validator-set"}, + Short: "Query for the latest validator set", + }, + { + RpcMethod: "GetValidatorSetByHeight", + Use: "validator-set-by-height ", + Short: "Query for a validator set by height", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "height"}}, + }, + { + RpcMethod: "ABCIQuery", + Skip: true, + }, + }, +} diff --git a/simapp/v2/simdv2/cmd/commands.go b/simapp/v2/simdv2/cmd/commands.go index a2eea8b49fbc..28586e32c2de 100644 --- a/simapp/v2/simdv2/cmd/commands.go +++ b/simapp/v2/simdv2/cmd/commands.go @@ -1,6 +1,7 @@ package cmd import ( + "context" "io" "github.com/spf13/cobra" @@ -23,11 +24,14 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" "github.com/cosmos/cosmos-sdk/client/debug" + "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" + nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" "github.com/cosmos/cosmos-sdk/client/keys" "github.com/cosmos/cosmos-sdk/client/rpc" sdktelemetry "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + txtypes "github.com/cosmos/cosmos-sdk/types/tx" "github.com/cosmos/cosmos-sdk/version" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/x/genutil" @@ -153,13 +157,7 @@ func InitRootCmd[T transaction.Tx]( if err != nil { return nil, err } - - for _, mod := range deps.ModuleManager.Modules() { - if gmod, ok := mod.(module.HasGRPCGateway); ok { - // TODO(@julienrbrt) https://github.com/cosmos/cosmos-sdk/pull/22701#pullrequestreview-2470651390 - gmod.RegisterGRPCGatewayRoutes(deps.ClientContext, grpcgatewayServer.GRPCGatewayRouter) - } - } + registerGRPCGatewayRoutes[T](deps, grpcgatewayServer) // wire server commands return serverv2.AddCommands[T]( @@ -264,3 +262,22 @@ func RootCommandPersistentPreRun(clientCtx client.Context) func(*cobra.Command, return nil } } + +// registerGRPCGatewayRoutes registers the gRPC gateway routes for all modules and other components +// TODO(@julienrbrt): Eventually, this should removed and directly done within the grpcgateway.Server +// ref: https://github.com/cosmos/cosmos-sdk/pull/22701#pullrequestreview-2470651390 +func registerGRPCGatewayRoutes[T transaction.Tx]( + deps CommandDependencies[T], + server *grpcgateway.Server[T], +) { + // those are the extra services that the CometBFT server implements (server/v2/cometbft/grpc.go) + cmtservice.RegisterGRPCGatewayRoutes(deps.ClientContext, server.GRPCGatewayRouter) + _ = nodeservice.RegisterServiceHandlerClient(context.Background(), server.GRPCGatewayRouter, nodeservice.NewServiceClient(deps.ClientContext)) + _ = txtypes.RegisterServiceHandlerClient(context.Background(), server.GRPCGatewayRouter, txtypes.NewServiceClient(deps.ClientContext)) + + for _, mod := range deps.ModuleManager.Modules() { + if gmod, ok := mod.(module.HasGRPCGateway); ok { + gmod.RegisterGRPCGatewayRoutes(deps.ClientContext, server.GRPCGatewayRouter) + } + } +} From 6cf9d57be946409b2d4188f97b4cab21fc48e2fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 14:14:31 +0700 Subject: [PATCH 25/62] build(deps): Bump github.com/magiconair/properties from 1.8.7 to 1.8.9 (#22797) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- client/v2/go.mod | 2 +- client/v2/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- server/v2/cometbft/go.mod | 2 +- server/v2/cometbft/go.sum | 4 ++-- server/v2/go.mod | 2 +- server/v2/go.sum | 4 ++-- simapp/go.mod | 2 +- simapp/go.sum | 4 ++-- simapp/v2/go.mod | 2 +- simapp/v2/go.sum | 4 ++-- systemtests/go.mod | 2 +- systemtests/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tests/systemtests/go.mod | 2 +- tests/systemtests/go.sum | 4 ++-- tools/confix/go.mod | 2 +- tools/confix/go.sum | 4 ++-- tools/cosmovisor/go.mod | 2 +- tools/cosmovisor/go.sum | 4 ++-- tools/hubl/go.mod | 2 +- tools/hubl/go.sum | 4 ++-- x/accounts/defaults/base/go.mod | 2 +- x/accounts/defaults/base/go.sum | 4 ++-- x/accounts/defaults/lockup/go.mod | 2 +- x/accounts/defaults/lockup/go.sum | 4 ++-- x/accounts/defaults/multisig/go.mod | 2 +- x/accounts/defaults/multisig/go.sum | 4 ++-- x/accounts/go.mod | 2 +- x/accounts/go.sum | 4 ++-- x/authz/go.mod | 2 +- x/authz/go.sum | 4 ++-- x/bank/go.mod | 2 +- x/bank/go.sum | 4 ++-- x/circuit/go.mod | 2 +- x/circuit/go.sum | 4 ++-- x/consensus/go.mod | 2 +- x/consensus/go.sum | 4 ++-- x/distribution/go.mod | 2 +- x/distribution/go.sum | 4 ++-- x/epochs/go.mod | 2 +- x/epochs/go.sum | 4 ++-- x/evidence/go.mod | 2 +- x/evidence/go.sum | 4 ++-- x/feegrant/go.mod | 2 +- x/feegrant/go.sum | 4 ++-- x/gov/go.mod | 2 +- x/gov/go.sum | 4 ++-- x/group/go.mod | 2 +- x/group/go.sum | 4 ++-- x/mint/go.mod | 2 +- x/mint/go.sum | 4 ++-- x/nft/go.mod | 2 +- x/nft/go.sum | 4 ++-- x/params/go.mod | 2 +- x/params/go.sum | 4 ++-- x/protocolpool/go.mod | 2 +- x/protocolpool/go.sum | 4 ++-- x/slashing/go.mod | 2 +- x/slashing/go.sum | 4 ++-- x/staking/go.mod | 2 +- x/staking/go.sum | 4 ++-- x/upgrade/go.mod | 2 +- x/upgrade/go.sum | 4 ++-- 66 files changed, 99 insertions(+), 99 deletions(-) diff --git a/client/v2/go.mod b/client/v2/go.mod index 15cd0b239e00..52ab0c0b20a4 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -117,7 +117,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/client/v2/go.sum b/client/v2/go.sum index df2b716e9c5d..2222f2852373 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -341,8 +341,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= diff --git a/go.mod b/go.mod index 456cb20b6e89..73e8e62295d6 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/hashicorp/golang-lru v1.0.2 github.com/hdevalence/ed25519consensus v0.2.0 github.com/huandu/skiplist v1.2.1 - github.com/magiconair/properties v1.8.7 + github.com/magiconair/properties v1.8.9 github.com/mattn/go-isatty v0.0.20 github.com/mdp/qrterminal/v3 v3.2.0 github.com/muesli/termenv v0.15.2 diff --git a/go.sum b/go.sum index c722be7bc2bc..365cf1840f7d 100644 --- a/go.sum +++ b/go.sum @@ -330,8 +330,8 @@ github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9i github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod index 20cba34dc235..ee02c4e038c9 100644 --- a/server/v2/cometbft/go.mod +++ b/server/v2/cometbft/go.mod @@ -129,7 +129,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/server/v2/cometbft/go.sum b/server/v2/cometbft/go.sum index 1cef4bfa7e19..bfe37539a1ed 100644 --- a/server/v2/cometbft/go.sum +++ b/server/v2/cometbft/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/server/v2/go.mod b/server/v2/go.mod index 0c9be05fde81..dbaf8c2e8f8c 100644 --- a/server/v2/go.mod +++ b/server/v2/go.mod @@ -79,7 +79,7 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect diff --git a/server/v2/go.sum b/server/v2/go.sum index 77d80d52875b..c4987e318f7f 100644 --- a/server/v2/go.sum +++ b/server/v2/go.sum @@ -215,8 +215,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/simapp/go.mod b/simapp/go.mod index 973d5e993666..023cad3c8776 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -165,7 +165,7 @@ require ( github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index d3f396fa132e..10426893e2dd 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -652,8 +652,8 @@ github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9i github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/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= diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index c61951d64c2a..491657688490 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -165,7 +165,7 @@ require ( github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/simapp/v2/go.sum b/simapp/v2/go.sum index e663b957246d..6957cbe0768a 100644 --- a/simapp/v2/go.sum +++ b/simapp/v2/go.sum @@ -643,8 +643,8 @@ github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9i github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/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= diff --git a/systemtests/go.mod b/systemtests/go.mod index 953b3aa44593..426fb0cb79f8 100644 --- a/systemtests/go.mod +++ b/systemtests/go.mod @@ -105,7 +105,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/systemtests/go.sum b/systemtests/go.sum index 43ef7435a01d..5e7a4fead4a1 100644 --- a/systemtests/go.sum +++ b/systemtests/go.sum @@ -476,8 +476,8 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/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= diff --git a/tests/go.mod b/tests/go.mod index 0c6d73279556..5e56835a3e48 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -171,7 +171,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/tests/go.sum b/tests/go.sum index 4ca4d03dc5dd..068ecb44d2f3 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -643,8 +643,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/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= diff --git a/tests/systemtests/go.mod b/tests/systemtests/go.mod index 0305bff6e11e..538ee4c11c20 100644 --- a/tests/systemtests/go.mod +++ b/tests/systemtests/go.mod @@ -102,7 +102,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/tests/systemtests/go.sum b/tests/systemtests/go.sum index 8c0abace40bd..e8228123732a 100644 --- a/tests/systemtests/go.sum +++ b/tests/systemtests/go.sum @@ -478,8 +478,8 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/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= diff --git a/tools/confix/go.mod b/tools/confix/go.mod index d05e2086be05..3ef1a1ae75a1 100644 --- a/tools/confix/go.mod +++ b/tools/confix/go.mod @@ -106,7 +106,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/tools/confix/go.sum b/tools/confix/go.sum index fb76842015ef..e376dd5cbfe9 100644 --- a/tools/confix/go.sum +++ b/tools/confix/go.sum @@ -477,8 +477,8 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/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= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index 00530da494f2..03a5f5e9cb21 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -123,7 +123,7 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index 597dfc975dfc..59616136fc43 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -724,8 +724,8 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/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= diff --git a/tools/hubl/go.mod b/tools/hubl/go.mod index c07266e20645..c9cac4374ec4 100644 --- a/tools/hubl/go.mod +++ b/tools/hubl/go.mod @@ -106,7 +106,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/tools/hubl/go.sum b/tools/hubl/go.sum index 8ba6bee1d333..a8e60902dd54 100644 --- a/tools/hubl/go.sum +++ b/tools/hubl/go.sum @@ -477,8 +477,8 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/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= diff --git a/x/accounts/defaults/base/go.mod b/x/accounts/defaults/base/go.mod index 3e61333c0ee6..328a2cc4a418 100644 --- a/x/accounts/defaults/base/go.mod +++ b/x/accounts/defaults/base/go.mod @@ -106,7 +106,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/accounts/defaults/base/go.sum b/x/accounts/defaults/base/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/accounts/defaults/base/go.sum +++ b/x/accounts/defaults/base/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/accounts/defaults/lockup/go.mod b/x/accounts/defaults/lockup/go.mod index 26d7738321e0..0be721c12e5f 100644 --- a/x/accounts/defaults/lockup/go.mod +++ b/x/accounts/defaults/lockup/go.mod @@ -92,7 +92,7 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect diff --git a/x/accounts/defaults/lockup/go.sum b/x/accounts/defaults/lockup/go.sum index defaa535dbf8..364d4b2288bc 100644 --- a/x/accounts/defaults/lockup/go.sum +++ b/x/accounts/defaults/lockup/go.sum @@ -293,8 +293,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= diff --git a/x/accounts/defaults/multisig/go.mod b/x/accounts/defaults/multisig/go.mod index 916adf5b091b..8996f387866f 100644 --- a/x/accounts/defaults/multisig/go.mod +++ b/x/accounts/defaults/multisig/go.mod @@ -106,7 +106,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/accounts/defaults/multisig/go.sum b/x/accounts/defaults/multisig/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/accounts/defaults/multisig/go.sum +++ b/x/accounts/defaults/multisig/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 115240bd69c0..54a276f32802 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -112,7 +112,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/accounts/go.sum b/x/accounts/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/authz/go.mod b/x/authz/go.mod index e0c42f04c74c..4346b1864a66 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -99,7 +99,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/authz/go.sum b/x/authz/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/bank/go.mod b/x/bank/go.mod index 1ecc9002d25e..2016a115a9ad 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -98,7 +98,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/bank/go.sum b/x/bank/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index 2c3f0fc10228..bdd419df3d35 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -106,7 +106,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/consensus/go.mod b/x/consensus/go.mod index 81759226d12c..3cd6d1ee2d97 100644 --- a/x/consensus/go.mod +++ b/x/consensus/go.mod @@ -106,7 +106,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/consensus/go.sum b/x/consensus/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/consensus/go.sum +++ b/x/consensus/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 889d6361e07e..96f188aaf3c1 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -109,7 +109,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/distribution/go.sum b/x/distribution/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/epochs/go.mod b/x/epochs/go.mod index c021bebcf38a..aed9d97a8b74 100644 --- a/x/epochs/go.mod +++ b/x/epochs/go.mod @@ -99,7 +99,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/epochs/go.sum b/x/epochs/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/epochs/go.sum +++ b/x/epochs/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index e58934590372..511d44128a22 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -109,7 +109,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 929638286f1a..c41c5ffece67 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -116,7 +116,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index df2b716e9c5d..2222f2852373 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -341,8 +341,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= diff --git a/x/gov/go.mod b/x/gov/go.mod index 6c156c8ad12b..9567e7ddfd61 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -107,7 +107,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/gov/go.sum b/x/gov/go.sum index 52122d4ece54..bef5b50b0d7e 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -339,8 +339,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= diff --git a/x/group/go.mod b/x/group/go.mod index f0e65c0dcb1f..7df98890228e 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -119,7 +119,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/group/go.sum b/x/group/go.sum index 01445c948378..50b790e05f8d 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -341,8 +341,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= diff --git a/x/mint/go.mod b/x/mint/go.mod index 5cb87b9513f7..da1cab874819 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -99,7 +99,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/mint/go.sum b/x/mint/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/nft/go.mod b/x/nft/go.mod index e482f9dba76f..62e472eb36cc 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -107,7 +107,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/params/go.mod b/x/params/go.mod index 2cfd93cc3511..3f1869bc703d 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -103,7 +103,7 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect diff --git a/x/params/go.sum b/x/params/go.sum index 57b49b487e70..3014ac8bbdd6 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -317,8 +317,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index 7a39650e2bef..f253b7f2f1ea 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -108,7 +108,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index b5389554a1f4..53cb89610443 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -110,7 +110,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index a683352c0260..8a161939fe69 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -335,8 +335,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/staking/go.mod b/x/staking/go.mod index c2329d4ce1af..71bd60ca9167 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -94,7 +94,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/x/staking/go.sum b/x/staking/go.sum index 8bd9e5c462e3..353df80d6663 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -333,8 +333,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index cd31d8f3d9a5..a332c8874d75 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -131,7 +131,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index 84cf77b49b18..38340d535359 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -634,8 +634,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +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/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= From 8ef35c39baa311b066d5c3d332b98bad4eb24abc Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 9 Dec 2024 10:30:13 +0100 Subject: [PATCH 26/62] docs: rewrite building module section (2/n) -- env + core services (#22790) Co-authored-by: Akhil Kumar P <36399231+akhilkumarpilli@users.noreply.github.com> --- docs/build/building-apps/00-runtime.md | 18 ++++++++ docs/build/building-modules/00-intro.md | 7 +++ .../building-modules/01-module-manager.md | 8 ++-- .../05-protobuf-annotations.md | 6 +-- docs/build/building-modules/06-keeper.md | 24 +++++++--- docs/learn/advanced/00-baseapp.md | 4 +- docs/learn/advanced/01-transactions.md | 2 +- .../learn/advanced/{17-core.md => 02-core.md} | 18 +++++--- docs/learn/advanced/04-store.md | 35 +++------------ docs/learn/advanced/08-events.md | 45 +++++++++---------- .../advanced/{02-context.md => 17-context.md} | 6 ++- docs/learn/beginner/04-gas-fees.md | 12 +++-- 12 files changed, 105 insertions(+), 80 deletions(-) rename docs/learn/advanced/{17-core.md => 02-core.md} (85%) rename docs/learn/advanced/{02-context.md => 17-context.md} (95%) diff --git a/docs/build/building-apps/00-runtime.md b/docs/build/building-apps/00-runtime.md index a962019e2993..5f9ab6f9287f 100644 --- a/docs/build/building-apps/00-runtime.md +++ b/docs/build/building-apps/00-runtime.md @@ -5,5 +5,23 @@ sidebar_position: 1 # What is `runtime`? The `runtime` package is the Cosmos SDK package that combines the building blocks of your blockchain together. It wires together the modules, the applications, the codecs, and the stores. +It is a layer of abstraction between `baseapp` and the application modules that simplifies the process of building a Cosmos SDK application. +## Modules wiring + +Runtime is responsible for wiring the modules together. It uses `depinject` to inject the dependencies of the modules. + +## App wiring + +Runtime is the base boilerplate of a Cosmos SDK application. A user only needs to import `runtime` in their `app.go` and instantiate a `runtime.App`. + +## Services + +Modules have access to a multitude of services that are provided by the runtime. +These services include the `store`, the `event manager`, the `context`, and the `logger`. +As runtime is doing the wiring of modules, it can ensure that the services are scoped to their respective modules. + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/runtime/module.go#L250-L279 +``` diff --git a/docs/build/building-modules/00-intro.md b/docs/build/building-modules/00-intro.md index 6618a44caa61..bd8e78a42380 100644 --- a/docs/build/building-modules/00-intro.md +++ b/docs/build/building-modules/00-intro.md @@ -58,6 +58,13 @@ While there are no definitive guidelines for writing modules, here are some impo * **Specialization**: A direct consequence of the **composability** feature is that modules should be **specialized**. Developers should carefully establish the scope of their module and not batch multiple functionalities into the same module. This separation of concerns enables modules to be re-used in other projects and improves the upgradability of the application. **Specialization** also plays an important role in the [object-capabilities model](https://docs.cosmos.network/main/learn/advanced/ocap#ocaps-in-practice) of the Cosmos SDK. * **Capabilities**: Most modules need to read and/or write to the store(s) of other modules. However, in an open-source environment, it is possible for some modules to be malicious. That is why module developers need to carefully think not only about how their module interacts with other modules, but also about how to give access to the module's store(s). The Cosmos SDK takes a capabilities-oriented approach to inter-module security. This means that each store defined by a module is accessed by a `key`, which is held by the module's [`keeper`](./06-keeper.md). This `keeper` defines how to access the store(s) and under what conditions. Access to the module's store(s) is done by passing a reference to the module's `keeper`. +## Core APIs for Modules + +The SDK provides a set of APIs that a module can implement, and a set of services that a module can use. +Those APIs are defined in the `cosmossdk.io/core/appmodule` package, and are used to defined the module capabilities, which is used by `runtime` during the wiring of the application. + +Learn more about the core APIs for modules [here](../../learn/advanced/02-core.md). + ## Main Components of Cosmos SDK Modules Modules are by convention defined in the `./x/` subfolder (e.g. the `bank` module will be defined in the `./x/bank` folder). They generally share the same core components: diff --git a/docs/build/building-modules/01-module-manager.md b/docs/build/building-modules/01-module-manager.md index 1e3bf38aa95e..9e6694ec3327 100644 --- a/docs/build/building-modules/01-module-manager.md +++ b/docs/build/building-modules/01-module-manager.md @@ -217,11 +217,9 @@ The module manager is used throughout the application whenever an action on a co * `InitGenesis(ctx context.Context, genesisData map[string]json.RawMessage)`: Calls the [`InitGenesis`](./08-genesis.md#initgenesis) function of each module when the application is first started, in the order defined in `OrderInitGenesis`. Returns an `abci.InitChainResponse` to the underlying consensus engine, which can contain validator updates. * `ExportGenesis(ctx context.Context)`: Calls the [`ExportGenesis`](./08-genesis.md#exportgenesis) function of each module, in the order defined in `OrderExportGenesis`. The export constructs a genesis file from a previously existing state, and is mainly used when a hard-fork upgrade of the chain is required. * `ExportGenesisForModules(ctx context.Context, modulesToExport []string)`: Behaves the same as `ExportGenesis`, except takes a list of modules to export. -* `BeginBlock(ctx context.Context) error`: At the beginning of each block, this function is called from [`BaseApp`](../../learn/advanced/00-baseapp.md#beginblock) and, in turn, calls the [`BeginBlock`](./06-preblock-beginblock-endblock.md) function of each modules implementing the `appmodule.HasBeginBlocker` interface, in the order defined in `OrderBeginBlockers`. It creates a child [context](../../learn/advanced/02-context.md) with an event manager to aggregate [events](../../learn/advanced/08-events.md) emitted from each modules. -* `EndBlock(ctx context.Context) error`: At the end of each block, this function is called from [`BaseApp`](../../learn/advanced/00-baseapp.md#endblock) and, in turn, calls the [`EndBlock`](./06-preblock-beginblock-endblock.md) function of each modules implementing the `appmodule.HasEndBlocker` interface, in the order defined in `OrderEndBlockers`. It creates a child [context](../../learn/advanced/02-context.md) with an event manager to aggregate [events](../../learn/advanced/08-events.md) emitted from all modules. The function returns an `abci` which contains the aforementioned events, as well as validator set updates (if any). -* `EndBlock(context.Context) ([]abci.ValidatorUpdate, error)`: At the end of each block, this function is called from [`BaseApp`](../../learn/advanced/00-baseapp.md#endblock) and, in turn, calls the [`EndBlock`](./06-preblock-beginblock-endblock.md) function of each modules implementing the `module.HasABCIEndBlock` interface, in the order defined in `OrderEndBlockers`. It creates a child [context](../../learn/advanced/02-context.md) with an event manager to aggregate [events](../../learn/advanced/08-events.md) emitted from all modules. The function returns an `abci` which contains the aforementioned events, as well as validator set updates (if any). -* `Precommit(ctx context.Context)`: During [`Commit`](../../learn/advanced/00-baseapp.md#commit), this function is called from `BaseApp` immediately before the [`deliverState`](../../learn/advanced/00-baseapp.md#state-updates) is written to the underlying [`rootMultiStore`](../../learn/advanced/04-store.md#commitmultistore) and, in turn calls the `Precommit` function of each modules implementing the `HasPrecommit` interface, in the order defined in `OrderPrecommiters`. It creates a child [context](../../learn/advanced/02-context.md) where the underlying `CacheMultiStore` is that of the newly committed block's [`finalizeblockstate`](../../learn/advanced/00-baseapp.md#state-updates). -* `PrepareCheckState(ctx context.Context)`: During [`Commit`](../../learn/advanced/00-baseapp.md#commit), this function is called from `BaseApp` immediately after the [`deliverState`](../../learn/advanced/00-baseapp.md#state-updates) is written to the underlying [`rootMultiStore`](../../learn/advanced/04-store.md#commitmultistore) and, in turn calls the `PrepareCheckState` function of each module implementing the `HasPrepareCheckState` interface, in the order defined in `OrderPrepareCheckStaters`. It creates a child [context](../../learn/advanced/02-context.md) where the underlying `CacheMultiStore` is that of the next block's [`checkState`](../../learn/advanced/00-baseapp.md#state-updates). Writes to this state will be present in the [`checkState`](../../learn/advanced/00-baseapp.md#state-updates) of the next block, and therefore this method can be used to prepare the `checkState` for the next block. +* `BeginBlock(ctx context.Context) error`: At the beginning of each block, this function is called from [`BaseApp`](../../learn/advanced/00-baseapp.md#beginblock) and, in turn, calls the [`BeginBlock`](./06-preblock-beginblock-endblock.md) function of each modules implementing the `appmodule.HasBeginBlocker` interface, in the order defined in `OrderBeginBlockers`. +* `EndBlock(ctx context.Context) error`: At the end of each block, this function is called from [`BaseApp`](../../learn/advanced/00-baseapp.md#endblock) and, in turn, calls the [`EndBlock`](./06-preblock-beginblock-endblock.md) function of each modules implementing the `appmodule.HasEndBlocker` interface, in the order defined in `OrderEndBlockers`. +* `EndBlock(context.Context) ([]abci.ValidatorUpdate, error)`: At the end of each block, this function is called from [`BaseApp`](../../learn/advanced/00-baseapp.md#endblock) and, in turn, calls the [`EndBlock`](./06-preblock-beginblock-endblock.md) function of each modules implementing the `appmodule.HasABCIEndBlock` interface, in the order defined in `OrderEndBlockers`. Extended implementation for modules that need to update the validator set (typically used by the staking module). * (Optional) `RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)`: Registers the [`codec.LegacyAmino`s](../../learn/advanced/05-encoding.md#amino) of each of the application module. This function is usually called early on in the [application's construction](../../learn/beginner/00-app-anatomy.md#constructor). * `RegisterInterfaces(registry codectypes.InterfaceRegistry)`: Registers interface types and implementations of each of the application's `AppModule`. * (Optional) `RegisterGRPCGatewayRoutes(clientCtx client.Context, rtr *runtime.ServeMux)`: Registers gRPC routes for modules. diff --git a/docs/build/building-modules/05-protobuf-annotations.md b/docs/build/building-modules/05-protobuf-annotations.md index 9843a63398fc..29dfe19d5f9c 100644 --- a/docs/build/building-modules/05-protobuf-annotations.md +++ b/docs/build/building-modules/05-protobuf-annotations.md @@ -2,9 +2,9 @@ sidebar_position: 1 --- -# ProtocolBuffer Annotations +# Protocol buffer Annotations -This document explains the various protobuf scalars that have been added to make working with protobuf easier for Cosmos SDK application developers +This document explains the various protobuf scalars that have been added to make working with protobuf easier for Cosmos SDK application developers. ## Signer @@ -85,7 +85,7 @@ option (cosmos_proto.method_added_in) = "simapp v24.0.0"; The amino codec was removed in `v0.50+`, this means there is not a need register `legacyAminoCodec`. To replace the amino codec, Amino protobuf annotations are used to provide information to the amino codec on how to encode and decode protobuf messages. :::note -Amino annotations are only used for backwards compatibility with amino. New modules are not required use amino annotations. +Amino annotations are only used for backwards compatibility with amino. ::: The below annotations are used to provide information to the amino codec on how to encode and decode protobuf messages in a backwards compatible manner. diff --git a/docs/build/building-modules/06-keeper.md b/docs/build/building-modules/06-keeper.md index 59180170cfd7..deb6727842a0 100644 --- a/docs/build/building-modules/06-keeper.md +++ b/docs/build/building-modules/06-keeper.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Keepers :::note Synopsis -`Keeper`s refer to a Cosmos SDK abstraction whose role is to manage access to the subset of the state defined by various modules. `Keeper`s are module-specific, i.e. the subset of state defined by a module can only be accessed by a `keeper` defined in said module. If a module needs to access the subset of state defined by another module, a reference to the second module's internal `keeper` needs to be passed to the first one. This is done in `app.go` during the instantiation of module keepers. +`Keeper`s refer to a Cosmos SDK abstraction whose role is to manage access to the subset of the state defined by various modules. `Keeper`s are module-specific, i.e. the subset of state defined by a module can only be accessed by a `keeper` defined in said module. If a module needs to access the subset of state defined by another module, a reference to the second module's internal `keeper` needs to be passed to the first one. This is done by specifying the module inputs in the `depinject` config; `runtime` will ensure that the correct `keeper` is passed to the module. ::: :::note Pre-requisite Readings @@ -28,9 +28,9 @@ The core idea behind the object-capabilities approach is to only reveal what is ```go type Keeper struct { - // External keepers, if any + appmodule.Environment - // Store key(s) + // External keepers, if any // codec @@ -46,8 +46,8 @@ https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.1/x/staking/keeper/keeper Let us go through the different parameters: +* Environment is a struct that holds the necessary references to services available to the modules. This includes the [store services](../../advanced/04-store.md#store-services), the [event manager](../../learn/advanced/06-events.md) and more. * An expected `keeper` is a `keeper` external to a module that is required by the internal `keeper` of said module. External `keeper`s are listed in the internal `keeper`'s type definition as interfaces. These interfaces are themselves defined in an `expected_keepers.go` file in the root of the module's folder. In this context, interfaces are used to reduce the number of dependencies, as well as to facilitate the maintenance of the module itself. -* `KVStoreService`s grant access to the store(s) of the [multistore](../../learn/advanced/04-store.md) managed by the module. They should always remain unexposed to external modules. * `cdc` is the [codec](../../learn/advanced/05-encoding.md) used to marshal and unmarshal structs to/from `[]byte`. The `cdc` can be any of `codec.BinaryCodec`, `codec.JSONCodec` or `codec.Codec` based on your requirements. It can be either a proto or amino codec as long as they implement these interfaces. * The authority listed is a module account or user account that has the right to change module level parameters. Previously this was handled by the param module, which has been deprecated. @@ -55,6 +55,21 @@ Of course, it is possible to define different types of internal `keeper`s for th ## Environment +Environment is a struct, part of the module Core APIs (`cosmossdk.io/core/appmodule`). +A keeper should embed the `environment` struct to get access to the necessary references to services available to the modules. [Runtime](../../build/building-apps/00-runtime.md) ensures that the `Environment` struct is scoped to the module. + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/core/v1.0.0-alpha.6/core/appmodule/v2/environment.go#L14-L29 +``` + +All services are then easily available to the module wherever the `keeper` is used: + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/x/gov/keeper/proposal.go#L110-L112 +``` + +Learn more about those services in the [core api](../../learn/advanced/02-core.md) documentation. + ## Implementing Methods `Keeper`s primarily expose methods for business logic, as validity checks should have already been performed by the [`Msg` server](./03-msg-services.md) when `keeper`s' methods are called. @@ -67,5 +82,4 @@ State management is recommended to be done via [Collections](../packages/collect In the Cosmos SDK, it is crucial to be methodical and selective when managing state within a module, as improper state management can lead to inefficiency, security risks, and scalability issues. Not all data belongs in the on-chain state; it's important to store only essential blockchain data that needs to be verified by consensus. Storing unnecessary information, especially client-side data, can bloat the state and slow down performance. Instead, developers should focus on using an off-chain database to handle supplementary data, extending the API as needed. This approach minimizes on-chain complexity, optimizes resource usage, and keeps the blockchain state lean and efficient, ensuring scalability and smooth operations. - The Cosmos SDK leverages Protocol Buffers (protobuf) for efficient state management, providing a well-structured, binary encoding format that ensures compatibility and performance across different modules. The SDK’s recommended approach for managing state is through the [collections package](../pacakges/02-collections.md), which simplifies state handling by offering predefined data structures like maps and indexed sets, reducing the complexity of managing raw state data. While users can opt for custom encoding schemes if they need more flexibility or have specialized requirements, they should be aware that such custom implementations may not integrate seamlessly with indexers that decode state data on the fly. This could lead to challenges in data retrieval, querying, and interoperability, making protobuf a safer and more future-proof choice for most use cases. diff --git a/docs/learn/advanced/00-baseapp.md b/docs/learn/advanced/00-baseapp.md index e30bb4a9a0e4..8fea13d4fd39 100644 --- a/docs/learn/advanced/00-baseapp.md +++ b/docs/learn/advanced/00-baseapp.md @@ -92,7 +92,7 @@ Finally, a few more important parameters: * `voteInfos`: This parameter carries the list of validators whose precommit is missing, either because they did not vote or because the proposer did not include their vote. This information is - carried by the [Context](./02-context.md) and can be used by the application for various things like + carried by the [Context](./17-context.md) and can be used by the application for various things like punishing absent validators. * `minGasPrices`: This parameter defines the minimum gas prices accepted by the node. This is a **local** parameter, meaning each full-node can set a different `minGasPrices`. It is used in the @@ -474,7 +474,7 @@ https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/baseapp/abci.go#L894 * Initialize the [block gas meter](../beginner/04-gas-fees.md#block-gas-meter) with the `maxGas` limit. The `gas` consumed within the block cannot go above `maxGas`. This parameter is defined in the application's consensus parameters. * Run the application's [`beginBlocker()`](../beginner/00-app-anatomy.md#beginblocker-and-endblocker), which mainly runs the [`BeginBlocker()`](../../build/building-modules/06-preblock-beginblock-endblock.md#beginblocker-and-endblocker) method of each of the modules. -* Set the [`VoteInfos`](https://docs.cometbft.com/v1.0/spec/abci/abci++_methods#voteinfo) of the application, i.e. the list of validators whose _precommit_ for the previous block was included by the proposer of the current block. This information is carried into the [`Context`](./02-context.md) so that it can be used during transaction execution and EndBlock. +* Set the [`VoteInfos`](https://docs.cometbft.com/v1.0/spec/abci/abci++_methods#voteinfo) of the application, i.e. the list of validators whose _precommit_ for the previous block was included by the proposer of the current block. This information is carried into the [`Context`](./17-context.md) so that it can be used during transaction execution and EndBlock. #### Transaction Execution diff --git a/docs/learn/advanced/01-transactions.md b/docs/learn/advanced/01-transactions.md index 5eba0acc1759..35d319f19b00 100644 --- a/docs/learn/advanced/01-transactions.md +++ b/docs/learn/advanced/01-transactions.md @@ -16,7 +16,7 @@ sidebar_position: 1 ## Transactions -Transactions are comprised of metadata held in [contexts](./02-context.md) and [`sdk.Msg`s](../../build/building-modules/02-messages-and-queries.md) that trigger state changes within a module through the module's Protobuf [`Msg` service](../../build/building-modules/03-msg-services.md). +Transactions are comprised of metadata held in [contexts](./17-context.md) and [`sdk.Msg`s](../../build/building-modules/02-messages-and-queries.md) that trigger state changes within a module through the module's Protobuf [`Msg` service](../../build/building-modules/03-msg-services.md). When users want to interact with an application and make state changes (e.g. sending coins), they create transactions. Each of a transaction's `sdk.Msg` must be signed using the private key associated with the appropriate account(s), before the transaction is broadcasted to the network. A transaction must then be included in a block, validated, and approved by the network through the consensus process. To read more about the lifecycle of a transaction, click [here](../beginner/01-tx-lifecycle.md). diff --git a/docs/learn/advanced/17-core.md b/docs/learn/advanced/02-core.md similarity index 85% rename from docs/learn/advanced/17-core.md rename to docs/learn/advanced/02-core.md index b6a453fbb130..b1b93235e403 100644 --- a/docs/learn/advanced/17-core.md +++ b/docs/learn/advanced/02-core.md @@ -4,8 +4,7 @@ sidebar_position: 1 # Core -Core is package which specifies the interfaces for core components of the Cosmos SDK. Other -packages in the SDK implement these interfaces to provide the core functionality. This design +Core (`cosmossdk.io/core`) is package which specifies the interfaces for core components of the Cosmos SDK. Other packages in the SDK implement these interfaces to provide the core functionality. This design provides modularity and flexibility to the SDK, allowing developers to swap out implementations of core components as needed. As such it is often referred to as the Core API. @@ -16,19 +15,28 @@ services of the SDK, such as the KVStore, EventManager, and Logger. The `Enviro passed to modules and other components of the SDK to provide access to these services. ```go reference -https://github.com/cosmos/cosmos-sdk/blob/core/v1.0.0-alpha.4/core/appmodule/v2/environment.go#L16-L29 +https://github.com/cosmos/cosmos-sdk/blob/core/v1.0.0-alpha.6/core/appmodule/v2/environment.go#L16-L29 ``` -Historically the SDK has used an [sdk.Context](02-context.md) to pass around services and data. +Historically the SDK has used an [sdk.Context](https://docs.cosmos.network/v0.50/learn/advanced/context) to pass around services and data. `Environment` is a newer construct that is intended to replace an `sdk.Context` in many cases. `sdk.Context` will be deprecated in the future on the same timeline as [Baseapp](00-baseapp.md). +## Logger + +The [Logger](https://pkg.go.dev/cosmossdk.io/log) provides a structured logging interface to the SDK. It is used throughout the SDK to log messages at various levels of severity. The Logger service is a thin wrapper around the [zerolog](https://github.com/rs/zerolog) logging library. +When used via environment, the logger is scoped to the module that is using it. + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/runtime/module.go#L274 +``` + ## Branch Service The [BranchService](https://pkg.go.dev/cosmossdk.io/core/branch#Service.Execute) provides an interface to execute arbitrary code in a branched store. This is useful for executing code that needs to make changes to the store, but may need to be rolled back if an error occurs. -Below is a contrived example based on the `x/epoch` module's BeginBlocker logic. +Below is a contrived example based on the `x/epochs` module's BeginBlocker logic. ```go func (k Keeper) BeginBlocker(ctx context.Context) error { diff --git a/docs/learn/advanced/04-store.md b/docs/learn/advanced/04-store.md index 9c5b7dd9913b..d1b20d20ef66 100644 --- a/docs/learn/advanced/04-store.md +++ b/docs/learn/advanced/04-store.md @@ -45,7 +45,9 @@ The `GetStoreType` is a simple method that returns the type of store, whereas a https://github.com/cosmos/cosmos-sdk/blob/store/v1.1.1/store/types/store.go#L287-L303 ``` -Branching and cache is used ubiquitously in the Cosmos SDK and required to be implemented on every store type. A storage branch creates an isolated, ephemeral branch of a store that can be passed around and updated without affecting the main underlying store. This is used to trigger temporary state-transitions that may be reverted later should an error occur. Read more about it in [context](./02-context.md#store-branching) +Branching and cache is used ubiquitously in the Cosmos SDK and required to be implemented on every store type. A storage branch creates an isolated, ephemeral branch of a store that can be passed around and updated without affecting the main underlying store. This is used to trigger temporary state-transitions that may be reverted later should an error occur. + +Branching is available as a service for modules. Read more about it in the [core](./02-core.md#branch-service) documentation. ### Commit Store @@ -147,29 +149,7 @@ The documentation on the IAVL Tree is located [here](https://github.com/cosmos/i https://github.com/cosmos/cosmos-sdk/blob/store/v1.1.1/store/dbadapter/store.go#L13-L16 ``` -`dbadapter.Store` embeds `corestore.KVStoreWithBatch`, meaning most of the `KVStore` interface functions are implemented. The other functions (mostly miscellaneous) are manually implemented. This store is primarily used within [Transient Stores](#transient-store) - -### `Transient` Store - -`Transient.Store` is a base-layer `KVStore` which is automatically discarded at the end of the block. - -```go reference -https://github.com/cosmos/cosmos-sdk/blob/store/v1.1.1/store/transient/store.go#L16-L19 -``` - -`Transient.Store` is a `dbadapter.Store` with a `coretesting.NewMemDB()`. All `KVStore` methods are reused. When `Store.Commit()` is called, a new `dbadapter.Store` is assigned, discarding previous reference and making it garbage collected. - -This type of store is useful to persist information that is only relevant per-block. One example would be to store parameter changes (i.e. a bool set to `true` if a parameter changed in a block). - -```go reference -https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/x/params/types/subspace.go#L23-L33 -``` - -Transient stores are typically accessed via the [`context`](./02-context.md) via the `TransientStore()` method: - -```go reference -https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/types/context.go#L344-L347 -``` +`dbadapter.Store` embeds `corestore.KVStoreWithBatch`, meaning most of the `KVStore` interface functions are implemented. The other functions (mostly miscellaneous) are manually implemented. ## KVStore Wrappers @@ -215,12 +195,7 @@ By default, all `KVStores` are wrapped in `GasKv.Stores` when retrieved. This is https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/types/context.go#L339-L342 ``` -In this case, the gas configuration set in the `context` is used. The gas configuration can be set using the `WithKVGasConfig` method of the `context`. -Otherwise it uses the following default: - -```go reference -https://github.com/cosmos/cosmos-sdk/blob/store/v1.1.1/store/types/gas.go#L231-L242 -``` +`KVStores` can be accessed in their corresponding modules by using the [`kvStoreService` and `memStoreService`](./02-core.md#kvstore-service). ### `TraceKv` Store diff --git a/docs/learn/advanced/08-events.md b/docs/learn/advanced/08-events.md index cea128dac93e..64d2baa1c979 100644 --- a/docs/learn/advanced/08-events.md +++ b/docs/learn/advanced/08-events.md @@ -77,10 +77,11 @@ https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/types/events.go#L62-L86 ``` Module developers should handle Event emission via the `EventManager#EmitTypedEvent` or `EventManager#EmitEvent` in each -message `Handler` and in each `BeginBlock`/`EndBlock` handler. The `EventManager` is accessed via -the [`Context`](./02-context.md), where Event should be already registered, and emitted like this: +message `Handler` and in each `BeginBlock`/`EndBlock` handler. +The `EventManager` is accessible via the event service, present in the `Environment` struct. +This event service is a [core service](./02-core.md) available to all modules. -Note: it is preferred to use `EmitTypedEvent` over `EmitEvent` as the latter has been deprecated. +Events can be emitted like this using the `EventService`: **Typed events:** @@ -90,18 +91,28 @@ https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/x/group/keeper/msg_serv **Legacy events:** -```go -ctx.EventManager().EmitEvent( - sdk.NewEvent(eventType, sdk.NewAttribute(attributeKey, attributeValue)), -) +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/x/gov/keeper/vote.go#L91-L95 ``` -Where the `EventManager` is accessed via the [`Context`](./02-context.md). - See the [`Msg` services](../../build/building-modules/03-msg-services.md) concept doc for a more detailed view on how to typically implement Events and use the `EventManager` in modules. -## Subscribing to Events +## Default Events + +There are a few events that are automatically emitted for all messages, directly from `baseapp`. + +* `message.action`: The name of the message type. +* `message.sender`: The address of the message signer. +* `message.module`: The name of the module that emitted the message. + +:::tip +The module name is assumed by `baseapp` to be the second element of the message route: `"cosmos.bank.v1beta1.MsgSend" -> "bank"`. +In case a module does not follow the standard message path, (e.g. IBC), it is advised to keep emitting the module name event. +`Baseapp` only emits that event if the module have not already done so. +::: + +## Subscribing to CometBFT Events You can use CometBFT's [Websocket](https://docs.cometbft.com/v1.0/explanation/core/subscription) to subscribe to Events by calling the `subscribe` RPC method: @@ -143,17 +154,3 @@ Subscribing to this Event would be done like so: where `ownerAddress` is an address following the [`AccAddress`](../beginner/03-accounts.md#addresses) format. The same way can be used to subscribe to [legacy events](https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/x/bank/types/events.go). - -## Default Events - -There are a few events that are automatically emitted for all messages, directly from `baseapp`. - -* `message.action`: The name of the message type. -* `message.sender`: The address of the message signer. -* `message.module`: The name of the module that emitted the message. - -:::tip -The module name is assumed by `baseapp` to be the second element of the message route: `"cosmos.bank.v1beta1.MsgSend" -> "bank"`. -In case a module does not follow the standard message path, (e.g. IBC), it is advised to keep emitting the module name event. -`Baseapp` only emits that event if the module have not already done so. -::: diff --git a/docs/learn/advanced/02-context.md b/docs/learn/advanced/17-context.md similarity index 95% rename from docs/learn/advanced/02-context.md rename to docs/learn/advanced/17-context.md index eb0405df3fab..77b1a6285140 100644 --- a/docs/learn/advanced/02-context.md +++ b/docs/learn/advanced/17-context.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Context :::note Synopsis -The `context` is a data structure intended to be passed from function to function that carries information about the current state of the application. It provides access to a branched storage (a safe branch of the entire state) as well as useful objects and information like `gasMeter`, `block height`, `consensus parameters` and more. +The `context` is a data structure that carries information about the current state of the application. It provides access to a branched storage (a safe branch of the entire state) as well as useful objects and information like `gasMeter`, `block height`, `consensus parameters` and more. ::: :::note Pre-requisite Readings @@ -15,6 +15,10 @@ The `context` is a data structure intended to be passed from function to functio ::: +:::warning +The `sdk.Context` should not be used directly. `Runtime` is implementing the [core services](./02-core.md), which are using directly the `sdk.Context`. +::: + ## Context Definition The Cosmos SDK `Context` is a custom data structure that contains Go's stdlib [`context`](https://pkg.go.dev/context) as its base, and has many additional types within its definition that are specific to the Cosmos SDK. The `Context` is integral to transaction processing in that it allows modules to easily access their respective [store](./04-store.md#base-layer-kvstores) in the [`multistore`](./04-store.md#multistore) and retrieve transactional context such as the block header and gas meter. diff --git a/docs/learn/beginner/04-gas-fees.md b/docs/learn/beginner/04-gas-fees.md index ea9af2e492b7..de9a308f91c6 100644 --- a/docs/learn/beginner/04-gas-fees.md +++ b/docs/learn/beginner/04-gas-fees.md @@ -26,7 +26,7 @@ In the Cosmos SDK, `gas` is a special unit that is used to track the consumption In the Cosmos SDK, `gas` is a simple alias for `uint64`, and is managed by an object called a _gas meter_. Gas meters implement the `GasMeter` interface ```go reference -https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/store/types/gas.go#L40-L51 +https://github.com/cosmos/cosmos-sdk/blob/b795646/store/types/gas.go#L40-L51 ``` where: @@ -40,17 +40,21 @@ where: * `IsPastLimit()` returns `true` if the amount of gas consumed by the gas meter instance is strictly above the limit, `false` otherwise. * `IsOutOfGas()` returns `true` if the amount of gas consumed by the gas meter instance is above or equal to the limit, `false` otherwise. -The gas meter is generally held in [`ctx`](../advanced/02-context.md), and consuming gas is done with the following pattern: +The gas meter is held under the `GasMeterService` in [`Environment`](../advanced/02-core.md), and consuming gas is done with the following pattern: + +:::note +The gas.Service does not give access to all the methods of the gas meter. +::: ```go -ctx.GasMeter().ConsumeGas(amount, "description") +environment.GasMeter(ctx).Consume(amount, "description") ``` By default, the Cosmos SDK makes use of two different gas meters, the [main gas meter](#main-gas-meter) and the [block gas meter](#block-gas-meter). ### Main Gas Meter -`ctx.GasMeter()` is the main gas meter of the application. The main gas meter is initialized in `FinalizeBlock` via `setFinalizeBlockState`, and then tracks gas consumption during execution sequences that lead to state-transitions, i.e. those originally triggered by [`FinalizeBlock`](../advanced/00-baseapp.md#finalizeblock). At the beginning of each transaction execution, the main gas meter **must be set to 0** in the [`AnteHandler`](#antehandler), so that it can track gas consumption per-transaction. +The main gas meter is initialized in `FinalizeBlock` via `setFinalizeBlockState`, and then tracks gas consumption during execution sequences that lead to state-transitions, i.e. those originally triggered by [`FinalizeBlock`](../advanced/00-baseapp.md#finalizeblock). At the beginning of each transaction execution, the main gas meter **must be set to 0** in the [`AnteHandler`](#antehandler), so that it can track gas consumption per-transaction. Gas consumption can be done manually, generally by the module developer in the [`BeginBlocker`, `EndBlocker`](../../build/building-modules/06-preblock-beginblock-endblock.md) or [`Msg` service](../../build/building-modules/03-msg-services.md), but most of the time it is done automatically whenever there is a read or write to the store. This automatic gas consumption logic is implemented in a special store called [`GasKv`](../advanced/04-store.md#gaskv-store). From f995d0a219342ff051bffb5a66d6369af9bc92ba Mon Sep 17 00:00:00 2001 From: Marko Date: Mon, 9 Dec 2024 03:19:18 -0800 Subject: [PATCH 27/62] chore(docs): update store v2 adr (#22794) --- docs/architecture/adr-065-store-v2.md | 72 +++------------------------ store/v2/README.md | 18 +++---- store/v2/pruning/README.md | 11 +--- 3 files changed, 14 insertions(+), 87 deletions(-) diff --git a/docs/architecture/adr-065-store-v2.md b/docs/architecture/adr-065-store-v2.md index b1377555e020..a6b054d68ed0 100644 --- a/docs/architecture/adr-065-store-v2.md +++ b/docs/architecture/adr-065-store-v2.md @@ -79,13 +79,11 @@ We propose to build upon some of the great ideas introduced in [ADR-040](./adr-0 while being a bit more flexible with the underlying implementations and overall less intrusive. Specifically, we propose to: -* Separate the concerns of state commitment (**SC**), needed for consensus, and - state storage (**SS**), needed for state machine and clients. * Reduce layers of abstractions necessary between the RMS and underlying stores. * Remove unnecessary store types and implementations such as `CacheKVStore`. -* Simplify the branching logic. +* Remove the branching logic from the store package. * Ensure the `RootStore` interface remains as lightweight as possible. -* Allow application developers to easily swap out SS and SC backends. +* Allow application developers to easily swap out SC backends. Furthermore, we will keep IAVL as the default [SC](https://cryptography.fandom.com/wiki/Commitment_scheme) backend for the time being. While we might not fully settle on the use of IAVL in @@ -95,18 +93,12 @@ to change the backing commitment store in the future should evidence arise to warrant a better alternative. However there is promising work being done to IAVL that should result in significant performance improvement [1,2]. -Note, we will provide applications with the ability to use IAVL v1 and IAVL v2 as +Note, we will provide applications with the ability to use IAVL v1, IAVL v2 and MemIAVL as either SC backend, with the latter showing extremely promising performance improvements over IAVL v0 and v1, at the cost of a state migration. -### Separating SS and SC -By separating SS and SC, it will allow for us to optimize against primary use cases -and access patterns to state. Specifically, The SS layer will be responsible for -direct access to data in the form of (key, value) pairs, whereas the SC layer (e.g. IAVL) -will be responsible for committing to data and providing Merkle proofs. - -#### State Commitment (SC) +### State Commitment (SC) A foremost design goal is that SC backends should be easily swappable, i.e. not necessarily IAVL. To this end, the scope of SC has been reduced, it must only: @@ -121,45 +113,6 @@ due to the time and space constraints, but since store v2 defines an API for his proofs there should be at least one configuration of a given SC backend which supports this. -#### State Storage (SS) - -The goal of SS is to provide a modular storage backend, i.e. multiple implementations, -to facilitate storing versioned raw key/value pairs in a fast embedded database. -The responsibility and functions of SS include the following: - -* Provided fast and efficient queries for versioned raw key/value pairs -* Provide versioned CRUD operations -* Provide versioned batching functionality -* Provide versioned iteration (forward and reverse) functionality -* Provide pruning functionality - -All of the functionality provided by an SS backend should work under a versioned -scheme, i.e. a user should be able to get, store, and iterate over keys for the latest -and historical versions efficiently and a store key, which is used for name-spacing -purposes. - -We propose to have three defaulting SS backends for applications to choose from: - -* RocksDB - * CGO based - * Usage of User-Defined Timestamps as a built-in versioning mechanism -* PebbleDB - * Native - * Manual implementation of MVCC keys for versioning -* SQLite - * CGO based - * Single table for all state - -Since operators might want pruning strategies to differ in SS compared to SC, -e.g. having a very tight pruning strategy in SC while having a looser pruning -strategy for SS, we propose to introduce an additional pruning configuration, -with parameters that are identical to what exists in the SDK today, and allow -operators to control the pruning strategy of the SS layer independently of the -SC layer. - -Note, the SC pruning strategy must be congruent with the operator's state sync -configuration. This is so as to allow state sync snapshots to execute successfully, -otherwise, a snapshot could be triggered on a height that is not available in SC. #### State Sync @@ -179,7 +132,7 @@ the primary interface for the application to interact with. The `RootStore` will be responsible for housing SS and SC backends. Specifically, a `RootStore` will provide the following functionality: -* Manage commitment of state (both SS and SC) +* Manage commitment of state * Provide modules access to state * Query delegation (i.e. get a value for a tuple) * Providing commitment proofs @@ -197,12 +150,7 @@ solely provide key prefixing/namespacing functionality for modules. #### Proofs -Since the SS layer is naturally a storage layer only, without any commitments -to (key, value) pairs, it cannot provide Merkle proofs to clients during queries. - -So providing inclusion and exclusion proofs, via a `CommitmentOp` type, will be -the responsibility of the SC backend. Retrieving proofs will be done through the -a `RootStore`, which will internally route the request to the SC backend. +Providing a `CommitmentOp` type, will be the responsibility of the SC backend. Retrieving proofs will be done through the a `RootStore`, which will internally route the request to the SC backend. #### Commitment @@ -231,9 +179,6 @@ and storage backends for further performance, in addition to a reduced amount of abstraction around KVStores making operations such as caching and state branching more intuitive. -However, due to the proposed design, there are drawbacks around providing state -proofs for historical queries. - ### Backwards Compatibility This ADR proposes changes to the storage implementation in the Cosmos SDK through @@ -243,17 +188,14 @@ be broken or modified. ### Positive -* Improved performance of independent SS and SC layers +* Improved performance of SC layers * Reduced layers of abstraction making storage primitives easier to understand -* Atomic commitments for SC * Redesign of storage types and interfaces will allow for greater experimentation such as different physical storage backends and different commitment schemes for different application modules ### Negative -* Providing proofs for historical state is challenging - ### Neutral * Removal of OCAP-based store keys in favor of simple strings for state retrieval diff --git a/store/v2/README.md b/store/v2/README.md index eb8495c9adc4..1d5dd811f2fc 100644 --- a/store/v2/README.md +++ b/store/v2/README.md @@ -7,8 +7,7 @@ and [Store v2 Design](https://docs.google.com/document/d/1l6uXIjTPHOOWM5N4sUUmUf ## Usage The `store` package contains a `root.Store` type which is intended to act as an -abstraction layer around it's two primary constituent components - state storage (SS) -and state commitment (SC). It acts as the main entry point into storage for an +abstraction layer around it's primary constituent components - state commitment (SC). It acts as the main entry point into storage for an application to use in server/v2. Through `root.Store`, an application can query and iterate over both current and historical data, commit new state, perform state sync, and fetch commitment proofs. @@ -16,8 +15,7 @@ sync, and fetch commitment proofs. A `root.Store` is intended to be initialized with already constructed SS and SC backends (see relevant package documentation for instantiation details). Note, from the perspective of `root.Store`, there is no notion of multi or single tree/store, -rather these are implementation details of SS and SC. For SS, we utilize store keys -to namespace raw key/value pairs. For SC, we utilize an abstraction, `commitment.CommitStore`, +rather these are implementation details of SC. For SC, we utilize an abstraction, `commitment.CommitStore`, to map store keys to a commitment trees. ## Upgrades @@ -29,7 +27,6 @@ old ones. The `Rename` feature is not supported in store/v2. ```mermaid sequenceDiagram participant S as Store - participant SS as StateStorage participant SC as StateCommitment alt SC is a UpgradeableStore S->>SC: LoadVersionAndUpgrade @@ -37,14 +34,11 @@ sequenceDiagram SC->>SC: Prune removed store keys end SC->>S: LoadVersion Result - alt SS is a UpgradableDatabase - S->>SS: PruneStoreKeys - end ``` -`PruneStoreKeys` does not remove the data from the SC and SS instantly. It only +`PruneStoreKeys` does not remove the data from the SC instantly. It only marks the store keys as pruned. The actual data removal is done by the pruning -process of the underlying SS and SC. +process of the underlying SC. ## Migration @@ -54,7 +48,7 @@ the `migration` package. See [Migration Manager](./migration/README.md) for more ## Pruning The `root.Store` is NOT responsible for pruning. Rather, pruning is the responsibility -of the underlying SS and SC layers. This means pruning can be implementation specific, +of the underlying commitment layer. This means pruning can be implementation specific, such as being synchronous or asynchronous. See [Pruning Manager](./pruning/README.md) for more details. @@ -65,4 +59,4 @@ for more details. ## Test Coverage -The test coverage of the following logical components should be over 60%: \ No newline at end of file +The test coverage of the following logical components should be over 60%: diff --git a/store/v2/pruning/README.md b/store/v2/pruning/README.md index fbf24130c6be..9ab41af80cd1 100644 --- a/store/v2/pruning/README.md +++ b/store/v2/pruning/README.md @@ -1,9 +1,7 @@ # Pruning Manager The `pruning` package defines the `PruningManager` struct which is responsible for -pruning the state storage (SS) and the state commitment (SC) based on the current -height of the chain. The `PruningOption` struct defines the configuration for pruning -and is passed to the `PruningManager` during initialization. +pruning the state commitment (SC) based on the current height of the chain. The `PruningOption` struct defines the configuration for pruning and is passed to the `PruningManager` during initialization. ## Prune Options @@ -29,24 +27,17 @@ sequenceDiagram participant A as RootStore participant B as PruningManager participant C as CommitmentStore - participant D as StorageStore loop Commit A->>B: SignalCommit(true, height) alt SC is PausablePruner B->>C: PausePruning(true) - else SS is PausablePruner - B->>D: PausePruing(true) end A->>C: Commit Changeset - A->>D: Write Changeset A->>B: SignalCommit(false, height) alt SC is PausablePruner B->>C: PausePruning(false) - else SS is PausablePruner - B->>D: PausePruing(false) end B->>C: Prune(height) - B->>D: Prune(height) end ``` From 13e3e211a67d0ffd6aec78ad2d285986355e4df2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:26:05 +0000 Subject: [PATCH 28/62] chore: fix spelling errors (#22802) Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> Co-authored-by: Julien Robert --- .github/.codespellignore | 3 ++- CHANGELOG.md | 2 +- docs/architecture/adr-75-v2.md | 8 ++++---- docs/build/building-modules/01-module-manager.md | 2 +- docs/build/building-modules/06-keeper.md | 2 +- docs/user/run-node/00-keyring.md | 2 +- docs/user/run-node/03-txs.md | 2 +- docs/user/run-node/04-rosetta.md | 4 ++-- docs/user/run-node/05-run-testnet.md | 2 +- docs/user/run-node/06-run-production.md | 2 +- x/accounts/defaults/lockup/TUTORIAL.md | 6 +++--- x/auth/CHANGELOG.md | 2 +- x/bank/README.md | 2 +- 13 files changed, 20 insertions(+), 19 deletions(-) diff --git a/.github/.codespellignore b/.github/.codespellignore index 4ac943d563d4..d5f973fc2285 100644 --- a/.github/.codespellignore +++ b/.github/.codespellignore @@ -5,4 +5,5 @@ pastTime hasTables Nam EyT -upTo \ No newline at end of file +upTo +pullRequests \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c6bc2fa2a91..435bf333bc00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -142,7 +142,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i * (genutil) [#21701](https://github.com/cosmos/cosmos-sdk/pull/21701) Improved error messages for genesis validation. * (runtime) [#21704](https://github.com/cosmos/cosmos-sdk/pull/21704) Move `upgradetypes.StoreLoader` to runtime and alias it in upgrade for backward compatibility. * (sims)[#21613](https://github.com/cosmos/cosmos-sdk/pull/21613) Add sims2 framework and factory methods for simpler message factories in modules -* (modules) [#21963](https://github.com/cosmos/cosmos-sdk/pull/21963) Duplicatable metrics are no more collected in modules. They were unecessary overhead. +* (modules) [#21963](https://github.com/cosmos/cosmos-sdk/pull/21963) Duplicatable metrics are no more collected in modules. They were unnecessary overhead. * (crypto/ledger) [#22116](https://github.com/cosmos/cosmos-sdk/pull/22116) Improve error message when deriving paths using index >100 ### Bug Fixes diff --git a/docs/architecture/adr-75-v2.md b/docs/architecture/adr-75-v2.md index 44eecc0d2411..ebfce2de5e27 100644 --- a/docs/architecture/adr-75-v2.md +++ b/docs/architecture/adr-75-v2.md @@ -56,7 +56,7 @@ The alternative to doing a rewrite is to spend more time cleaning up baseapp. Th ## Decision -The Descision is to rewrite the core componenets (baseapp, server, store) of the SDK into smaller modules. +The Decision is to rewrite the core components (baseapp, server, store) of the SDK into smaller modules. These components will be broken into separate go.mods. The modules consist of the following: @@ -135,7 +135,7 @@ The state transition function interface is simple and meant to be as light weigh ```mermaid graph TD - subgraph STF[State Transition Funciton] + subgraph STF[State Transition Function] BR --> DB subgraph DB[DeliverBlock] PB[PreBlock] @@ -205,9 +205,9 @@ The design of the node comes with a number of tradeoffs. ### Backwards Compatibility -The state machine was made to not affect modules that are not using the state transition function. If a user would like to migrate to v2 they will need to migrate to `appmodule.Environment` from `sdk.Context`. `sdk.Context` is a struct which is a global in the state machine, this desing limits the concurrency. +The state machine was made to not affect modules that are not using the state transition function. If a user would like to migrate to v2 they will need to migrate to `appmodule.Environment` from `sdk.Context`. `sdk.Context` is a struct which is a global in the state machine, this design limits the concurrency. -V2 will have a breaking changes in regards to how CometBFT handles certain fields in ABCI. Previously, the Cosmos SDK paniced and recovered in the case of out of gas, providing an error to CometBFT which we do not return in the new design. +V2 will have a breaking changes in regards to how CometBFT handles certain fields in ABCI. Previously, the Cosmos SDK panicked and recovered in the case of out of gas, providing an error to CometBFT which we do not return in the new design. V2 only works with `Store/v2`, `IAVL V1` can be used with `Store/v2`. This allows chains to continue with existing databases. There will be a migration happening to convert the database to the separation of Storage and Commitment. Once the migration is completed the state machine will query information from the rawDB unless otherwise specified. diff --git a/docs/build/building-modules/01-module-manager.md b/docs/build/building-modules/01-module-manager.md index 9e6694ec3327..a0e0035f17eb 100644 --- a/docs/build/building-modules/01-module-manager.md +++ b/docs/build/building-modules/01-module-manager.md @@ -44,7 +44,7 @@ The `AppModule` interface exists to define inter-dependent module methods. Many The usage of extension interfaces allows modules to define only the functionalities they need. For example, a module that does not need an `EndBlock` does not need to define the `HasEndBlocker` interface and thus the `EndBlock` method. `AppModule` and `AppModuleGenesis` are voluntarily small interfaces, that can take advantage of the `Module` patterns without having to define many placeholder functions. :::note legacy -Prior to the introduction of the `cosmossdk.io/core` package the interfaces were defined in the `types/module` package of the Cosmos SDK. Not all interfaces have been migrated to core. Those legacy interfaces are still supported for backward compatability, but aren't described in this document and should not be used in new modules. +Prior to the introduction of the `cosmossdk.io/core` package the interfaces were defined in the `types/module` package of the Cosmos SDK. Not all interfaces have been migrated to core. Those legacy interfaces are still supported for backward compatibility, but aren't described in this document and should not be used in new modules. ::: diff --git a/docs/build/building-modules/06-keeper.md b/docs/build/building-modules/06-keeper.md index deb6727842a0..23a221fb19c0 100644 --- a/docs/build/building-modules/06-keeper.md +++ b/docs/build/building-modules/06-keeper.md @@ -82,4 +82,4 @@ State management is recommended to be done via [Collections](../packages/collect In the Cosmos SDK, it is crucial to be methodical and selective when managing state within a module, as improper state management can lead to inefficiency, security risks, and scalability issues. Not all data belongs in the on-chain state; it's important to store only essential blockchain data that needs to be verified by consensus. Storing unnecessary information, especially client-side data, can bloat the state and slow down performance. Instead, developers should focus on using an off-chain database to handle supplementary data, extending the API as needed. This approach minimizes on-chain complexity, optimizes resource usage, and keeps the blockchain state lean and efficient, ensuring scalability and smooth operations. -The Cosmos SDK leverages Protocol Buffers (protobuf) for efficient state management, providing a well-structured, binary encoding format that ensures compatibility and performance across different modules. The SDK’s recommended approach for managing state is through the [collections package](../pacakges/02-collections.md), which simplifies state handling by offering predefined data structures like maps and indexed sets, reducing the complexity of managing raw state data. While users can opt for custom encoding schemes if they need more flexibility or have specialized requirements, they should be aware that such custom implementations may not integrate seamlessly with indexers that decode state data on the fly. This could lead to challenges in data retrieval, querying, and interoperability, making protobuf a safer and more future-proof choice for most use cases. +The Cosmos SDK leverages Protocol Buffers (protobuf) for efficient state management, providing a well-structured, binary encoding format that ensures compatibility and performance across different modules. The SDK’s recommended approach for managing state is through the [collections package](../packages/02-collections.md), which simplifies state handling by offering predefined data structures like maps and indexed sets, reducing the complexity of managing raw state data. While users can opt for custom encoding schemes if they need more flexibility or have specialized requirements, they should be aware that such custom implementations may not integrate seamlessly with indexers that decode state data on the fly. This could lead to challenges in data retrieval, querying, and interoperability, making protobuf a safer and more future-proof choice for most use cases. diff --git a/docs/user/run-node/00-keyring.md b/docs/user/run-node/00-keyring.md index f307f4bbf90f..0c95e1f13136 100644 --- a/docs/user/run-node/00-keyring.md +++ b/docs/user/run-node/00-keyring.md @@ -8,7 +8,7 @@ sidebar_position: 1 This document describes how to configure and use the keyring and its various backends for an [**application**](../../learn/beginner/00-app-anatomy.md). ::: -The keyring holds the private/public keypairs used to interact with a node. For instance, a validator key needs to be set up before running the blockchain node, so that blocks can be correctly signed. The private key can be stored in different locations, called "backends", such as a file or the operating system's own key storage. +The keyring holds the private/public key pairs used to interact with a node. For instance, a validator key needs to be set up before running the blockchain node, so that blocks can be correctly signed. The private key can be stored in different locations, called "backends", such as a file or the operating system's own key storage. ## Available backends for the keyring diff --git a/docs/user/run-node/03-txs.md b/docs/user/run-node/03-txs.md index 106f02e8e8e8..f459acb88014 100644 --- a/docs/user/run-node/03-txs.md +++ b/docs/user/run-node/03-txs.md @@ -269,7 +269,7 @@ func sendTx() error { ### Broadcasting a Transaction -The preferred way to broadcast a transaction is to use gRPC, though using REST (via `gRPC-gateway`) or the CometBFT RPC is also posible. An overview of the differences between these methods is exposed [here](../../learn/advanced/06-grpc_rest.md). For this tutorial, we will only describe the gRPC method. +The preferred way to broadcast a transaction is to use gRPC, though using REST (via `gRPC-gateway`) or the CometBFT RPC is also possible. An overview of the differences between these methods is exposed [here](../../learn/advanced/06-grpc_rest.md). For this tutorial, we will only describe the gRPC method. ```go import ( diff --git a/docs/user/run-node/04-rosetta.md b/docs/user/run-node/04-rosetta.md index de74d9898b0c..ec983f2b6fe3 100644 --- a/docs/user/run-node/04-rosetta.md +++ b/docs/user/run-node/04-rosetta.md @@ -54,7 +54,7 @@ An implementation example can be found in `simapp` package. To run Rosetta in your application CLI, use the following command: -> **Note:** if using the native approach, add your node name before any rosetta comand. +> **Note:** if using the native approach, add your node name before any rosetta command. ```shell rosetta --help @@ -74,7 +74,7 @@ rosetta ## Plugins - Multi chain connections -Rosetta will try to reflect the node types trough reflection over the node gRPC endpoints, there may be cases were this approach is not enough. It is possible to extend or implement the required types easily trough plugins. +Rosetta will try to reflect the node types through reflection over the node gRPC endpoints, there may be cases were this approach is not enough. It is possible to extend or implement the required types easily through plugins. To use Rosetta over any chain, it is required to set up prefixes and registering zone specific interfaces through plugins. diff --git a/docs/user/run-node/05-run-testnet.md b/docs/user/run-node/05-run-testnet.md index c2b5da598186..9200042e79e1 100644 --- a/docs/user/run-node/05-run-testnet.md +++ b/docs/user/run-node/05-run-testnet.md @@ -34,7 +34,7 @@ The default output directory is a relative `.testnets` directory. Let's take a l ### gentxs -The `gentxs` directory includes a genesis transaction for each validator node. Each file includes a JSON encoded genesis transaction used to register a validator node at the time of genesis. The genesis transactions are added to the `genesis.json` file within each node directory during the initilization process. +The `gentxs` directory includes a genesis transaction for each validator node. Each file includes a JSON encoded genesis transaction used to register a validator node at the time of genesis. The genesis transactions are added to the `genesis.json` file within each node directory during the initialization process. ### nodes diff --git a/docs/user/run-node/06-run-production.md b/docs/user/run-node/06-run-production.md index 73e669e88836..9f3f31677bf2 100644 --- a/docs/user/run-node/06-run-production.md +++ b/docs/user/run-node/06-run-production.md @@ -196,7 +196,7 @@ tmkms softsign import $HOME/tmkms/config/secrets/priv_validator_key.json $HOME/t At this point, it is necessary to delete the `priv_validator_key.json` from the validator node and the tmkms node. Since the key has been imported into tmkms (above) it is no longer necessary on the nodes. The key can be safely stored offline. -4. Modifiy the `tmkms.toml`. +4. Modify the `tmkms.toml`. ```bash vim $HOME/tmkms/config/tmkms.toml diff --git a/x/accounts/defaults/lockup/TUTORIAL.md b/x/accounts/defaults/lockup/TUTORIAL.md index f8ff4bdbee43..507679daf549 100644 --- a/x/accounts/defaults/lockup/TUTORIAL.md +++ b/x/accounts/defaults/lockup/TUTORIAL.md @@ -29,7 +29,7 @@ simd keys add owner Normally the creator must have enough token to grant to the lockup account during the lockup account init process. The owner wallet should be associated with the individual that the creator want to grant the fund to. Now, the creator can craft the lockup account init messages. This message depend on what type of lockup account the creator want to create. -For continous, delayed, permanent locking account: +For continuous, delayed, permanent locking account: ```json { @@ -40,7 +40,7 @@ For continous, delayed, permanent locking account: ``` :::info -`start_time` is only needed for continous locking account init process. For the other two, you dont have to set it in. Error will returned if `start_time` is not provided when creating continous locking account* +`start_time` is only needed for continuous locking account init process. For the other two, you dont have to set it in. Error will returned if `start_time` is not provided when creating continuous locking account* ::: For periodic locking account: @@ -215,7 +215,7 @@ simd tx accounts query $querycontents The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`. And query json file can be an empty object since `QueryLockupAccountInfoRequest` does not required an input. -Account informations including: +Account information including: * original locked amount diff --git a/x/auth/CHANGELOG.md b/x/auth/CHANGELOG.md index d0b1ca0509bb..18d99ca40859 100644 --- a/x/auth/CHANGELOG.md +++ b/x/auth/CHANGELOG.md @@ -60,7 +60,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#18817](https://github.com/cosmos/cosmos-sdk/pull/18817) SigVerification, GasConsumption, IncreaseSequence ante decorators have all been joined into one SigVerification decorator. Gas consumption during TX validation flow has reduced. * [#19093](https://github.com/cosmos/cosmos-sdk/pull/19093) SetPubKeyDecorator was merged into SigVerification, gas consumption is almost halved for a simple tx. * [#19535](https://github.com/cosmos/cosmos-sdk/pull/19535) Remove vesting account creation when the chain is running. The accounts module is required for creating [#vesting accounts](../accounts/defaults/lockup/README.md) on a running chain. -* [#21688](https://github.com/cosmos/cosmos-sdk/pull/21688) Allow x/accounts to be queriable from the `AccountInfo` and `Account` gRPC endpoints +* [#21688](https://github.com/cosmos/cosmos-sdk/pull/21688) Allow x/accounts to be queryable from the `AccountInfo` and `Account` gRPC endpoints * [#21820](https://github.com/cosmos/cosmos-sdk/pull/21820) Allow x/auth `BaseAccount` to migrate to a `x/accounts` via the new `MsgMigrateAccount`. ### Bug Fixes diff --git a/x/bank/README.md b/x/bank/README.md index f6f77f1f947e..fc6c39a9183a 100644 --- a/x/bank/README.md +++ b/x/bank/README.md @@ -589,7 +589,7 @@ The bank module contains the following parameters ### SendEnabled -SendEnabled is depreacted and only kept for backward compatibility. For genesis, use the newly added send_enabled field in the genesis object. Storage, lookup, and manipulation of this information is now in the keeper. +SendEnabled is deprecated and only kept for backward compatibility. For genesis, use the newly added send_enabled field in the genesis object. Storage, lookup, and manipulation of this information is now in the keeper. ### DefaultSendEnabled From ecd53f84971005018cef5e76144e4379d6e4f2e5 Mon Sep 17 00:00:00 2001 From: testinginprod <98415576+testinginprod@users.noreply.github.com> Date: Mon, 9 Dec 2024 15:50:11 +0100 Subject: [PATCH 29/62] feat(x/accounts)!: make address generation more robust and add predictable address creation (#22776) Co-authored-by: Julien Robert --- api/cosmos/accounts/v1/tx.pulsar.go | 256 ++++++++++++------ .../integration/accounts/base_account_test.go | 2 +- tests/integration/accounts/fixture_test.go | 2 +- .../lockup/continous_lockup_test_suite.go | 2 +- .../lockup/delayed_lockup_test_suite.go | 2 +- .../lockup/periodic_lockup_test_suite.go | 2 +- .../lockup/permanent_lockup_test_suite.go | 2 +- .../accounts/multisig/test_suite.go | 2 +- tests/integration/accounts/wiring_test.go | 2 +- .../accounts_retro_compatibility_test.go | 6 +- .../auth/accounts_retro_compatibility_test.go | 6 +- x/accounts/README.md | 26 ++ x/accounts/errors.go | 2 + x/accounts/genesis_test.go | 6 +- x/accounts/keeper.go | 39 ++- x/accounts/keeper_test.go | 8 +- x/accounts/msg_server_test.go | 46 +++- x/accounts/proto/cosmos/accounts/v1/tx.proto | 3 + x/accounts/v1/tx.pb.go | 146 +++++++--- 19 files changed, 387 insertions(+), 173 deletions(-) diff --git a/api/cosmos/accounts/v1/tx.pulsar.go b/api/cosmos/accounts/v1/tx.pulsar.go index ba3f7538ef79..d019140612e6 100644 --- a/api/cosmos/accounts/v1/tx.pulsar.go +++ b/api/cosmos/accounts/v1/tx.pulsar.go @@ -74,6 +74,7 @@ var ( fd_MsgInit_account_type protoreflect.FieldDescriptor fd_MsgInit_message protoreflect.FieldDescriptor fd_MsgInit_funds protoreflect.FieldDescriptor + fd_MsgInit_address_seed protoreflect.FieldDescriptor ) func init() { @@ -83,6 +84,7 @@ func init() { fd_MsgInit_account_type = md_MsgInit.Fields().ByName("account_type") fd_MsgInit_message = md_MsgInit.Fields().ByName("message") fd_MsgInit_funds = md_MsgInit.Fields().ByName("funds") + fd_MsgInit_address_seed = md_MsgInit.Fields().ByName("address_seed") } var _ protoreflect.Message = (*fastReflection_MsgInit)(nil) @@ -174,6 +176,12 @@ func (x *fastReflection_MsgInit) Range(f func(protoreflect.FieldDescriptor, prot return } } + if len(x.AddressSeed) != 0 { + value := protoreflect.ValueOfBytes(x.AddressSeed) + if !f(fd_MsgInit_address_seed, value) { + return + } + } } // Has reports whether a field is populated. @@ -197,6 +205,8 @@ func (x *fastReflection_MsgInit) Has(fd protoreflect.FieldDescriptor) bool { return x.Message != nil case "cosmos.accounts.v1.MsgInit.funds": return len(x.Funds) != 0 + case "cosmos.accounts.v1.MsgInit.address_seed": + return len(x.AddressSeed) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit")) @@ -221,6 +231,8 @@ func (x *fastReflection_MsgInit) Clear(fd protoreflect.FieldDescriptor) { x.Message = nil case "cosmos.accounts.v1.MsgInit.funds": x.Funds = nil + case "cosmos.accounts.v1.MsgInit.address_seed": + x.AddressSeed = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit")) @@ -252,6 +264,9 @@ func (x *fastReflection_MsgInit) Get(descriptor protoreflect.FieldDescriptor) pr } listValue := &_MsgInit_4_list{list: &x.Funds} return protoreflect.ValueOfList(listValue) + case "cosmos.accounts.v1.MsgInit.address_seed": + value := x.AddressSeed + return protoreflect.ValueOfBytes(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit")) @@ -282,6 +297,8 @@ func (x *fastReflection_MsgInit) Set(fd protoreflect.FieldDescriptor, value prot lv := value.List() clv := lv.(*_MsgInit_4_list) x.Funds = *clv.list + case "cosmos.accounts.v1.MsgInit.address_seed": + x.AddressSeed = value.Bytes() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit")) @@ -317,6 +334,8 @@ func (x *fastReflection_MsgInit) Mutable(fd protoreflect.FieldDescriptor) protor panic(fmt.Errorf("field sender of message cosmos.accounts.v1.MsgInit is not mutable")) case "cosmos.accounts.v1.MsgInit.account_type": panic(fmt.Errorf("field account_type of message cosmos.accounts.v1.MsgInit is not mutable")) + case "cosmos.accounts.v1.MsgInit.address_seed": + panic(fmt.Errorf("field address_seed of message cosmos.accounts.v1.MsgInit is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit")) @@ -340,6 +359,8 @@ func (x *fastReflection_MsgInit) NewField(fd protoreflect.FieldDescriptor) proto case "cosmos.accounts.v1.MsgInit.funds": list := []*v1beta1.Coin{} return protoreflect.ValueOfList(&_MsgInit_4_list{list: &list}) + case "cosmos.accounts.v1.MsgInit.address_seed": + return protoreflect.ValueOfBytes(nil) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit")) @@ -427,6 +448,10 @@ func (x *fastReflection_MsgInit) ProtoMethods() *protoiface.Methods { n += 1 + l + runtime.Sov(uint64(l)) } } + l = len(x.AddressSeed) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -456,6 +481,13 @@ func (x *fastReflection_MsgInit) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.AddressSeed) > 0 { + i -= len(x.AddressSeed) + copy(dAtA[i:], x.AddressSeed) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AddressSeed))) + i-- + dAtA[i] = 0x2a + } if len(x.Funds) > 0 { for iNdEx := len(x.Funds) - 1; iNdEx >= 0; iNdEx-- { encoded, err := options.Marshal(x.Funds[iNdEx]) @@ -683,6 +715,40 @@ func (x *fastReflection_MsgInit) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AddressSeed", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.AddressSeed = append(x.AddressSeed[:0], dAtA[iNdEx:postIndex]...) + if x.AddressSeed == nil { + x.AddressSeed = []byte{} + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -4259,6 +4325,9 @@ type MsgInit struct { // funds contains the coins that the account wants to // send alongside the request. Funds []*v1beta1.Coin `protobuf:"bytes,4,rep,name=funds,proto3" json:"funds,omitempty"` + // address_seed can be used to deterministically create the address of the account. + // If not present the address will be generated based on its associated account number. + AddressSeed []byte `protobuf:"bytes,5,opt,name=address_seed,json=addressSeed,proto3" json:"address_seed,omitempty"` } func (x *MsgInit) Reset() { @@ -4309,6 +4378,13 @@ func (x *MsgInit) GetFunds() []*v1beta1.Coin { return nil } +func (x *MsgInit) GetAddressSeed() []byte { + if x != nil { + return x.AddressSeed + } + return nil +} + // MsgInitResponse defines the Create response type for the Msg/Create RPC method. type MsgInitResponse struct { state protoimpl.MessageState @@ -4645,7 +4721,7 @@ var file_cosmos_accounts_v1_tx_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x74, 0x78, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, - 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x01, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x49, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x87, 0x02, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, @@ -4659,95 +4735,97 @@ var file_cosmos_accounts_v1_tx_proto_rawDesc = []byte{ 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, - 0x73, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x6c, - 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, - 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdc, 0x01, 0x0a, - 0x0a, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, - 0x6e, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x61, 0x0a, 0x05, 0x66, - 0x75, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x3a, 0x0b, - 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x46, 0x0a, 0x12, 0x4d, - 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x72, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, - 0x74, 0x78, 0x73, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x72, 0x22, 0xe1, 0x02, 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x54, 0x78, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, - 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, - 0x37, 0x0a, 0x18, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x15, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x19, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, - 0x79, 0x52, 0x17, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x13, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x12, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x5f, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x43, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x64, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x32, 0x8e, 0x02, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x48, - 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x65, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x65, 0x65, 0x64, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x22, 0x6c, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x30, 0x0a, + 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xdc, 0x01, 0x0a, 0x0a, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2e, + 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x61, + 0x0a, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, + 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, + 0x73, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x46, + 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0c, 0x52, 0x03, 0x74, 0x78, 0x73, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x72, 0x22, 0xe1, 0x02, 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x64, + 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x61, 0x73, + 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x61, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x61, 0x73, 0x55, 0x73, + 0x65, 0x64, 0x12, 0x37, 0x0a, 0x18, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x61, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x19, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x17, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x2c, 0x0a, + 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, + 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x13, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x12, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x5f, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x64, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x32, 0x8e, 0x02, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x12, 0x48, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49, - 0x6e, 0x69, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x1a, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x24, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x1a, 0x2c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xbb, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, - 0x76, 0x31, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, - 0x43, 0x41, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, - 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, - 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x14, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x1a, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, + 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, + 0x24, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x1a, 0x2c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xbb, 0x01, 0x0a, 0x16, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x43, 0x41, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x12, 0x43, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x14, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/tests/integration/accounts/base_account_test.go b/tests/integration/accounts/base_account_test.go index 8db4cbf1a9e3..5f239d36c083 100644 --- a/tests/integration/accounts/base_account_test.go +++ b/tests/integration/accounts/base_account_test.go @@ -32,7 +32,7 @@ func TestBaseAccount(t *testing.T) { _, baseAccountAddr, err := ak.Init(ctx, "base", accCreator, &baseaccountv1.MsgInit{ PubKey: toAnyPb(t, privKey.PubKey()), - }, nil) + }, nil, nil) require.NoError(t, err) // fund base account! this will also cause an auth base account to be created diff --git a/tests/integration/accounts/fixture_test.go b/tests/integration/accounts/fixture_test.go index 1f4522f866a5..0cf55d6d9022 100644 --- a/tests/integration/accounts/fixture_test.go +++ b/tests/integration/accounts/fixture_test.go @@ -185,7 +185,7 @@ func initFixture(t *testing.T, f func(ctx context.Context, msg *account_abstract banktypes.RegisterMsgServer(router, bankkeeper.NewMsgServerImpl(bankKeeper)) // init account - _, addr, err := accountsKeeper.Init(integrationApp.Context(), "mock", []byte("system"), &gogotypes.Empty{}, nil) + _, addr, err := accountsKeeper.Init(integrationApp.Context(), "mock", []byte("system"), &gogotypes.Empty{}, nil, nil) require.NoError(t, err) fixture := &fixture{ diff --git a/tests/integration/accounts/lockup/continous_lockup_test_suite.go b/tests/integration/accounts/lockup/continous_lockup_test_suite.go index 40da6a5a9ad0..2fbc794edee9 100644 --- a/tests/integration/accounts/lockup/continous_lockup_test_suite.go +++ b/tests/integration/accounts/lockup/continous_lockup_test_suite.go @@ -34,7 +34,7 @@ func (s *IntegrationTestSuite) TestContinuousLockingAccount() { StartTime: currentTime, // end time in 1 minutes EndTime: currentTime.Add(time.Minute), - }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1000))}) + }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1000))}, nil) require.NoError(t, err) addr, err := app.AuthKeeper.AddressCodec().BytesToString(randAcc) diff --git a/tests/integration/accounts/lockup/delayed_lockup_test_suite.go b/tests/integration/accounts/lockup/delayed_lockup_test_suite.go index 09aa153a468f..ff1131403fb8 100644 --- a/tests/integration/accounts/lockup/delayed_lockup_test_suite.go +++ b/tests/integration/accounts/lockup/delayed_lockup_test_suite.go @@ -33,7 +33,7 @@ func (s *IntegrationTestSuite) TestDelayedLockingAccount() { Owner: ownerAddrStr, // end time in 1 minutes EndTime: currentTime.Add(time.Minute), - }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1000))}) + }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1000))}, nil) require.NoError(t, err) addr, err := app.AuthKeeper.AddressCodec().BytesToString(randAcc) diff --git a/tests/integration/accounts/lockup/periodic_lockup_test_suite.go b/tests/integration/accounts/lockup/periodic_lockup_test_suite.go index f0f1937b623d..3924012d52d6 100644 --- a/tests/integration/accounts/lockup/periodic_lockup_test_suite.go +++ b/tests/integration/accounts/lockup/periodic_lockup_test_suite.go @@ -46,7 +46,7 @@ func (s *IntegrationTestSuite) TestPeriodicLockingAccount() { Length: time.Minute, }, }, - }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1500))}) + }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1500))}, nil) require.NoError(t, err) addr, err := app.AuthKeeper.AddressCodec().BytesToString(randAcc) diff --git a/tests/integration/accounts/lockup/permanent_lockup_test_suite.go b/tests/integration/accounts/lockup/permanent_lockup_test_suite.go index e94107f668d8..1505dbac0c17 100644 --- a/tests/integration/accounts/lockup/permanent_lockup_test_suite.go +++ b/tests/integration/accounts/lockup/permanent_lockup_test_suite.go @@ -30,7 +30,7 @@ func (s *IntegrationTestSuite) TestPermanentLockingAccount() { _, accountAddr, err := app.AccountsKeeper.Init(ctx, lockupaccount.PERMANENT_LOCKING_ACCOUNT, accOwner, &types.MsgInitLockupAccount{ Owner: ownerAddrStr, - }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1000))}) + }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1000))}, nil) require.NoError(t, err) addr, err := app.AuthKeeper.AddressCodec().BytesToString(randAcc) diff --git a/tests/integration/accounts/multisig/test_suite.go b/tests/integration/accounts/multisig/test_suite.go index e22fd9ed3365..631ddb58ab4c 100644 --- a/tests/integration/accounts/multisig/test_suite.go +++ b/tests/integration/accounts/multisig/test_suite.go @@ -85,7 +85,7 @@ func (s *IntegrationTestSuite) initAccount(ctx context.Context, sender []byte, m Revote: false, EarlyExecution: true, }, - }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1000))}) + }, sdk.Coins{sdk.NewCoin("stake", math.NewInt(1000))}, nil) s.NoError(err) accountAddrStr, err := s.app.AuthKeeper.AddressCodec().BytesToString(accountAddr) diff --git a/tests/integration/accounts/wiring_test.go b/tests/integration/accounts/wiring_test.go index a60d941e49a8..3d0a8ed0b5b4 100644 --- a/tests/integration/accounts/wiring_test.go +++ b/tests/integration/accounts/wiring_test.go @@ -28,7 +28,7 @@ func TestDependencies(t *testing.T) { _, counterAddr, err := ak.Init(ctx, "counter", accCreator, &counterv1.MsgInit{ InitialValue: 0, - }, nil) + }, nil, nil) require.NoError(t, err) // test dependencies creatorInitFunds := sdk.NewCoins(sdk.NewInt64Coin("stake", 100_000)) diff --git a/tests/integration/auth/keeper/accounts_retro_compatibility_test.go b/tests/integration/auth/keeper/accounts_retro_compatibility_test.go index 8b388b41a70d..1dcc67458a28 100644 --- a/tests/integration/auth/keeper/accounts_retro_compatibility_test.go +++ b/tests/integration/auth/keeper/accounts_retro_compatibility_test.go @@ -74,7 +74,7 @@ func TestAuthToAccountsGRPCCompat(t *testing.T) { // init three accounts for n, a := range accs { - _, addr, err := f.accountsKeeper.Init(f.app.Context(), n, []byte("me"), &gogotypes.Empty{}, nil) + _, addr, err := f.accountsKeeper.Init(f.app.Context(), n, []byte("me"), &gogotypes.Empty{}, nil, nil) require.NoError(t, err) a.(*mockRetroCompatAccount).address = addr } @@ -132,10 +132,10 @@ func TestAccountsBaseAccountRetroCompat(t *testing.T) { require.NoError(t, err) // we init two accounts to have account num not be zero. - _, _, err = f.accountsKeeper.Init(f.app.Context(), "base", []byte("me"), &basev1.MsgInit{PubKey: anyPk}, nil) + _, _, err = f.accountsKeeper.Init(f.app.Context(), "base", []byte("me"), &basev1.MsgInit{PubKey: anyPk}, nil, nil) require.NoError(t, err) - _, addr, err := f.accountsKeeper.Init(f.app.Context(), "base", []byte("me"), &basev1.MsgInit{PubKey: anyPk}, nil) + _, addr, err := f.accountsKeeper.Init(f.app.Context(), "base", []byte("me"), &basev1.MsgInit{PubKey: anyPk}, nil, nil) require.NoError(t, err) // try to query it via auth diff --git a/tests/integration/v2/auth/accounts_retro_compatibility_test.go b/tests/integration/v2/auth/accounts_retro_compatibility_test.go index 0889a79446e5..ab7c6b476c9c 100644 --- a/tests/integration/v2/auth/accounts_retro_compatibility_test.go +++ b/tests/integration/v2/auth/accounts_retro_compatibility_test.go @@ -99,7 +99,7 @@ func TestAuthToAccountsGRPCCompat(t *testing.T) { // init three accounts for n, a := range accs { - _, addr, err := f.accountsKeeper.Init(f.ctx, n, []byte("me"), &gogotypes.Empty{}, nil) + _, addr, err := f.accountsKeeper.Init(f.ctx, n, []byte("me"), &gogotypes.Empty{}, nil, nil) require.NoError(t, err) a.(*mockRetroCompatAccount).address = addr } @@ -159,10 +159,10 @@ func TestAccountsBaseAccountRetroCompat(t *testing.T) { // we init two accounts. Account number should start with 4 // since the first three accounts are fee_collector, bonded_tokens_pool, not_bonded_tokens_pool // generated by init genesis plus one more genesis account, which make the current account number 4. - _, _, err = f.accountsKeeper.Init(f.ctx, "base", []byte("me"), &basev1.MsgInit{PubKey: anyPk}, nil) + _, _, err = f.accountsKeeper.Init(f.ctx, "base", []byte("me"), &basev1.MsgInit{PubKey: anyPk}, nil, nil) require.NoError(t, err) - _, addr, err := f.accountsKeeper.Init(f.ctx, "base", []byte("me"), &basev1.MsgInit{PubKey: anyPk}, nil) + _, addr, err := f.accountsKeeper.Init(f.ctx, "base", []byte("me"), &basev1.MsgInit{PubKey: anyPk}, nil, nil) require.NoError(t, err) // try to query it via auth diff --git a/x/accounts/README.md b/x/accounts/README.md index c81d8a38883e..c560f18d1fc6 100644 --- a/x/accounts/README.md +++ b/x/accounts/README.md @@ -496,6 +496,32 @@ func (a Account) AuthRetroCompatibility(ctx context.Context, _ *authtypes.QueryL * Implement this handler only for account types you want to expose via x/auth gRPC methods. * The `info` field in the response can be nil if your account doesn't fit the `BaseAccount` structure. +## Address Derivation + +The x/accounts module offers two methods for deriving addresses, both ensuring non-squattability. This means each address is uniquely tied to its creator, preventing address collisions between different creators (e.g., Alice cannot create addresses that would conflict with Bob's addresses). + +### Method 1: Using Address Seeds + +When creating an account via `MsgInit`, you can provide an `address_seed`. The address is derived using: + +```bash +address = sha256(ModuleName || address_seed || creator_address) +``` + +### Method 2: Using Account Numbers +If no address seed is provided, the address is derived using: + +``` +address = sha256(ModuleName || creator_address || next_account_number) +``` + +### Address Seed Best Practices + +1. Address seeds must be unique per creator (not globally unique) +2. Reusing an address seed will cause account creation to fail +3. For programmatic account creation, use an incrementing sequence number as the address seed +4. This is particularly useful for contracts or modules that need deterministic address generation + ## Genesis ### Creating accounts on genesis diff --git a/x/accounts/errors.go b/x/accounts/errors.go index c0a55741aee2..f19551cdc13f 100644 --- a/x/accounts/errors.go +++ b/x/accounts/errors.go @@ -10,4 +10,6 @@ var ( ErrBundlerPayment = errors.New(ModuleName, 2, "bundler payment failed") // ErrExecution is returned when the execution fails. ErrExecution = errors.New(ModuleName, 3, "execution failed") + // ErrAccountAlreadyExists is returned when the account already exists in state. + ErrAccountAlreadyExists = errors.New(ModuleName, 4, "account already exists") ) diff --git a/x/accounts/genesis_test.go b/x/accounts/genesis_test.go index 14c2470d84bd..da500d8039c3 100644 --- a/x/accounts/genesis_test.go +++ b/x/accounts/genesis_test.go @@ -19,13 +19,13 @@ func TestGenesis(t *testing.T) { // we init two accounts of the same type // we set counter to 10 - _, addr1, err := k.Init(ctx, testAccountType, []byte("sender"), &types.Empty{}, nil) + _, addr1, err := k.Init(ctx, testAccountType, []byte("sender"), &types.Empty{}, nil, nil) require.NoError(t, err) _, err = k.Execute(ctx, addr1, []byte("sender"), &types.UInt64Value{Value: 10}, nil) require.NoError(t, err) // we set counter to 20 - _, addr2, err := k.Init(ctx, testAccountType, []byte("sender"), &types.Empty{}, nil) + _, addr2, err := k.Init(ctx, testAccountType, []byte("sender"), &types.Empty{}, nil, nil) require.NoError(t, err) _, err = k.Execute(ctx, addr2, []byte("sender"), &types.UInt64Value{Value: 20}, nil) require.NoError(t, err) @@ -62,7 +62,7 @@ func TestGenesis(t *testing.T) { require.Equal(t, &types.UInt64Value{Value: 20}, resp) // check initted on genesis account - addr3, err := k.makeAddress(2) + addr3, err := k.makeAddress([]byte("sender-2"), 2, nil) require.NoError(t, err) resp, err = k.Query(ctx, addr3, &types.DoubleValue{}) require.NoError(t, err) diff --git a/x/accounts/keeper.go b/x/accounts/keeper.go index cf306dab0e01..056c1c5e1e87 100644 --- a/x/accounts/keeper.go +++ b/x/accounts/keeper.go @@ -148,6 +148,7 @@ func (k Keeper) Init( creator []byte, initRequest transaction.Msg, funds sdk.Coins, + addressSeed []byte, ) (transaction.Msg, []byte, error) { // get the next account number num, err := k.AccountNumber.Next(ctx) @@ -155,7 +156,7 @@ func (k Keeper) Init( return nil, nil, err } // create address - accountAddr, err := k.makeAddress(num) + accountAddr, err := k.makeAddress(creator, num, addressSeed) if err != nil { return nil, nil, err } @@ -180,7 +181,7 @@ func (k Keeper) initFromMsg(ctx context.Context, initMsg *v1.MsgInit) (transacti } // run account creation logic - return k.Init(ctx, initMsg.AccountType, creator, msg, initMsg.Funds) + return k.Init(ctx, initMsg.AccountType, creator, msg, initMsg.Funds, initMsg.AddressSeed) } // init initializes the account, given the type, the creator the newly created account number, its address and the @@ -199,8 +200,17 @@ func (k Keeper) init( return nil, fmt.Errorf("%w: not found %s", errAccountTypeNotFound, accountType) } + // check if account exists + alreadyExists, err := k.AccountsByType.Has(ctx, accountAddr) + if err != nil { + return nil, err + } + if alreadyExists { + return nil, ErrAccountAlreadyExists + } + // send funds, if provided - err := k.maybeSendFunds(ctx, creator, accountAddr, funds) + err = k.maybeSendFunds(ctx, creator, accountAddr, funds) if err != nil { return nil, fmt.Errorf("unable to transfer funds: %w", err) } @@ -307,9 +317,26 @@ func (k Keeper) getImplementation(ctx context.Context, addr []byte) (implementat return impl, nil } -func (k Keeper) makeAddress(accNum uint64) ([]byte, error) { - // TODO: better address scheme, ref: https://github.com/cosmos/cosmos-sdk/issues/17516 - addr := sha256.Sum256(append([]byte("x/accounts"), binary.BigEndian.AppendUint64(nil, accNum)...)) +// makeAddress creates an address for the given account. +// It uses the creator address to ensure address squatting cannot happen, for example +// assuming creator sends funds to a new account X nobody can front-run that address instantiation +// unless the creator itself sends the tx. +// AddressSeed can be used to create predictable addresses, security guarantees of the above are retained. +// If address seed is not provided, the address is created using the creator and account number. +func (k Keeper) makeAddress(creator []byte, accNum uint64, addressSeed []byte) ([]byte, error) { + // in case an address seed is provided, we use it to create the address. + var seed []byte + if len(addressSeed) > 0 { + seed = append(creator, addressSeed...) + } else { + // otherwise we use the creator and account number to create the address. + seed = append(creator, binary.BigEndian.AppendUint64(nil, accNum)...) + } + + moduleAndSeed := append([]byte(ModuleName), seed...) + + addr := sha256.Sum256(moduleAndSeed) + return addr[:], nil } diff --git a/x/accounts/keeper_test.go b/x/accounts/keeper_test.go index b0532cd766c4..ba75abb37966 100644 --- a/x/accounts/keeper_test.go +++ b/x/accounts/keeper_test.go @@ -17,7 +17,7 @@ func TestKeeper_Init(t *testing.T) { t.Run("ok", func(t *testing.T) { sender := []byte("sender") - resp, addr, err := m.Init(ctx, "test", sender, &types.Empty{}, nil) + resp, addr, err := m.Init(ctx, "test", sender, &types.Empty{}, nil, nil) require.NoError(t, err) require.Equal(t, &types.Empty{}, resp) require.NotNil(t, addr) @@ -34,7 +34,7 @@ func TestKeeper_Init(t *testing.T) { }) t.Run("unknown account type", func(t *testing.T) { - _, _, err := m.Init(ctx, "unknown", []byte("sender"), &types.Empty{}, nil) + _, _, err := m.Init(ctx, "unknown", []byte("sender"), &types.Empty{}, nil, nil) require.ErrorIs(t, err, errAccountTypeNotFound) }) } @@ -44,7 +44,7 @@ func TestKeeper_Execute(t *testing.T) { // create account sender := []byte("sender") - _, accAddr, err := m.Init(ctx, "test", sender, &types.Empty{}, nil) + _, accAddr, err := m.Init(ctx, "test", sender, &types.Empty{}, nil, nil) require.NoError(t, err) t.Run("ok", func(t *testing.T) { @@ -70,7 +70,7 @@ func TestKeeper_Query(t *testing.T) { // create account sender := []byte("sender") - _, accAddr, err := m.Init(ctx, "test", sender, &types.Empty{}, nil) + _, accAddr, err := m.Init(ctx, "test", sender, &types.Empty{}, nil, nil) require.NoError(t, err) t.Run("ok", func(t *testing.T) { diff --git a/x/accounts/msg_server_test.go b/x/accounts/msg_server_test.go index 4a5c6fb87d2c..445bb7cb62cc 100644 --- a/x/accounts/msg_server_test.go +++ b/x/accounts/msg_server_test.go @@ -24,24 +24,46 @@ func TestMsgServer(t *testing.T) { Sender: "sender", AccountType: "test", Message: initMsg, + AddressSeed: []byte("seed"), }) require.NoError(t, err) require.NotNil(t, initResp) - // execute - executeMsg := &wrapperspb.StringValue{ - Value: "10", - } - executeMsgAny, err := implementation.PackAny(executeMsg) - require.NoError(t, err) + t.Run("success", func(t *testing.T) { + // execute + executeMsg := &wrapperspb.StringValue{ + Value: "10", + } + executeMsgAny, err := implementation.PackAny(executeMsg) + require.NoError(t, err) - execResp, err := s.Execute(ctx, &v1.MsgExecute{ - Sender: "sender", - Target: initResp.AccountAddress, - Message: executeMsgAny, + execResp, err := s.Execute(ctx, &v1.MsgExecute{ + Sender: "sender", + Target: initResp.AccountAddress, + Message: executeMsgAny, + }) + require.NoError(t, err) + require.NotNil(t, execResp) + }) + + t.Run("fail initting same account twice", func(t *testing.T) { + _, err := s.Init(ctx, &v1.MsgInit{ + Sender: "sender", + AccountType: "test", + Message: initMsg, + AddressSeed: []byte("seed"), + }) + require.ErrorIs(t, err, ErrAccountAlreadyExists) + }) + + t.Run("initting without seed", func(t *testing.T) { + _, err := s.Init(ctx, &v1.MsgInit{ + Sender: "sender", + AccountType: "test", + Message: initMsg, + }) + require.NoError(t, err) }) - require.NoError(t, err) - require.NotNil(t, execResp) } func TestMsgServer_BundlingDisabled(t *testing.T) { diff --git a/x/accounts/proto/cosmos/accounts/v1/tx.proto b/x/accounts/proto/cosmos/accounts/v1/tx.proto index f9f746cace11..33bb238a726a 100644 --- a/x/accounts/proto/cosmos/accounts/v1/tx.proto +++ b/x/accounts/proto/cosmos/accounts/v1/tx.proto @@ -39,6 +39,9 @@ message MsgInit { // send alongside the request. repeated cosmos.base.v1beta1.Coin funds = 4 [(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.nullable) = false]; + // address_seed can be used to deterministically create the address of the account. + // If not present the address will be generated based on its associated account number. + bytes address_seed = 5; } // MsgInitResponse defines the Create response type for the Msg/Create RPC method. diff --git a/x/accounts/v1/tx.pb.go b/x/accounts/v1/tx.pb.go index 953167ab99a1..ea41a0d9c66c 100644 --- a/x/accounts/v1/tx.pb.go +++ b/x/accounts/v1/tx.pb.go @@ -44,6 +44,9 @@ type MsgInit struct { // funds contains the coins that the account wants to // send alongside the request. Funds github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,4,rep,name=funds,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"funds"` + // address_seed can be used to deterministically create the address of the account. + // If not present the address will be generated based on its associated account number. + AddressSeed []byte `protobuf:"bytes,5,opt,name=address_seed,json=addressSeed,proto3" json:"address_seed,omitempty"` } func (m *MsgInit) Reset() { *m = MsgInit{} } @@ -107,6 +110,13 @@ func (m *MsgInit) GetFunds() github_com_cosmos_cosmos_sdk_types.Coins { return nil } +func (m *MsgInit) GetAddressSeed() []byte { + if m != nil { + return m.AddressSeed + } + return nil +} + // MsgInitResponse defines the Create response type for the Msg/Create RPC method. type MsgInitResponse struct { // account_address is the address of the newly created account. @@ -496,51 +506,52 @@ func init() { func init() { proto.RegisterFile("cosmos/accounts/v1/tx.proto", fileDescriptor_29c2b6d8a13d4189) } var fileDescriptor_29c2b6d8a13d4189 = []byte{ - // 690 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0xcb, 0x4e, 0xdb, 0x4c, - 0x14, 0x8e, 0x73, 0xfd, 0x39, 0xe1, 0x2f, 0x74, 0x4a, 0xc1, 0x18, 0xc9, 0xa4, 0xe9, 0x2d, 0x42, - 0xd4, 0x26, 0xb4, 0x6a, 0x25, 0x76, 0x80, 0xe8, 0x45, 0x2a, 0x12, 0x8d, 0xe8, 0xa6, 0x9b, 0xc8, - 0xb1, 0x07, 0x13, 0x41, 0x3c, 0x91, 0xcf, 0x18, 0x25, 0xbb, 0xaa, 0x0f, 0x50, 0xf5, 0x39, 0xba, - 0xe2, 0x31, 0x58, 0xb2, 0xec, 0xa2, 0xea, 0x05, 0x2a, 0xf1, 0x1a, 0x55, 0xc6, 0x33, 0x36, 0xe1, - 0x12, 0xb1, 0xec, 0x2a, 0x33, 0xf3, 0x9d, 0xf3, 0x9d, 0xf3, 0x7d, 0x27, 0x33, 0x86, 0x39, 0x97, - 0x61, 0x87, 0xa1, 0xed, 0xb8, 0x2e, 0x8b, 0x02, 0x8e, 0xf6, 0x41, 0xdd, 0xe6, 0x3d, 0xab, 0x1b, - 0x32, 0xce, 0x08, 0x89, 0x41, 0x4b, 0x81, 0xd6, 0x41, 0xdd, 0x98, 0xf5, 0x19, 0xf3, 0xf7, 0xa9, - 0x2d, 0x22, 0x5a, 0xd1, 0x8e, 0xed, 0x04, 0xfd, 0x38, 0xdc, 0x98, 0x91, 0x5c, 0x1d, 0xf4, 0x07, - 0x34, 0x1d, 0xf4, 0x25, 0x60, 0x4a, 0xa0, 0xe5, 0x20, 0xb5, 0x0f, 0xea, 0x2d, 0xca, 0x9d, 0xba, - 0xed, 0xb2, 0x76, 0x20, 0x71, 0x43, 0xe2, 0xbc, 0x97, 0xa0, 0xaa, 0x07, 0x63, 0xca, 0x67, 0x3e, - 0x13, 0x4b, 0x7b, 0xb0, 0x8a, 0x4f, 0xab, 0x7f, 0x34, 0x28, 0x6d, 0xa2, 0xff, 0x26, 0x68, 0x73, - 0x32, 0x0d, 0x45, 0xa4, 0x81, 0x47, 0x43, 0x5d, 0xab, 0x68, 0xb5, 0xb1, 0x86, 0xdc, 0x91, 0x7b, - 0x30, 0x2e, 0x1b, 0x6f, 0xf2, 0x7e, 0x97, 0xea, 0x59, 0x81, 0x96, 0xe5, 0xd9, 0x76, 0xbf, 0x4b, - 0x89, 0x05, 0xa5, 0x0e, 0x45, 0x74, 0x7c, 0xaa, 0xe7, 0x2a, 0x5a, 0xad, 0xbc, 0x3c, 0x65, 0xc5, - 0xf2, 0x2c, 0x25, 0xcf, 0x5a, 0x0d, 0xfa, 0x0d, 0x15, 0x44, 0x1c, 0x28, 0xec, 0x44, 0x81, 0x87, - 0x7a, 0xbe, 0x92, 0xab, 0x95, 0x97, 0x67, 0x2d, 0x69, 0xd0, 0x40, 0x98, 0x25, 0x5b, 0xb7, 0xd6, - 0x59, 0x3b, 0x58, 0x5b, 0x3a, 0xfa, 0x31, 0x9f, 0xf9, 0xfa, 0x73, 0xbe, 0xe6, 0xb7, 0xf9, 0x6e, - 0xd4, 0xb2, 0x5c, 0xd6, 0xb1, 0xa5, 0xca, 0xf8, 0xe7, 0x09, 0x7a, 0x7b, 0xf6, 0xa0, 0x2f, 0x14, - 0x09, 0xd8, 0x88, 0x99, 0x57, 0xca, 0x9f, 0xce, 0x0e, 0x17, 0xa4, 0x84, 0xea, 0x3e, 0x4c, 0x48, - 0x95, 0x0d, 0x8a, 0x5d, 0x16, 0x20, 0x25, 0x8f, 0x61, 0x42, 0xa9, 0x72, 0x3c, 0x2f, 0xa4, 0x88, - 0x52, 0xf6, 0x2d, 0x79, 0xbc, 0x1a, 0x9f, 0x92, 0x25, 0xf8, 0x2f, 0x94, 0x49, 0x42, 0xfa, 0x75, - 0xe2, 0x92, 0xa8, 0xea, 0x77, 0x0d, 0x60, 0x13, 0xfd, 0x8d, 0x1e, 0x75, 0x23, 0x4e, 0xaf, 0xf5, - 0x75, 0x1a, 0x8a, 0xdc, 0x09, 0x7d, 0xca, 0xa5, 0xa3, 0x72, 0xf7, 0xcf, 0x9b, 0xf9, 0x12, 0x48, - 0xaa, 0x2e, 0xf1, 0xf3, 0xbc, 0x4d, 0xda, 0x8d, 0x6c, 0x7a, 0x0b, 0x93, 0x29, 0xcf, 0x5a, 0x14, - 0x78, 0xfb, 0x94, 0xe8, 0x50, 0x6a, 0x89, 0x95, 0x32, 0x4b, 0x6d, 0xc9, 0x24, 0xe4, 0x78, 0x0f, - 0xf5, 0x6c, 0x25, 0x57, 0x1b, 0x6f, 0x0c, 0x96, 0x2b, 0xe3, 0x83, 0xa6, 0x14, 0x5e, 0xfd, 0x9d, - 0x85, 0xdb, 0x31, 0x89, 0xb7, 0xdd, 0x4b, 0xba, 0x7a, 0x0e, 0x33, 0x4e, 0xc4, 0x77, 0x69, 0xc0, - 0xdb, 0xae, 0xc3, 0xdb, 0x2c, 0x68, 0xfa, 0x0e, 0x36, 0x23, 0xa4, 0x9e, 0xe0, 0xcf, 0x37, 0xee, - 0x0e, 0xc3, 0xaf, 0x1c, 0x7c, 0x8f, 0xd4, 0x23, 0x2f, 0x40, 0x97, 0xc4, 0xcd, 0xae, 0xd3, 0xef, - 0xd0, 0x80, 0xa7, 0x89, 0xd9, 0x38, 0x51, 0xe2, 0x5b, 0x31, 0xac, 0x12, 0xb7, 0x60, 0xf6, 0x62, - 0xa2, 0x12, 0x8c, 0x7a, 0x4e, 0x0c, 0xe8, 0x6a, 0x5f, 0x66, 0x86, 0xf9, 0x94, 0x02, 0x24, 0x8b, - 0x40, 0xa8, 0xf0, 0x68, 0xa8, 0xfb, 0xbc, 0x68, 0x62, 0x32, 0x41, 0x54, 0xfd, 0x0d, 0xb8, 0x93, - 0x46, 0xa7, 0x95, 0x0b, 0x23, 0x2a, 0xa7, 0xf4, 0x69, 0xd1, 0x29, 0x28, 0xd0, 0x30, 0x64, 0xa1, - 0x5e, 0x14, 0x53, 0x88, 0x37, 0xd5, 0x26, 0xe8, 0x17, 0x27, 0x96, 0x38, 0xbd, 0x0e, 0x63, 0x69, - 0x39, 0x4d, 0x94, 0x7b, 0x68, 0x5d, 0x7e, 0xf7, 0xac, 0x4b, 0x33, 0x6a, 0xa4, 0x79, 0xcb, 0x9f, - 0xb3, 0x90, 0xdb, 0x44, 0x9f, 0xbc, 0x86, 0xbc, 0x78, 0x92, 0xe6, 0xae, 0x62, 0x90, 0x37, 0xd9, - 0xb8, 0x3f, 0x02, 0x4c, 0xda, 0x7a, 0x07, 0x25, 0x75, 0x0f, 0xcd, 0x6b, 0xe2, 0x25, 0x6e, 0x3c, - 0x1a, 0x8d, 0x27, 0x94, 0x2e, 0xfc, 0x3f, 0xfc, 0xa7, 0x7d, 0x30, 0x3a, 0x31, 0x8e, 0x32, 0x16, - 0x6f, 0x12, 0xa5, 0x8a, 0x18, 0x85, 0x8f, 0x67, 0x87, 0x0b, 0xda, 0xda, 0xb3, 0xa3, 0x13, 0x53, - 0x3b, 0x3e, 0x31, 0xb5, 0x5f, 0x27, 0xa6, 0xf6, 0xe5, 0xd4, 0xcc, 0x1c, 0x9f, 0x9a, 0x99, 0x6f, - 0xa7, 0x66, 0xe6, 0x83, 0x7c, 0xeb, 0xd1, 0xdb, 0xb3, 0xda, 0xcc, 0xee, 0x9d, 0xff, 0xf0, 0xb4, - 0x8a, 0x62, 0xbe, 0x4f, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x15, 0x7e, 0x1c, 0x2a, 0x95, 0x06, - 0x00, 0x00, + // 709 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0xcb, 0x4e, 0xdb, 0x40, + 0x14, 0x8d, 0xf3, 0x2c, 0x37, 0x69, 0xa1, 0x53, 0x0a, 0xc6, 0x48, 0x26, 0x4d, 0x5f, 0x11, 0xa2, + 0x36, 0xa1, 0x55, 0x2b, 0xb1, 0x03, 0x44, 0x1f, 0x52, 0x91, 0xa8, 0x4b, 0x37, 0xdd, 0x44, 0x8e, + 0x3d, 0x98, 0x08, 0xe2, 0x89, 0x7c, 0xc7, 0x28, 0xd9, 0x55, 0xdd, 0x74, 0x57, 0xf5, 0x3b, 0xba, + 0xe2, 0x33, 0x58, 0xb2, 0xec, 0xa2, 0xea, 0x03, 0x16, 0xfc, 0x46, 0x95, 0xf1, 0xd8, 0x26, 0x3c, + 0x22, 0x96, 0x5d, 0x65, 0x66, 0xce, 0xbd, 0xe7, 0x9e, 0x73, 0x26, 0xb6, 0x61, 0xd6, 0x61, 0xd8, + 0x61, 0x68, 0xda, 0x8e, 0xc3, 0x42, 0x9f, 0xa3, 0xb9, 0xdf, 0x30, 0x79, 0xcf, 0xe8, 0x06, 0x8c, + 0x33, 0x42, 0x22, 0xd0, 0x88, 0x41, 0x63, 0xbf, 0xa1, 0xcd, 0x78, 0x8c, 0x79, 0x7b, 0xd4, 0x14, + 0x15, 0xad, 0x70, 0xdb, 0xb4, 0xfd, 0x7e, 0x54, 0xae, 0x4d, 0x4b, 0xae, 0x0e, 0x7a, 0x03, 0x9a, + 0x0e, 0x7a, 0x12, 0xd0, 0x25, 0xd0, 0xb2, 0x91, 0x9a, 0xfb, 0x8d, 0x16, 0xe5, 0x76, 0xc3, 0x74, + 0x58, 0xdb, 0x97, 0xb8, 0x26, 0x71, 0xde, 0x4b, 0xd0, 0x58, 0x83, 0x36, 0xe9, 0x31, 0x8f, 0x89, + 0xa5, 0x39, 0x58, 0x45, 0xa7, 0xb5, 0x2f, 0x59, 0x28, 0x6d, 0xa0, 0xf7, 0xc6, 0x6f, 0x73, 0x32, + 0x05, 0x45, 0xa4, 0xbe, 0x4b, 0x03, 0x55, 0xa9, 0x2a, 0xf5, 0x31, 0x4b, 0xee, 0xc8, 0x3d, 0xa8, + 0x48, 0xe1, 0x4d, 0xde, 0xef, 0x52, 0x35, 0x2b, 0xd0, 0xb2, 0x3c, 0xdb, 0xea, 0x77, 0x29, 0x31, + 0xa0, 0xd4, 0xa1, 0x88, 0xb6, 0x47, 0xd5, 0x5c, 0x55, 0xa9, 0x97, 0x97, 0x26, 0x8d, 0xc8, 0x9e, + 0x11, 0xdb, 0x33, 0x56, 0xfc, 0xbe, 0x15, 0x17, 0x11, 0x1b, 0x0a, 0xdb, 0xa1, 0xef, 0xa2, 0x9a, + 0xaf, 0xe6, 0xea, 0xe5, 0xa5, 0x19, 0x43, 0x06, 0x34, 0x30, 0x66, 0x48, 0xe9, 0xc6, 0x1a, 0x6b, + 0xfb, 0xab, 0x8b, 0x87, 0xbf, 0xe6, 0x32, 0xdf, 0x7f, 0xcf, 0xd5, 0xbd, 0x36, 0xdf, 0x09, 0x5b, + 0x86, 0xc3, 0x3a, 0xa6, 0x74, 0x19, 0xfd, 0x3c, 0x41, 0x77, 0xd7, 0x1c, 0xe8, 0x42, 0xd1, 0x80, + 0x56, 0xc4, 0x2c, 0x54, 0xbb, 0x6e, 0x40, 0x11, 0x9b, 0x48, 0xa9, 0xab, 0x16, 0xaa, 0x4a, 0xbd, + 0x62, 0x95, 0xe5, 0xd9, 0x7b, 0x4a, 0xdd, 0xe5, 0xf2, 0xe7, 0xd3, 0x83, 0x79, 0xe9, 0xb2, 0xb6, + 0x07, 0xe3, 0x32, 0x08, 0x8b, 0x62, 0x97, 0xf9, 0x48, 0xc9, 0x63, 0x18, 0x8f, 0x8d, 0xcb, 0x36, + 0x99, 0xcc, 0x2d, 0x79, 0xbc, 0x12, 0x9d, 0x92, 0x45, 0xb8, 0x11, 0xc8, 0x26, 0x91, 0xce, 0x55, + 0xfe, 0x93, 0xaa, 0xda, 0x4f, 0x05, 0x60, 0x03, 0xbd, 0xf5, 0x1e, 0x75, 0x42, 0x4e, 0xaf, 0x8c, + 0x7e, 0x0a, 0x8a, 0xdc, 0x0e, 0x3c, 0xca, 0x65, 0xe8, 0x72, 0xf7, 0x1f, 0xe6, 0x3d, 0x1c, 0xe6, + 0x4b, 0x20, 0xa9, 0xbb, 0x24, 0xcf, 0xb3, 0x31, 0x29, 0xd7, 0x8a, 0xe9, 0x2d, 0x4c, 0xa4, 0x3c, + 0xab, 0xa1, 0xef, 0xee, 0x51, 0xa2, 0x42, 0xa9, 0x25, 0x56, 0x71, 0x58, 0xf1, 0x96, 0x4c, 0x40, + 0x8e, 0xf7, 0x50, 0xcd, 0x56, 0x73, 0xf5, 0x8a, 0x35, 0x58, 0x2e, 0x57, 0x06, 0xa2, 0x62, 0xbc, + 0xf6, 0x37, 0x0b, 0xb7, 0x23, 0x12, 0x77, 0xab, 0x97, 0xa8, 0x7a, 0x0e, 0xd3, 0x76, 0xc8, 0x77, + 0xa8, 0xcf, 0xdb, 0x8e, 0xcd, 0xdb, 0xcc, 0x6f, 0x7a, 0x36, 0x36, 0x43, 0xa4, 0xae, 0xe0, 0xcf, + 0x5b, 0x77, 0x87, 0xe1, 0x57, 0x36, 0x7e, 0x40, 0xea, 0x92, 0x17, 0xa0, 0x4a, 0xe2, 0x66, 0xd7, + 0xee, 0x77, 0xa8, 0xcf, 0xd3, 0xc6, 0x6c, 0xd4, 0x28, 0xf1, 0xcd, 0x08, 0x8e, 0x1b, 0x37, 0x61, + 0xe6, 0x7c, 0x63, 0x6c, 0x18, 0xd5, 0x9c, 0xb8, 0xa0, 0xcb, 0x73, 0x99, 0x1e, 0xe6, 0x8b, 0x1d, + 0x20, 0x59, 0x00, 0x42, 0x45, 0x46, 0x43, 0xea, 0xf3, 0x42, 0xc4, 0x44, 0x82, 0xc4, 0xf3, 0xd7, + 0xe1, 0x4e, 0x5a, 0x9d, 0x4e, 0x2e, 0x8c, 0x98, 0x9c, 0xd2, 0xa7, 0x43, 0x27, 0xa1, 0x40, 0x83, + 0x80, 0x05, 0x6a, 0x51, 0xdc, 0x42, 0xb4, 0xa9, 0x35, 0x41, 0x3d, 0x7f, 0x63, 0x49, 0xd2, 0x6b, + 0x30, 0x96, 0x8e, 0x53, 0xc4, 0xb8, 0x87, 0xc6, 0xc5, 0x57, 0xa3, 0x71, 0xe1, 0x8e, 0xac, 0xb4, + 0x6f, 0xe9, 0x6b, 0x16, 0x72, 0x1b, 0xe8, 0x91, 0xd7, 0x90, 0x17, 0x6f, 0xad, 0xd9, 0xcb, 0x18, + 0xe4, 0x93, 0xac, 0xdd, 0x1f, 0x01, 0x26, 0xb2, 0xde, 0x41, 0x29, 0x7e, 0x0e, 0xf5, 0x2b, 0xea, + 0x25, 0xae, 0x3d, 0x1a, 0x8d, 0x27, 0x94, 0x0e, 0xdc, 0x1c, 0xfe, 0xd3, 0x3e, 0x18, 0xdd, 0x18, + 0x55, 0x69, 0x0b, 0xd7, 0xa9, 0x8a, 0x87, 0x68, 0x85, 0x4f, 0xa7, 0x07, 0xf3, 0xca, 0xea, 0xb3, + 0xc3, 0x63, 0x5d, 0x39, 0x3a, 0xd6, 0x95, 0x3f, 0xc7, 0xba, 0xf2, 0xed, 0x44, 0xcf, 0x1c, 0x9d, + 0xe8, 0x99, 0x1f, 0x27, 0x7a, 0xe6, 0xa3, 0xfc, 0x1c, 0xa0, 0xbb, 0x6b, 0xb4, 0x99, 0xd9, 0x3b, + 0xfb, 0x6d, 0x6a, 0x15, 0xc5, 0xfd, 0x3e, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0x53, 0x6a, 0x24, + 0xdc, 0xb8, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -724,6 +735,13 @@ func (m *MsgInit) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.AddressSeed) > 0 { + i -= len(m.AddressSeed) + copy(dAtA[i:], m.AddressSeed) + i = encodeVarintTx(dAtA, i, uint64(len(m.AddressSeed))) + i-- + dAtA[i] = 0x2a + } if len(m.Funds) > 0 { for iNdEx := len(m.Funds) - 1; iNdEx >= 0; iNdEx-- { { @@ -1091,6 +1109,10 @@ func (m *MsgInit) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } } + l = len(m.AddressSeed) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1388,6 +1410,40 @@ func (m *MsgInit) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AddressSeed", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AddressSeed = append(m.AddressSeed[:0], dAtA[iNdEx:postIndex]...) + if m.AddressSeed == nil { + m.AddressSeed = []byte{} + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) From 34f407d6367a16b7cc21ac9bded75f1ed8678fc2 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 9 Dec 2024 15:53:49 +0100 Subject: [PATCH 30/62] test(systemtests): fix export v2 (#22799) --- server/v2/store/server.go | 4 +--- simapp/v2/app_test.go | 4 ++-- simapp/v2/export.go | 6 ++++++ store/db/prefixdb_test.go | 5 +++-- store/v2/root/builder.go | 5 +++++ tests/integration/v2/distribution/fixture_test.go | 1 - tests/systemtests/go.mod | 2 +- tests/systemtests/go.sum | 4 ++-- x/genutil/v2/cli/commands.go | 2 +- x/genutil/v2/cli/export.go | 5 ++++- 10 files changed, 25 insertions(+), 13 deletions(-) diff --git a/server/v2/store/server.go b/server/v2/store/server.go index 44b1ddcac710..ec6d2d14e133 100644 --- a/server/v2/store/server.go +++ b/server/v2/store/server.go @@ -78,9 +78,7 @@ func (s *Server[T]) Config() any { // An empty home directory *is* permitted at this stage, but attempting to build // the store with an empty home directory will fail. func UnmarshalConfig(cfg map[string]any) (*root.Config, error) { - config := &root.Config{ - Options: root.DefaultStoreOptions(), - } + config := root.DefaultConfig() if err := serverv2.UnmarshalSubConfig(cfg, ServerName, config); err != nil { return nil, fmt.Errorf("failed to unmarshal store config: %w", err) } diff --git a/simapp/v2/app_test.go b/simapp/v2/app_test.go index 3ea361e3becb..2c11beca7caf 100644 --- a/simapp/v2/app_test.go +++ b/simapp/v2/app_test.go @@ -153,13 +153,13 @@ func TestSimAppExportAndBlockedAddrs_WithOneBlockProduced(t *testing.T) { MoveNextBlock(t, app, ctx) - _, err := app.ExportAppStateAndValidators(nil) + _, err := app.ExportAppStateAndValidators(false, nil) require.NoError(t, err) } func TestSimAppExportAndBlockedAddrs_NoBlocksProduced(t *testing.T) { app, _ := NewTestApp(t) - _, err := app.ExportAppStateAndValidators(nil) + _, err := app.ExportAppStateAndValidators(false, nil) require.NoError(t, err) } diff --git a/simapp/v2/export.go b/simapp/v2/export.go index 61175f41607f..04701bc6874f 100644 --- a/simapp/v2/export.go +++ b/simapp/v2/export.go @@ -13,7 +13,9 @@ import ( // file. // This is a demonstation of how to export a genesis file. Export may need extended at // the user discretion for cleaning the genesis state at the end provided with jailAllowedAddrs +// Same applies for forZeroHeight preprocessing. func (app *SimApp[T]) ExportAppStateAndValidators( + forZeroHeight bool, jailAllowedAddrs []string, ) (v2.ExportedApp, error) { ctx := context.Background() @@ -44,5 +46,9 @@ func (app *SimApp[T]) ExportAppStateAndValidators( exportedApp.AppState = genesis exportedApp.Height = int64(latestHeight) + if forZeroHeight { + exportedApp.Height = 0 + } + return exportedApp, nil } diff --git a/store/db/prefixdb_test.go b/store/db/prefixdb_test.go index 199aa50d056a..3f25feabe3be 100644 --- a/store/db/prefixdb_test.go +++ b/store/db/prefixdb_test.go @@ -3,10 +3,11 @@ package db_test import ( "testing" - "cosmossdk.io/store/db" - "cosmossdk.io/store/mock" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" + + "cosmossdk.io/store/db" + "cosmossdk.io/store/mock" ) func TestPrefixDB(t *testing.T) { diff --git a/store/v2/root/builder.go b/store/v2/root/builder.go index 199184f8e761..a282c9fe3328 100644 --- a/store/v2/root/builder.go +++ b/store/v2/root/builder.go @@ -55,6 +55,11 @@ func (sb *builder) Build( if config.Home == "" { return nil, fmt.Errorf("home directory is required") } + + if len(config.AppDBBackend) == 0 { + return nil, fmt.Errorf("application db backend is required") + } + scRawDb, err := db.NewDB( db.DBType(config.AppDBBackend), "application", diff --git a/tests/integration/v2/distribution/fixture_test.go b/tests/integration/v2/distribution/fixture_test.go index d2ea156b5b69..f84278be5555 100644 --- a/tests/integration/v2/distribution/fixture_test.go +++ b/tests/integration/v2/distribution/fixture_test.go @@ -156,5 +156,4 @@ func (s *fixture) registerMsgRouterService(router *integration.RouterService) { func (s *fixture) registerQueryRouterService(router *integration.RouterService) { // register custom router service - } diff --git a/tests/systemtests/go.mod b/tests/systemtests/go.mod index 538ee4c11c20..6ffc4a0b9f5f 100644 --- a/tests/systemtests/go.mod +++ b/tests/systemtests/go.mod @@ -4,7 +4,7 @@ go 1.23 require ( cosmossdk.io/math v1.4.0 - cosmossdk.io/systemtests v1.0.0-rc.2.0.20241205143753-9e94ea87f6e4 + cosmossdk.io/systemtests v1.0.0-rc.3 github.com/cosmos/cosmos-sdk v0.50.6 ) diff --git a/tests/systemtests/go.sum b/tests/systemtests/go.sum index e8228123732a..71d65c5309e4 100644 --- a/tests/systemtests/go.sum +++ b/tests/systemtests/go.sum @@ -16,8 +16,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= -cosmossdk.io/systemtests v1.0.0-rc.2.0.20241205143753-9e94ea87f6e4 h1:gt0rrxBW4x9KM3+ES8Gy5BZbKIHI3AspYEuvWZO6fgU= -cosmossdk.io/systemtests v1.0.0-rc.2.0.20241205143753-9e94ea87f6e4/go.mod h1:B3RY1tY/iwLjQ9MUTz+GsiXV9gEdS8mfUvSQtWUwaAo= +cosmossdk.io/systemtests v1.0.0-rc.3 h1:W1ZdfHtWxbzRCiBwcMb1nMKkmUNyAcHapJOrfh1lX20= +cosmossdk.io/systemtests v1.0.0-rc.3/go.mod h1:B3RY1tY/iwLjQ9MUTz+GsiXV9gEdS8mfUvSQtWUwaAo= cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894 h1:kHEvzVqpNv/9pnaEPBsgE/FMc+cVmWjSsInRufkZkpQ= cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894/go.mod h1:Tb6/tpONmtL5qFdOMdv1pdvrtJNxcazZBoz04HB71ss= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= diff --git a/x/genutil/v2/cli/commands.go b/x/genutil/v2/cli/commands.go index 6812345d23ba..8e27cbafc04b 100644 --- a/x/genutil/v2/cli/commands.go +++ b/x/genutil/v2/cli/commands.go @@ -20,7 +20,7 @@ type genesisMM interface { } type ExportableApp interface { - ExportAppStateAndValidators([]string) (v2.ExportedApp, error) + ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs []string) (v2.ExportedApp, error) LoadHeight(uint64) error } diff --git a/x/genutil/v2/cli/export.go b/x/genutil/v2/cli/export.go index c53236d49329..812201c322fd 100644 --- a/x/genutil/v2/cli/export.go +++ b/x/genutil/v2/cli/export.go @@ -17,6 +17,7 @@ import ( const ( flagHeight = "height" + flagForZeroHeight = "for-zero-height" flagJailAllowedAddrs = "jail-allowed-addrs" ) @@ -56,6 +57,7 @@ func ExportCmd(app ExportableApp) *cobra.Command { } height, _ := cmd.Flags().GetInt64(flagHeight) + forZeroHeight, _ := cmd.Flags().GetBool(flagForZeroHeight) jailAllowedAddrs, _ := cmd.Flags().GetStringSlice(flagJailAllowedAddrs) outputDocument, _ := cmd.Flags().GetString(flags.FlagOutputDocument) if height != -1 { @@ -63,7 +65,7 @@ func ExportCmd(app ExportableApp) *cobra.Command { return err } } - exported, err := app.ExportAppStateAndValidators(jailAllowedAddrs) + exported, err := app.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) if err != nil { return fmt.Errorf("error exporting state: %w", err) } @@ -105,6 +107,7 @@ func ExportCmd(app ExportableApp) *cobra.Command { StringSlice(flagJailAllowedAddrs, []string{}, "Comma-separated list of operator addresses of jailed validators to unjail") cmd.Flags(). String(flags.FlagOutputDocument, "", "Exported state is written to the given file instead of STDOUT") + cmd.Flags().Bool(flagForZeroHeight, false, "Export state to start at height zero (perform preproccessing)") return cmd } From 332d0b106d1b98538187b24394b912616c97b185 Mon Sep 17 00:00:00 2001 From: Facundo Medica <14063057+facundomedica@users.noreply.github.com> Date: Mon, 9 Dec 2024 19:36:24 +0100 Subject: [PATCH 31/62] feat(indexer/postgres)!: add basic support for header, txs and events (#22695) --- baseapp/abci.go | 4 ++ baseapp/streaming.go | 39 ++++++++++++++----- codec/collections.go | 1 + go.mod | 1 + go.sum | 2 - indexer/postgres/base_sql.go | 14 ++++--- indexer/postgres/listener.go | 68 +++++++++++++++++++++++++++++++++ runtime/v2/app.go | 5 +++ runtime/v2/go.mod | 1 + runtime/v2/go.sum | 2 - schema/appdata/data.go | 6 +++ schema/decoding/middleware.go | 3 +- server/v2/cometbft/abci.go | 9 +++-- server/v2/cometbft/go.mod | 1 + server/v2/cometbft/go.sum | 2 - server/v2/cometbft/streaming.go | 11 ++++-- server/v2/go.mod | 1 + server/v2/go.sum | 2 - server/v2/stf/go.mod | 2 + server/v2/stf/go.sum | 2 - server/v2/stf/stf.go | 5 +++ simapp/go.mod | 2 + simapp/go.sum | 5 --- simapp/v2/app_di.go | 3 ++ simapp/v2/go.mod | 7 ++++ simapp/v2/go.sum | 10 ++++- tests/go.mod | 1 + tests/go.sum | 3 -- x/accounts/go.mod | 3 +- x/accounts/go.sum | 2 - x/accounts/keeper.go | 11 ++++-- x/accounts/module.go | 8 ++++ x/distribution/go.mod | 1 + x/distribution/go.sum | 2 - 34 files changed, 187 insertions(+), 52 deletions(-) diff --git a/baseapp/abci.go b/baseapp/abci.go index 491c40ae5a6e..608ea1e70c88 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -999,6 +999,10 @@ func (app *BaseApp) Commit() (*abci.CommitResponse, error) { app.logger.Error("Commit listening hook failed", "height", blockHeight, "err", err) if app.streamingManager.StopNodeOnErr { err = fmt.Errorf("Commit listening hook failed: %w", err) + if blockHeight == 1 { + // can't rollback to height 0, so just return the error + return nil, fmt.Errorf("failed to commit block 1, can't automatically rollback: %w", err) + } rollbackErr := app.cms.RollbackToVersion(blockHeight - 1) if rollbackErr != nil { return nil, errors.Join(err, rollbackErr) diff --git a/baseapp/streaming.go b/baseapp/streaming.go index 3e30f8888d58..7d88c2d196f7 100644 --- a/baseapp/streaming.go +++ b/baseapp/streaming.go @@ -2,6 +2,7 @@ package baseapp import ( "context" + "encoding/json" "fmt" "sort" "strconv" @@ -20,6 +21,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" servertypes "github.com/cosmos/cosmos-sdk/server/types" + sdk "github.com/cosmos/cosmos-sdk/types" ) const ( @@ -48,7 +50,7 @@ func (app *BaseApp) EnableIndexer(indexerOpts interface{}, keys map[string]*stor app.cms.AddListeners(exposedKeys) app.streamingManager = storetypes.StreamingManager{ - ABCIListeners: []storetypes.ABCIListener{listenerWrapper{listener.Listener}}, + ABCIListeners: []storetypes.ABCIListener{listenerWrapper{listener.Listener, app.txDecoder}}, StopNodeOnErr: true, } @@ -144,9 +146,10 @@ func exposeStoreKeysSorted(keysStr []string, keys map[string]*storetypes.KVStore return exposeStoreKeys } -func eventToAppDataEvent(event abci.Event) (appdata.Event, error) { +func eventToAppDataEvent(event abci.Event, height int64) (appdata.Event, error) { appdataEvent := appdata.Event{ - Type: event.Type, + BlockNumber: uint64(height), + Type: event.Type, Attributes: func() ([]appdata.EventAttribute, error) { attrs := make([]appdata.EventAttribute, len(event.Attributes)) for j, attr := range event.Attributes { @@ -197,7 +200,8 @@ func eventToAppDataEvent(event abci.Event) (appdata.Event, error) { } type listenerWrapper struct { - listener appdata.Listener + listener appdata.Listener + txDecoder sdk.TxDecoder } // NewListenerWrapper creates a new listenerWrapper. @@ -208,10 +212,16 @@ func NewListenerWrapper(listener appdata.Listener) listenerWrapper { func (p listenerWrapper) ListenFinalizeBlock(_ context.Context, req abci.FinalizeBlockRequest, res abci.FinalizeBlockResponse) error { if p.listener.StartBlock != nil { + // clean up redundant data + reqWithoutTxs := req + reqWithoutTxs.Txs = nil + if err := p.listener.StartBlock(appdata.StartBlockData{ Height: uint64(req.Height), HeaderBytes: nil, // TODO: https://github.com/cosmos/cosmos-sdk/issues/22009 - HeaderJSON: nil, // TODO: https://github.com/cosmos/cosmos-sdk/issues/22009 + HeaderJSON: func() (json.RawMessage, error) { + return json.Marshal(reqWithoutTxs) + }, }); err != nil { return err } @@ -219,9 +229,18 @@ func (p listenerWrapper) ListenFinalizeBlock(_ context.Context, req abci.Finaliz if p.listener.OnTx != nil { for i, tx := range req.Txs { if err := p.listener.OnTx(appdata.TxData{ - TxIndex: int32(i), - Bytes: func() ([]byte, error) { return tx, nil }, - JSON: nil, // TODO: https://github.com/cosmos/cosmos-sdk/issues/22009 + BlockNumber: uint64(req.Height), + TxIndex: int32(i), + Bytes: func() ([]byte, error) { return tx, nil }, + JSON: func() (json.RawMessage, error) { + sdkTx, err := p.txDecoder(tx) + if err != nil { + // if the transaction cannot be decoded, return the error as JSON + // as there are some txs that might not be decodeable by the txDecoder + return json.Marshal(err) + } + return json.Marshal(sdkTx) + }, }); err != nil { return err } @@ -231,14 +250,14 @@ func (p listenerWrapper) ListenFinalizeBlock(_ context.Context, req abci.Finaliz events := make([]appdata.Event, len(res.Events)) var err error for i, event := range res.Events { - events[i], err = eventToAppDataEvent(event) + events[i], err = eventToAppDataEvent(event, req.Height) if err != nil { return err } } for _, txResult := range res.TxResults { for _, event := range txResult.Events { - appdataEvent, err := eventToAppDataEvent(event) + appdataEvent, err := eventToAppDataEvent(event, req.Height) if err != nil { return err } diff --git a/codec/collections.go b/codec/collections.go index 3694558ad5c3..d21a9a92484d 100644 --- a/codec/collections.go +++ b/codec/collections.go @@ -398,6 +398,7 @@ func protoCol(f protoreflect.FieldDescriptor) schema.Field { col.Kind = schema.StringKind case protoreflect.BytesKind: col.Kind = schema.BytesKind + col.Nullable = true case protoreflect.EnumKind: // TODO: support enums col.Kind = schema.EnumKind diff --git a/go.mod b/go.mod index 73e8e62295d6..e8d432d94e37 100644 --- a/go.mod +++ b/go.mod @@ -186,6 +186,7 @@ require ( // TODO remove after all modules have their own go.mods replace ( cosmossdk.io/api => ./api + cosmossdk.io/schema => ./schema cosmossdk.io/store => ./store cosmossdk.io/x/bank => ./x/bank cosmossdk.io/x/staking => ./x/staking diff --git a/go.sum b/go.sum index 365cf1840f7d..3623aaea28a6 100644 --- a/go.sum +++ b/go.sum @@ -18,8 +18,6 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/indexer/postgres/base_sql.go b/indexer/postgres/base_sql.go index ac79b0929a49..7721d96bf400 100644 --- a/indexer/postgres/base_sql.go +++ b/indexer/postgres/base_sql.go @@ -17,17 +17,19 @@ CREATE TABLE IF NOT EXISTS tx id BIGSERIAL PRIMARY KEY, block_number BIGINT NOT NULL REFERENCES block (number), index_in_block BIGINT NOT NULL, - data JSONB NOT NULL + data JSONB NULL, + bytes BYTEA NULL ); CREATE TABLE IF NOT EXISTS event ( id BIGSERIAL PRIMARY KEY, block_number BIGINT NOT NULL REFERENCES block (number), - tx_id BIGINT NULL REFERENCES tx (id), - msg_index BIGINT NULL, - event_index BIGINT NULL, - type TEXT NOT NULL, - data JSONB NOT NULL + block_stage INTEGER NOT NULL, + tx_index BIGINT NOT NULL, + msg_index BIGINT NOT NULL, + event_index BIGINT NOT NULL, + type TEXT NULL, + data JSONB NULL ); ` diff --git a/indexer/postgres/listener.go b/indexer/postgres/listener.go index c2e982e2b02f..b7199ea5f0b0 100644 --- a/indexer/postgres/listener.go +++ b/indexer/postgres/listener.go @@ -1,6 +1,7 @@ package postgres import ( + "encoding/json" "fmt" "cosmossdk.io/schema/appdata" @@ -81,5 +82,72 @@ func (i *indexerImpl) listener() appdata.Listener { i.tx, err = i.db.BeginTx(i.ctx, nil) return nil, err }, + OnTx: txListener(i), + OnEvent: eventListener(i), + } +} + +func txListener(i *indexerImpl) func(data appdata.TxData) error { + return func(td appdata.TxData) error { + var bz []byte + if td.Bytes != nil { + var err error + bz, err = td.Bytes() + if err != nil { + return err + } + } + + var jsonData json.RawMessage + if td.JSON != nil { + var err error + jsonData, err = td.JSON() + if err != nil { + return err + } + } + + _, err := i.tx.Exec("INSERT INTO tx (block_number, index_in_block, data, bytes) VALUES ($1, $2, $3, $4)", + td.BlockNumber, td.TxIndex, jsonData, bz) + + return err + } +} + +func eventListener(i *indexerImpl) func(data appdata.EventData) error { + return func(data appdata.EventData) error { + for _, e := range data.Events { + var jsonData json.RawMessage + + if e.Data != nil { + var err error + jsonData, err = e.Data() + if err != nil { + return fmt.Errorf("failed to get event data: %w", err) + } + } else if e.Attributes != nil { + attrs, err := e.Attributes() + if err != nil { + return fmt.Errorf("failed to get event attributes: %w", err) + } + + attrsMap := map[string]interface{}{} + for _, attr := range attrs { + attrsMap[attr.Key] = attr.Value + } + + jsonData, err = json.Marshal(attrsMap) + if err != nil { + return fmt.Errorf("failed to marshal event attributes: %w", err) + } + } + + _, err := i.tx.Exec("INSERT INTO event (block_number, block_stage, tx_index, msg_index, event_index, type, data) VALUES ($1, $2, $3, $4, $5, $6, $7)", + e.BlockNumber, e.BlockStage, e.TxIndex, e.MsgIndex, e.EventIndex, e.Type, jsonData) + if err != nil { + return fmt.Errorf("failed to index event: %w", err) + } + } + return nil } } diff --git a/runtime/v2/app.go b/runtime/v2/app.go index 0c017fdcbcd9..f2128b219def 100644 --- a/runtime/v2/app.go +++ b/runtime/v2/app.go @@ -94,6 +94,11 @@ func (a *App[T]) SchemaDecoderResolver() decoding.DecoderResolver { for moduleName, module := range a.moduleManager.Modules() { moduleSet[moduleName] = module } + + for _, overrideKey := range a.config.OverrideStoreKeys { + moduleSet[overrideKey.KvStoreKey] = moduleSet[overrideKey.ModuleName] + } + return decoding.ModuleSetDecoderResolver(moduleSet) } diff --git a/runtime/v2/go.mod b/runtime/v2/go.mod index a586442b1e61..c190c61b80e0 100644 --- a/runtime/v2/go.mod +++ b/runtime/v2/go.mod @@ -6,6 +6,7 @@ go 1.23 replace ( cosmossdk.io/api => ../../api cosmossdk.io/core/testing => ../../core/testing + cosmossdk.io/schema => ../../schema cosmossdk.io/server/v2/appmanager => ../../server/v2/appmanager cosmossdk.io/server/v2/stf => ../../server/v2/stf cosmossdk.io/store/v2 => ../../store/v2 diff --git a/runtime/v2/go.sum b/runtime/v2/go.sum index 82a468165c79..45249c90627d 100644 --- a/runtime/v2/go.sum +++ b/runtime/v2/go.sum @@ -10,8 +10,6 @@ cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 h1:IQNdY2kB+k+1OM2DvqF cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5/go.mod h1:0CuYKkFHxc1vw2JC+t21THBCALJVROrWVR/3PQ1urpc= cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= -cosmossdk.io/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= diff --git a/schema/appdata/data.go b/schema/appdata/data.go index 9b8ecc058565..1fdb15864b54 100644 --- a/schema/appdata/data.go +++ b/schema/appdata/data.go @@ -31,6 +31,9 @@ type StartBlockData struct { // TxData represents the raw transaction data that is passed to a listener. type TxData struct { + // BlockNumber is the block number to which this event is associated. + BlockNumber uint64 + // TxIndex is the index of the transaction in the block. TxIndex int32 @@ -53,6 +56,9 @@ type Event struct { // If the block stage is unknown, it should be set to UnknownBlockStage. BlockStage BlockStage + // BlockNumber is the block number to which this event is associated. + BlockNumber uint64 + // TxIndex is the 1-based index of the transaction in the block to which this event is associated. // If TxIndex is zero, it means that we do not know the transaction index. // Otherwise, the index should start with 1. diff --git a/schema/decoding/middleware.go b/schema/decoding/middleware.go index 2c269dcab417..667f893e73d7 100644 --- a/schema/decoding/middleware.go +++ b/schema/decoding/middleware.go @@ -40,7 +40,8 @@ func Middleware(target appdata.Listener, resolver DecoderResolver, opts Middlewa var err error moduleName, err = resolver.DecodeModuleName(kvUpdate.Actor) if err != nil { - return err + // we don't have a codec for this module so continue + continue } moduleNames[string(kvUpdate.Actor)] = moduleName diff --git a/server/v2/cometbft/abci.go b/server/v2/cometbft/abci.go index c376f4ac2690..1a3f870b266e 100644 --- a/server/v2/cometbft/abci.go +++ b/server/v2/cometbft/abci.go @@ -547,7 +547,7 @@ func (c *consensus[T]) FinalizeBlock( events = append(events, resp.EndBlockEvents...) // listen to state streaming changes in accordance with the block - err = c.streamDeliverBlockChanges(ctx, req.Height, req.Txs, resp.TxResults, events, stateChanges) + err = c.streamDeliverBlockChanges(ctx, req.Height, req.Txs, decodedTxs, resp.TxResults, events, stateChanges) if err != nil { return nil, err } @@ -590,7 +590,7 @@ func (c *consensus[T]) internalFinalizeBlock( // TODO(tip): can we expect some txs to not decode? if so, what we do in this case? this does not seem to be the case, // considering that prepare and process always decode txs, assuming they're the ones providing txs we should never // have a tx that fails decoding. - decodedTxs, err := decodeTxs(req.Txs, c.txCodec) + decodedTxs, err := decodeTxs(c.logger, req.Txs, c.txCodec) if err != nil { return nil, nil, nil, err } @@ -723,12 +723,13 @@ func (c *consensus[T]) ExtendVote(ctx context.Context, req *abciproto.ExtendVote return resp, err } -func decodeTxs[T transaction.Tx](rawTxs [][]byte, codec transaction.Codec[T]) ([]T, error) { +func decodeTxs[T transaction.Tx](logger log.Logger, rawTxs [][]byte, codec transaction.Codec[T]) ([]T, error) { txs := make([]T, len(rawTxs)) for i, rawTx := range rawTxs { tx, err := codec.Decode(rawTx) if err != nil { - return nil, fmt.Errorf("unable to decode tx: %d: %w", i, err) + // do not return an error here, as we want to deliver the block even if some txs are invalid + logger.Debug("failed to decode tx", "err", err) } txs[i] = tx } diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod index ee02c4e038c9..6e72d88f543c 100644 --- a/server/v2/cometbft/go.mod +++ b/server/v2/cometbft/go.mod @@ -5,6 +5,7 @@ go 1.23.2 replace ( cosmossdk.io/api => ../../../api cosmossdk.io/core/testing => ../../../core/testing + cosmossdk.io/schema => ../../../schema cosmossdk.io/server/v2 => ../ cosmossdk.io/server/v2/appmanager => ../appmanager cosmossdk.io/server/v2/stf => ../stf diff --git a/server/v2/cometbft/go.sum b/server/v2/cometbft/go.sum index bfe37539a1ed..61a3fa909ae3 100644 --- a/server/v2/cometbft/go.sum +++ b/server/v2/cometbft/go.sum @@ -18,8 +18,6 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/server/v2/cometbft/streaming.go b/server/v2/cometbft/streaming.go index c9ca7fddcc7e..8ce5f0a0f7ad 100644 --- a/server/v2/cometbft/streaming.go +++ b/server/v2/cometbft/streaming.go @@ -2,6 +2,7 @@ package cometbft import ( "context" + "encoding/json" "cosmossdk.io/core/event" "cosmossdk.io/core/server" @@ -16,6 +17,7 @@ func (c *consensus[T]) streamDeliverBlockChanges( ctx context.Context, height int64, txs [][]byte, + decodedTxs []T, txResults []server.TxResult, events []event.Event, stateChanges []store.StateChanges, @@ -76,9 +78,12 @@ func (c *consensus[T]) streamDeliverBlockChanges( if c.listener.OnTx != nil { for i, tx := range txs { if err := c.listener.OnTx(appdata.TxData{ - TxIndex: int32(i), - Bytes: func() ([]byte, error) { return tx, nil }, - JSON: nil, // TODO: https://github.com/cosmos/cosmos-sdk/issues/22009 + BlockNumber: uint64(height), + TxIndex: int32(i), + Bytes: func() ([]byte, error) { return tx, nil }, + JSON: func() (json.RawMessage, error) { + return json.Marshal(decodedTxs[i]) + }, }); err != nil { return err } diff --git a/server/v2/go.mod b/server/v2/go.mod index dbaf8c2e8f8c..72dcdc735185 100644 --- a/server/v2/go.mod +++ b/server/v2/go.mod @@ -4,6 +4,7 @@ go 1.23 replace ( cosmossdk.io/api => ../../api + cosmossdk.io/schema => ../../schema cosmossdk.io/server/v2/appmanager => ./appmanager cosmossdk.io/server/v2/stf => ./stf cosmossdk.io/store/v2 => ../../store/v2 diff --git a/server/v2/go.sum b/server/v2/go.sum index c4987e318f7f..25402407a571 100644 --- a/server/v2/go.sum +++ b/server/v2/go.sum @@ -8,8 +8,6 @@ cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 h1:IQNdY2kB+k+1OM2DvqF cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5/go.mod h1:0CuYKkFHxc1vw2JC+t21THBCALJVROrWVR/3PQ1urpc= cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= -cosmossdk.io/schema v0.3.1-0.20241010135032-192601639cac h1:3joNZZWZ3k7fMsrBDL1ktuQ2xQwYLZOaDhkruadDFmc= -cosmossdk.io/schema v0.3.1-0.20241010135032-192601639cac/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= 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= diff --git a/server/v2/stf/go.mod b/server/v2/stf/go.mod index 0352b590ccb4..a6824044348b 100644 --- a/server/v2/stf/go.mod +++ b/server/v2/stf/go.mod @@ -10,6 +10,8 @@ require ( github.com/tidwall/btree v1.7.0 ) +replace cosmossdk.io/schema => ../../../schema + require ( github.com/google/go-cmp v0.6.0 // indirect google.golang.org/protobuf v1.35.2 // indirect diff --git a/server/v2/stf/go.sum b/server/v2/stf/go.sum index 33a84a2d1cfe..c1679ad748ba 100644 --- a/server/v2/stf/go.sum +++ b/server/v2/stf/go.sum @@ -2,8 +2,6 @@ cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e h1:F+ScucYxwrrDJU8guJXQXpGhdpziYSbxW6HMP2wCNxs= cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e/go.mod h1:3YvVv9aJayjPhdX0DY1IMrGse4sR63hNBWx2VtDWjGQ= -cosmossdk.io/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= diff --git a/server/v2/stf/stf.go b/server/v2/stf/stf.go index 6b6f6b2c53da..4411a0f5fe40 100644 --- a/server/v2/stf/stf.go +++ b/server/v2/stf/stf.go @@ -204,6 +204,7 @@ func (s STF[T]) deliverTx( events := make([]event.Event, 0) // set the event indexes, set MsgIndex to 0 in validation events for i, e := range validationEvents { + e.BlockNumber = uint64(hi.Height) e.BlockStage = appdata.TxProcessingStage e.TxIndex = txIndex e.MsgIndex = 0 @@ -214,6 +215,7 @@ func (s STF[T]) deliverTx( execResp, execGas, execEvents, err := s.execTx(ctx, state, gasLimit-validateGas, tx, execMode, hi) // set the TxIndex in the exec events for _, e := range execEvents { + e.BlockNumber = uint64(hi.Height) e.BlockStage = appdata.TxProcessingStage e.TxIndex = txIndex events = append(events, e) @@ -373,6 +375,7 @@ func (s STF[T]) preBlock( } for i := range ctx.events { + ctx.events[i].BlockNumber = uint64(ctx.headerInfo.Height) ctx.events[i].BlockStage = appdata.PreBlockStage ctx.events[i].EventIndex = int32(i + 1) } @@ -390,6 +393,7 @@ func (s STF[T]) beginBlock( } for i := range ctx.events { + ctx.events[i].BlockNumber = uint64(ctx.headerInfo.Height) ctx.events[i].BlockStage = appdata.BeginBlockStage ctx.events[i].EventIndex = int32(i + 1) } @@ -413,6 +417,7 @@ func (s STF[T]) endBlock( } events = append(events, ctx.events...) for i := range events { + events[i].BlockNumber = uint64(ctx.headerInfo.Height) events[i].BlockStage = appdata.EndBlockStage events[i].EventIndex = int32(i + 1) } diff --git a/simapp/go.mod b/simapp/go.mod index 023cad3c8776..0c890a5b684a 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -252,6 +252,8 @@ replace ( cosmossdk.io/api => ../api cosmossdk.io/client/v2 => ../client/v2 cosmossdk.io/collections => ../collections + cosmossdk.io/indexer/postgres => ../indexer/postgres + cosmossdk.io/schema => ../schema cosmossdk.io/store => ../store cosmossdk.io/tools/confix => ../tools/confix cosmossdk.io/x/accounts => ../x/accounts diff --git a/simapp/go.sum b/simapp/go.sum index 10426893e2dd..27298d33b472 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -200,15 +200,10 @@ 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/indexer/postgres v0.0.0-20241128094659-bd76b47e1d8b h1:/5zsEUbJNY6guf7a8y0k6Fk7bUlpCgaZuy8bZNMCXTs= -cosmossdk.io/indexer/postgres v0.0.0-20241128094659-bd76b47e1d8b/go.mod h1:vb5uiIC3rDjz+V7UaSLNA3g5TpbRygWi652qtMugWHA= 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/simapp/v2/app_di.go b/simapp/v2/app_di.go index 1d028c1025e4..bd0a39472a1c 100644 --- a/simapp/v2/app_di.go +++ b/simapp/v2/app_di.go @@ -4,10 +4,13 @@ import ( _ "embed" "fmt" + _ "github.com/jackc/pgx/v5/stdlib" // Import and register pgx driver + "cosmossdk.io/core/registry" "cosmossdk.io/core/server" "cosmossdk.io/core/transaction" "cosmossdk.io/depinject" + _ "cosmossdk.io/indexer/postgres" // register the postgres indexer "cosmossdk.io/log" "cosmossdk.io/runtime/v2" serverstore "cosmossdk.io/server/v2/store" diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index 491657688490..d29decad721d 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -43,9 +43,11 @@ require ( ) require ( + cosmossdk.io/indexer/postgres v0.0.0-20241204160609-556102cfa046 cosmossdk.io/x/accounts/defaults/base v0.0.0-00010101000000-000000000000 cosmossdk.io/x/accounts/defaults/lockup v0.0.0-00010101000000-000000000000 cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000 + github.com/jackc/pgx/v5 v5.7.1 ) require ( @@ -156,6 +158,9 @@ require ( github.com/huandu/skiplist v1.2.1 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/puddle/v2 v2.2.2 // 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 @@ -294,7 +299,9 @@ replace ( replace ( cosmossdk.io/api => ../../api cosmossdk.io/core/testing => ../../core/testing + cosmossdk.io/indexer/postgres => ../../indexer/postgres cosmossdk.io/runtime/v2 => ../../runtime/v2 + cosmossdk.io/schema => ../../schema cosmossdk.io/server/v2 => ../../server/v2 cosmossdk.io/server/v2/appmanager => ../../server/v2/appmanager cosmossdk.io/server/v2/cometbft => ../../server/v2/cometbft diff --git a/simapp/v2/go.sum b/simapp/v2/go.sum index 6957cbe0768a..5c9d700b7023 100644 --- a/simapp/v2/go.sum +++ b/simapp/v2/go.sum @@ -206,8 +206,6 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= @@ -603,6 +601,14 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.7.1 h1:x7SYsPBYDkHDksogeSmZZ5xzThcTgRz++I5E+ePFUcs= +github.com/jackc/pgx/v5 v5.7.1/go.mod h1:e7O26IywZZ+naJtWWos6i6fvWK+29etgITqrqHLfoZA= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= 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.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= diff --git a/tests/go.mod b/tests/go.mod index 5e56835a3e48..e44fa2b8bab6 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -284,6 +284,7 @@ replace ( // Below are the long-lived replace for tests. replace ( + cosmossdk.io/schema => ../schema // We always want to test against the latest version of the simapp. cosmossdk.io/simapp => ../simapp github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 diff --git a/tests/go.sum b/tests/go.sum index 068ecb44d2f3..3136ca975c19 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -204,9 +204,6 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 54a276f32802..1b1735990662 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -39,7 +39,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/math v1.4.0 - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect filippo.io/edwards25519 v1.1.0 // indirect @@ -178,6 +178,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( cosmossdk.io/api => ../../api + cosmossdk.io/schema => ../../schema cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking diff --git a/x/accounts/go.sum b/x/accounts/go.sum index 353df80d6663..921534217ff3 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -18,8 +18,6 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/keeper.go b/x/accounts/keeper.go index 056c1c5e1e87..6c31d4d7ab9f 100644 --- a/x/accounts/keeper.go +++ b/x/accounts/keeper.go @@ -62,9 +62,14 @@ func NewKeeper( accounts: nil, Schema: collections.Schema{}, AccountNumber: collections.NewSequence(sb, AccountNumberKey, "account_number"), - AccountsByType: collections.NewMap(sb, AccountTypeKeyPrefix, "accounts_by_type", collections.BytesKey, collections.StringValue), - AccountByNumber: collections.NewMap(sb, AccountByNumber, "account_by_number", collections.BytesKey, collections.Uint64Value), - AccountsState: collections.NewMap(sb, implementation.AccountStatePrefix, "accounts_state", collections.PairKeyCodec(collections.Uint64Key, collections.BytesKey), collections.BytesValue), + AccountsByType: collections.NewMap(sb, AccountTypeKeyPrefix, "accounts_by_type", collections.BytesKey.WithName("address"), collections.StringValue.WithName("type")), + AccountByNumber: collections.NewMap(sb, AccountByNumber, "account_by_number", collections.BytesKey.WithName("address"), collections.Uint64Value.WithName("number")), + AccountsState: collections.NewMap(sb, implementation.AccountStatePrefix, "accounts_state", collections.NamedPairKeyCodec( + "number", + collections.Uint64Key, + "key", + collections.BytesKey, + ), collections.BytesValue), } schema, err := sb.Build() diff --git a/x/accounts/module.go b/x/accounts/module.go index f7958240b7b5..978d6b9cb7da 100644 --- a/x/accounts/module.go +++ b/x/accounts/module.go @@ -7,8 +7,10 @@ import ( "github.com/spf13/cobra" "google.golang.org/grpc" + "cosmossdk.io/collections" "cosmossdk.io/core/appmodule" "cosmossdk.io/core/registry" + "cosmossdk.io/schema" "cosmossdk.io/x/accounts/cli" v1 "cosmossdk.io/x/accounts/v1" @@ -105,3 +107,9 @@ func (AppModule) GetQueryCmd() *cobra.Command { } func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion } + +// ModuleCodec implements `schema.HasModuleCodec` interface. +// It allows the indexer to decode the module's KVPairUpdate. +func (am AppModule) ModuleCodec() (schema.ModuleCodec, error) { + return am.k.Schema.ModuleCodec(collections.IndexingOptions{}) +} diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 96f188aaf3c1..099511e778da 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -175,6 +175,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( cosmossdk.io/api => ../../api + cosmossdk.io/schema => ../../schema cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/protocolpool => ../protocolpool diff --git a/x/distribution/go.sum b/x/distribution/go.sum index 353df80d6663..921534217ff3 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -18,8 +18,6 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= From e07fee5cc1c9c23dc2a25c2468bafe75d1a06242 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 10 Dec 2024 16:11:55 +0800 Subject: [PATCH 32/62] fix(systemtests): avoid HTTP server on port 8080 conflict when AddFullnode (#22810) --- systemtests/CHANGELOG.md | 4 ++++ systemtests/system.go | 21 ++++++++++++++++----- systemtests/testnet_init.go | 17 +++++------------ 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/systemtests/CHANGELOG.md b/systemtests/CHANGELOG.md index 2a27c4162cf2..e4ccd09d739c 100644 --- a/systemtests/CHANGELOG.md +++ b/systemtests/CHANGELOG.md @@ -36,6 +36,10 @@ Ref: https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.j ## [Unreleased] +## [v1.0.0-rc.4] - 2024-12-10 + +* [#22810](https://github.com/cosmos/cosmos-sdk/pull/22810) Avoid HTTP server conflicts on port 8080 + ## [v1.0.0-rc.3] - 2024-12-05 * [#22774](https://github.com/cosmos/cosmos-sdk/pull/22774) Add greater than or equal support in Rest test suite diff --git a/systemtests/system.go b/systemtests/system.go index cb1adb13040e..5b964ee03327 100644 --- a/systemtests/system.go +++ b/systemtests/system.go @@ -22,6 +22,7 @@ import ( client "github.com/cometbft/cometbft/rpc/client/http" ctypes "github.com/cometbft/cometbft/rpc/core/types" tmtypes "github.com/cometbft/cometbft/types" + "github.com/creachadair/tomledit" "github.com/stretchr/testify/require" "github.com/tidwall/sjson" @@ -38,7 +39,11 @@ var ( MaxGas = 10_000_000 // DefaultApiPort is the port for the node to interact with - DefaultApiPort = 1317 + DefaultApiPort = 1317 + DefaultRpcPort = 26657 + DefaultRestPort = 8080 + DefaultGrpcPort = 9090 + DefaultP2PPort = 16656 ) type TestnetInitializer interface { @@ -719,15 +724,21 @@ func (s *SystemUnderTest) AddFullnode(t *testing.T, beforeStart ...func(nodeNumb configPath := filepath.Join(WorkDir, nodePath, "config") + // start node + allNodes := s.AllNodes(t) + node := allNodes[len(allNodes)-1] // quick hack: copy config and overwrite by start params for _, tomlFile := range []string{"config.toml", "app.toml"} { configFile := filepath.Join(configPath, tomlFile) _ = os.Remove(configFile) _ = MustCopyFile(filepath.Join(WorkDir, s.nodePath(0), "config", tomlFile), configFile) + if tomlFile == "app.toml" && IsV2() { + file := filepath.Join(WorkDir, s.nodePath(nodeNumber), "config", tomlFile) + EditToml(file, func(doc *tomledit.Document) { + SetValue(doc, fmt.Sprintf("%s:%d", node.IP, DefaultRestPort+nodeNumber), "rest", "address") + }) + } } - // start node - allNodes := s.AllNodes(t) - node := allNodes[len(allNodes)-1] peers := make([]string, len(allNodes)-1) for i, n := range allNodes[0 : len(allNodes)-1] { peers[i] = n.PeerAddr() @@ -740,7 +751,7 @@ func (s *SystemUnderTest) AddFullnode(t *testing.T, beforeStart ...func(nodeNumb "--p2p.persistent_peers=" + strings.Join(peers, ","), fmt.Sprintf("--p2p.laddr=tcp://localhost:%d", node.P2PPort), fmt.Sprintf("--rpc.laddr=tcp://localhost:%d", node.RPCPort), - fmt.Sprintf("--grpc.address=localhost:%d", 9090+nodeNumber), + fmt.Sprintf("--grpc.address=localhost:%d", DefaultGrpcPort+nodeNumber), "--p2p.pex=false", "--moniker=" + moniker, "--log_level=info", diff --git a/systemtests/testnet_init.go b/systemtests/testnet_init.go index 4f872019f889..e5518cf1265e 100644 --- a/systemtests/testnet_init.go +++ b/systemtests/testnet_init.go @@ -118,13 +118,6 @@ func NewModifyConfigYamlInitializer(exec string, s *SystemUnderTest) *ModifyConf } } -const ( - rpcPortStart = 26657 - apiPortStart = 1317 - grpcPortStart = 9090 - p2pPortStart = 16656 -) - func (s ModifyConfigYamlInitializer) Initialize() { // init with legacy testnet command args := []string{ @@ -154,7 +147,7 @@ func (s ModifyConfigYamlInitializer) Initialize() { for i := 0; i < s.initialNodesCount; i++ { nodeDir := filepath.Join(WorkDir, NodePath(i, s.outputDir, s.projectName), "config") id := string(mustV(p2p.LoadNodeKey(filepath.Join(nodeDir, "node_key.json"))).ID()) - nodeAddresses[i] = fmt.Sprintf("%s@127.0.0.1:%d", id, p2pPortStart+i) + nodeAddresses[i] = fmt.Sprintf("%s@127.0.0.1:%d", id, DefaultP2PPort+i) } // then update configs @@ -162,8 +155,8 @@ func (s ModifyConfigYamlInitializer) Initialize() { nodeDir := filepath.Join(WorkDir, NodePath(i, s.outputDir, s.projectName), "config") nodeNumber := i EditToml(filepath.Join(nodeDir, "config.toml"), func(doc *tomledit.Document) { - UpdatePort(doc, rpcPortStart+i, "rpc", "laddr") - UpdatePort(doc, p2pPortStart+i, "p2p", "laddr") + UpdatePort(doc, DefaultRpcPort+i, "rpc", "laddr") + UpdatePort(doc, DefaultP2PPort+i, "p2p", "laddr") SetBool(doc, false, "p2p", "addr_book_strict") SetBool(doc, false, "p2p", "pex") SetBool(doc, true, "p2p", "allow_duplicate_ip") @@ -174,8 +167,8 @@ func (s ModifyConfigYamlInitializer) Initialize() { SetValue(doc, s.commitTimeout.String(), "consensus", "timeout_commit") }) EditToml(filepath.Join(nodeDir, "app.toml"), func(doc *tomledit.Document) { - UpdatePort(doc, apiPortStart+i, "api", "address") - UpdatePort(doc, grpcPortStart+i, "grpc", "address") + UpdatePort(doc, DefaultApiPort+i, "api", "address") + UpdatePort(doc, DefaultGrpcPort+i, "grpc", "address") }) } } From cb26ce3fe3e9e7c969a01ec947d560a735918b4c Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 10 Dec 2024 23:43:51 +0800 Subject: [PATCH 33/62] fix(server/v2): avoid server stop get call before start for multi components (#22811) --- server/v2/api/grpcgateway/server.go | 14 ++++++-------- server/v2/api/rest/server.go | 10 ++++------ server/v2/api/telemetry/server.go | 23 +++++++++++------------ systemtests/system.go | 1 + 4 files changed, 22 insertions(+), 26 deletions(-) diff --git a/server/v2/api/grpcgateway/server.go b/server/v2/api/grpcgateway/server.go index 16a622a94961..977eb369c894 100644 --- a/server/v2/api/grpcgateway/server.go +++ b/server/v2/api/grpcgateway/server.go @@ -75,7 +75,13 @@ func New[T transaction.Tx]( s.logger = logger.With(log.ModuleKey, s.Name()) s.config = serverCfg + mux := http.NewServeMux() + mux.Handle("/", s.GRPCGatewayRouter) + s.server = &http.Server{ + Addr: s.config.Address, + Handler: mux, + } return s, nil } @@ -110,14 +116,6 @@ func (s *Server[T]) Start(ctx context.Context) error { return nil } - mux := http.NewServeMux() - mux.Handle("/", s.GRPCGatewayRouter) - - s.server = &http.Server{ - Addr: s.config.Address, - Handler: mux, - } - s.logger.Info("starting gRPC-Gateway server...", "address", s.config.Address) if err := s.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { return fmt.Errorf("failed to start gRPC-Gateway server: %w", err) diff --git a/server/v2/api/rest/server.go b/server/v2/api/rest/server.go index 5cffaa282f69..1ea098c6dce0 100644 --- a/server/v2/api/rest/server.go +++ b/server/v2/api/rest/server.go @@ -46,7 +46,10 @@ func New[T transaction.Tx]( } } srv.config = serverCfg - + srv.httpServer = &http.Server{ + Addr: srv.config.Address, + Handler: srv.router, + } return srv, nil } @@ -69,11 +72,6 @@ func (s *Server[T]) Start(ctx context.Context) error { return nil } - s.httpServer = &http.Server{ - Addr: s.config.Address, - Handler: s.router, - } - s.logger.Info("starting HTTP server", "address", s.config.Address) if err := s.httpServer.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) { s.logger.Error("failed to start HTTP server", "error", err) diff --git a/server/v2/api/telemetry/server.go b/server/v2/api/telemetry/server.go index f612964a8476..1236f9112ba0 100644 --- a/server/v2/api/telemetry/server.go +++ b/server/v2/api/telemetry/server.go @@ -52,6 +52,17 @@ func New[T transaction.Tx](cfg server.ConfigMap, logger log.Logger, enableTeleme return nil, fmt.Errorf("failed to initialize metrics: %w", err) } srv.metrics = metrics + mux := http.NewServeMux() + // /metrics is the default standard path for Prometheus metrics. + mux.HandleFunc("/metrics", srv.metricsHandler) + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + http.Redirect(w, r, "/metrics", http.StatusMovedPermanently) + }) + + srv.server = &http.Server{ + Addr: srv.config.Address, + Handler: mux, + } return srv, nil } @@ -74,18 +85,6 @@ func (s *Server[T]) Start(ctx context.Context) error { return nil } - mux := http.NewServeMux() - // /metrics is the default standard path for Prometheus metrics. - mux.HandleFunc("/metrics", s.metricsHandler) - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - http.Redirect(w, r, "/metrics", http.StatusMovedPermanently) - }) - - s.server = &http.Server{ - Addr: s.config.Address, - Handler: mux, - } - s.logger.Info("starting telemetry server...", "address", s.config.Address) if err := s.server.ListenAndServe(); err != nil && err != http.ErrServerClosed { return fmt.Errorf("failed to start telemetry server: %w", err) diff --git a/systemtests/system.go b/systemtests/system.go index 5b964ee03327..fa39beb4d509 100644 --- a/systemtests/system.go +++ b/systemtests/system.go @@ -735,6 +735,7 @@ func (s *SystemUnderTest) AddFullnode(t *testing.T, beforeStart ...func(nodeNumb if tomlFile == "app.toml" && IsV2() { file := filepath.Join(WorkDir, s.nodePath(nodeNumber), "config", tomlFile) EditToml(file, func(doc *tomledit.Document) { + SetValue(doc, fmt.Sprintf("%s:%d", node.IP, DefaultApiPort+nodeNumber), "grpc-gateway", "address") SetValue(doc, fmt.Sprintf("%s:%d", node.IP, DefaultRestPort+nodeNumber), "rest", "address") }) } From 6a7ecd89ee752494af50e51af7ec0b3018518a0f Mon Sep 17 00:00:00 2001 From: Alex | Skip Date: Tue, 10 Dec 2024 11:52:17 -0500 Subject: [PATCH 34/62] feat(version): update version command to return v2 info (#22807) --- CHANGELOG.md | 1 + .../base/tendermint/v1beta1/query.pulsar.go | 532 +++++++++++++----- client/grpc/cmtservice/query.pb.go | 359 ++++++++---- client/grpc/cmtservice/service.go | 19 +- .../base/tendermint/v1beta1/query.proto | 19 +- version/build_test.go | 166 ++++++ version/version.go | 91 +-- 7 files changed, 884 insertions(+), 303 deletions(-) create mode 100644 version/build_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 435bf333bc00..4958458cebd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i * (baseapp) [#20291](https://github.com/cosmos/cosmos-sdk/pull/20291) Simulate nested messages. * (crypto/keyring) [#21653](https://github.com/cosmos/cosmos-sdk/pull/21653) New Linux-only backend that adds Linux kernel's `keyctl` support. * (client/keys) [#21829](https://github.com/cosmos/cosmos-sdk/pull/21829) Add support for importing hex key using standard input. +* (client) [#22807](https://github.com/cosmos/cosmos-sdk/pull/22807) Return v2 server information in the `version` command. ### Improvements diff --git a/api/cosmos/base/tendermint/v1beta1/query.pulsar.go b/api/cosmos/base/tendermint/v1beta1/query.pulsar.go index fc9ff0abbeea..4a7018f2ef49 100644 --- a/api/cosmos/base/tendermint/v1beta1/query.pulsar.go +++ b/api/cosmos/base/tendermint/v1beta1/query.pulsar.go @@ -6410,15 +6410,18 @@ func (x *_VersionInfo_7_list) IsValid() bool { } var ( - md_VersionInfo protoreflect.MessageDescriptor - fd_VersionInfo_name protoreflect.FieldDescriptor - fd_VersionInfo_app_name protoreflect.FieldDescriptor - fd_VersionInfo_version protoreflect.FieldDescriptor - fd_VersionInfo_git_commit protoreflect.FieldDescriptor - fd_VersionInfo_build_tags protoreflect.FieldDescriptor - fd_VersionInfo_go_version protoreflect.FieldDescriptor - fd_VersionInfo_build_deps protoreflect.FieldDescriptor - fd_VersionInfo_cosmos_sdk_version protoreflect.FieldDescriptor + md_VersionInfo protoreflect.MessageDescriptor + fd_VersionInfo_name protoreflect.FieldDescriptor + fd_VersionInfo_app_name protoreflect.FieldDescriptor + fd_VersionInfo_version protoreflect.FieldDescriptor + fd_VersionInfo_git_commit protoreflect.FieldDescriptor + fd_VersionInfo_build_tags protoreflect.FieldDescriptor + fd_VersionInfo_go_version protoreflect.FieldDescriptor + fd_VersionInfo_build_deps protoreflect.FieldDescriptor + fd_VersionInfo_cosmos_sdk_version protoreflect.FieldDescriptor + fd_VersionInfo_comet_server_version protoreflect.FieldDescriptor + fd_VersionInfo_runtime_version protoreflect.FieldDescriptor + fd_VersionInfo_stf_version protoreflect.FieldDescriptor ) func init() { @@ -6432,6 +6435,9 @@ func init() { fd_VersionInfo_go_version = md_VersionInfo.Fields().ByName("go_version") fd_VersionInfo_build_deps = md_VersionInfo.Fields().ByName("build_deps") fd_VersionInfo_cosmos_sdk_version = md_VersionInfo.Fields().ByName("cosmos_sdk_version") + fd_VersionInfo_comet_server_version = md_VersionInfo.Fields().ByName("comet_server_version") + fd_VersionInfo_runtime_version = md_VersionInfo.Fields().ByName("runtime_version") + fd_VersionInfo_stf_version = md_VersionInfo.Fields().ByName("stf_version") } var _ protoreflect.Message = (*fastReflection_VersionInfo)(nil) @@ -6547,6 +6553,24 @@ func (x *fastReflection_VersionInfo) Range(f func(protoreflect.FieldDescriptor, return } } + if x.CometServerVersion != "" { + value := protoreflect.ValueOfString(x.CometServerVersion) + if !f(fd_VersionInfo_comet_server_version, value) { + return + } + } + if x.RuntimeVersion != "" { + value := protoreflect.ValueOfString(x.RuntimeVersion) + if !f(fd_VersionInfo_runtime_version, value) { + return + } + } + if x.StfVersion != "" { + value := protoreflect.ValueOfString(x.StfVersion) + if !f(fd_VersionInfo_stf_version, value) { + return + } + } } // Has reports whether a field is populated. @@ -6578,6 +6602,12 @@ func (x *fastReflection_VersionInfo) Has(fd protoreflect.FieldDescriptor) bool { return len(x.BuildDeps) != 0 case "cosmos.base.tendermint.v1beta1.VersionInfo.cosmos_sdk_version": return x.CosmosSdkVersion != "" + case "cosmos.base.tendermint.v1beta1.VersionInfo.comet_server_version": + return x.CometServerVersion != "" + case "cosmos.base.tendermint.v1beta1.VersionInfo.runtime_version": + return x.RuntimeVersion != "" + case "cosmos.base.tendermint.v1beta1.VersionInfo.stf_version": + return x.StfVersion != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.base.tendermint.v1beta1.VersionInfo")) @@ -6610,6 +6640,12 @@ func (x *fastReflection_VersionInfo) Clear(fd protoreflect.FieldDescriptor) { x.BuildDeps = nil case "cosmos.base.tendermint.v1beta1.VersionInfo.cosmos_sdk_version": x.CosmosSdkVersion = "" + case "cosmos.base.tendermint.v1beta1.VersionInfo.comet_server_version": + x.CometServerVersion = "" + case "cosmos.base.tendermint.v1beta1.VersionInfo.runtime_version": + x.RuntimeVersion = "" + case "cosmos.base.tendermint.v1beta1.VersionInfo.stf_version": + x.StfVersion = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.base.tendermint.v1beta1.VersionInfo")) @@ -6653,6 +6689,15 @@ func (x *fastReflection_VersionInfo) Get(descriptor protoreflect.FieldDescriptor case "cosmos.base.tendermint.v1beta1.VersionInfo.cosmos_sdk_version": value := x.CosmosSdkVersion return protoreflect.ValueOfString(value) + case "cosmos.base.tendermint.v1beta1.VersionInfo.comet_server_version": + value := x.CometServerVersion + return protoreflect.ValueOfString(value) + case "cosmos.base.tendermint.v1beta1.VersionInfo.runtime_version": + value := x.RuntimeVersion + return protoreflect.ValueOfString(value) + case "cosmos.base.tendermint.v1beta1.VersionInfo.stf_version": + value := x.StfVersion + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.base.tendermint.v1beta1.VersionInfo")) @@ -6691,6 +6736,12 @@ func (x *fastReflection_VersionInfo) Set(fd protoreflect.FieldDescriptor, value x.BuildDeps = *clv.list case "cosmos.base.tendermint.v1beta1.VersionInfo.cosmos_sdk_version": x.CosmosSdkVersion = value.Interface().(string) + case "cosmos.base.tendermint.v1beta1.VersionInfo.comet_server_version": + x.CometServerVersion = value.Interface().(string) + case "cosmos.base.tendermint.v1beta1.VersionInfo.runtime_version": + x.RuntimeVersion = value.Interface().(string) + case "cosmos.base.tendermint.v1beta1.VersionInfo.stf_version": + x.StfVersion = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.base.tendermint.v1beta1.VersionInfo")) @@ -6731,6 +6782,12 @@ func (x *fastReflection_VersionInfo) Mutable(fd protoreflect.FieldDescriptor) pr panic(fmt.Errorf("field go_version of message cosmos.base.tendermint.v1beta1.VersionInfo is not mutable")) case "cosmos.base.tendermint.v1beta1.VersionInfo.cosmos_sdk_version": panic(fmt.Errorf("field cosmos_sdk_version of message cosmos.base.tendermint.v1beta1.VersionInfo is not mutable")) + case "cosmos.base.tendermint.v1beta1.VersionInfo.comet_server_version": + panic(fmt.Errorf("field comet_server_version of message cosmos.base.tendermint.v1beta1.VersionInfo is not mutable")) + case "cosmos.base.tendermint.v1beta1.VersionInfo.runtime_version": + panic(fmt.Errorf("field runtime_version of message cosmos.base.tendermint.v1beta1.VersionInfo is not mutable")) + case "cosmos.base.tendermint.v1beta1.VersionInfo.stf_version": + panic(fmt.Errorf("field stf_version of message cosmos.base.tendermint.v1beta1.VersionInfo is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.base.tendermint.v1beta1.VersionInfo")) @@ -6761,6 +6818,12 @@ func (x *fastReflection_VersionInfo) NewField(fd protoreflect.FieldDescriptor) p return protoreflect.ValueOfList(&_VersionInfo_7_list{list: &list}) case "cosmos.base.tendermint.v1beta1.VersionInfo.cosmos_sdk_version": return protoreflect.ValueOfString("") + case "cosmos.base.tendermint.v1beta1.VersionInfo.comet_server_version": + return protoreflect.ValueOfString("") + case "cosmos.base.tendermint.v1beta1.VersionInfo.runtime_version": + return protoreflect.ValueOfString("") + case "cosmos.base.tendermint.v1beta1.VersionInfo.stf_version": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.base.tendermint.v1beta1.VersionInfo")) @@ -6864,6 +6927,18 @@ func (x *fastReflection_VersionInfo) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.CometServerVersion) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.RuntimeVersion) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.StfVersion) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -6893,6 +6968,27 @@ func (x *fastReflection_VersionInfo) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.StfVersion) > 0 { + i -= len(x.StfVersion) + copy(dAtA[i:], x.StfVersion) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.StfVersion))) + i-- + dAtA[i] = 0x5a + } + if len(x.RuntimeVersion) > 0 { + i -= len(x.RuntimeVersion) + copy(dAtA[i:], x.RuntimeVersion) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.RuntimeVersion))) + i-- + dAtA[i] = 0x52 + } + if len(x.CometServerVersion) > 0 { + i -= len(x.CometServerVersion) + copy(dAtA[i:], x.CometServerVersion) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.CometServerVersion))) + i-- + dAtA[i] = 0x4a + } if len(x.CosmosSdkVersion) > 0 { i -= len(x.CosmosSdkVersion) copy(dAtA[i:], x.CosmosSdkVersion) @@ -7265,6 +7361,102 @@ func (x *fastReflection_VersionInfo) ProtoMethods() *protoiface.Methods { } x.CosmosSdkVersion = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 9: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CometServerVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.CometServerVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RuntimeVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.RuntimeVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 11: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StfVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.StfVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -10958,14 +11150,17 @@ type VersionInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - AppName string `protobuf:"bytes,2,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - GitCommit string `protobuf:"bytes,4,opt,name=git_commit,json=gitCommit,proto3" json:"git_commit,omitempty"` - BuildTags string `protobuf:"bytes,5,opt,name=build_tags,json=buildTags,proto3" json:"build_tags,omitempty"` - GoVersion string `protobuf:"bytes,6,opt,name=go_version,json=goVersion,proto3" json:"go_version,omitempty"` - BuildDeps []*Module `protobuf:"bytes,7,rep,name=build_deps,json=buildDeps,proto3" json:"build_deps,omitempty"` - CosmosSdkVersion string `protobuf:"bytes,8,opt,name=cosmos_sdk_version,json=cosmosSdkVersion,proto3" json:"cosmos_sdk_version,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + AppName string `protobuf:"bytes,2,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + GitCommit string `protobuf:"bytes,4,opt,name=git_commit,json=gitCommit,proto3" json:"git_commit,omitempty"` + BuildTags string `protobuf:"bytes,5,opt,name=build_tags,json=buildTags,proto3" json:"build_tags,omitempty"` + GoVersion string `protobuf:"bytes,6,opt,name=go_version,json=goVersion,proto3" json:"go_version,omitempty"` + BuildDeps []*Module `protobuf:"bytes,7,rep,name=build_deps,json=buildDeps,proto3" json:"build_deps,omitempty"` + CosmosSdkVersion string `protobuf:"bytes,8,opt,name=cosmos_sdk_version,json=cosmosSdkVersion,proto3" json:"cosmos_sdk_version,omitempty"` + CometServerVersion string `protobuf:"bytes,9,opt,name=comet_server_version,json=cometServerVersion,proto3" json:"comet_server_version,omitempty"` + RuntimeVersion string `protobuf:"bytes,10,opt,name=runtime_version,json=runtimeVersion,proto3" json:"runtime_version,omitempty"` + StfVersion string `protobuf:"bytes,11,opt,name=stf_version,json=stfVersion,proto3" json:"stf_version,omitempty"` } func (x *VersionInfo) Reset() { @@ -11044,6 +11239,27 @@ func (x *VersionInfo) GetCosmosSdkVersion() string { return "" } +func (x *VersionInfo) GetCometServerVersion() string { + if x != nil { + return x.CometServerVersion + } + return "" +} + +func (x *VersionInfo) GetRuntimeVersion() string { + if x != nil { + return x.RuntimeVersion + } + return "" +} + +func (x *VersionInfo) GetStfVersion() string { + if x != nil { + return x.StfVersion + } + return "" +} + // Module is the type for VersionInfo type Module struct { state protoimpl.MessageState @@ -11493,7 +11709,7 @@ var file_cosmos_base_tendermint_v1beta1_query_proto_rawDesc = []byte{ 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0xbd, 0x02, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0xf8, 0x03, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, @@ -11512,147 +11728,159 @@ var file_cosmos_base_tendermint_v1beta1_query_proto_rawDesc = []byte{ 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, 0xda, 0xb4, 0x2d, 0x0f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, 0x30, 0x2e, 0x34, 0x33, 0x52, 0x10, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x48, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x22, 0x68, 0x0a, 0x10, 0x41, 0x42, 0x43, - 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x72, - 0x6f, 0x76, 0x65, 0x22, 0x88, 0x02, 0x0a, 0x11, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, - 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, - 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, - 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6f, 0x66, - 0x5f, 0x6f, 0x70, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, - 0x65, 0x74, 0x62, 0x66, 0x74, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x4f, - 0x70, 0x73, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0x47, - 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x54, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6f, 0x66, - 0x4f, 0x70, 0x73, 0x12, 0x44, 0x0a, 0x03, 0x6f, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, 0x6f, 0x70, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x32, 0xc2, 0x0a, - 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa9, 0x01, 0x0a, 0x0b, 0x47, 0x65, - 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, - 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0xa4, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, - 0x63, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x45, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, 0xda, + 0xb4, 0x2d, 0x0f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, 0x30, 0x2e, + 0x35, 0x32, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x13, 0xda, 0xb4, 0x2d, 0x0f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, + 0x30, 0x2e, 0x35, 0x32, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x74, 0x66, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, 0xda, 0xb4, 0x2d, 0x0f, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, 0x30, 0x2e, 0x35, 0x32, 0x52, 0x0a, + 0x73, 0x74, 0x66, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x48, 0x0a, 0x06, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x73, 0x75, 0x6d, 0x22, 0x68, 0x0a, 0x10, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x76, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x22, 0x88, + 0x02, 0x0a, 0x11, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x6f, 0x70, 0x73, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, + 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, + 0x4f, 0x70, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x73, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0x47, 0x0a, 0x07, 0x50, 0x72, 0x6f, + 0x6f, 0x66, 0x4f, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x02, + 0x18, 0x01, 0x22, 0x54, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x70, 0x73, 0x12, 0x44, + 0x0a, 0x03, 0x6f, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6f, 0x66, 0x4f, 0x70, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x03, 0x6f, 0x70, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x32, 0xc2, 0x0a, 0x0a, 0x07, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0xa9, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, - 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, 0xb6, 0x01, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, - 0x35, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, + 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x12, 0xa4, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, + 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, - 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0xbe, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x63, 0x6f, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x73, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, 0xb6, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x35, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, - 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x12, 0xd2, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, - 0x12, 0x3c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, + 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x36, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2f, 0x12, 0x2d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x12, 0xbe, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, + 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, - 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x73, 0x65, 0x74, 0x73, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0xda, 0x01, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, - 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, - 0x12, 0x36, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, + 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, + 0x12, 0x2f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x7d, 0x12, 0xd2, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x3c, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, + 0x12, 0x34, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x65, 0x74, 0x73, 0x2f, - 0x7b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x12, 0xb7, 0x01, 0x0a, 0x09, 0x41, 0x42, 0x43, - 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0xca, 0xb4, 0x2d, - 0x0f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, 0x30, 0x2e, 0x34, 0x36, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, - 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x62, 0x63, 0x69, 0x5f, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x42, 0x8e, 0x02, 0x0a, 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, - 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, - 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x74, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x42, 0x54, - 0xaa, 0x02, 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x54, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0xca, 0x02, 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x61, 0x73, 0x65, 0x5c, - 0x54, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0xe2, 0x02, 0x2a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x61, 0x73, 0x65, - 0x5c, 0x54, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x21, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x42, 0x61, 0x73, 0x65, 0x3a, 0x3a, - 0x54, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0xda, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x3e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x53, 0x65, 0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x53, 0x65, 0x74, 0x42, 0x79, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x7d, 0x12, 0xb7, 0x01, 0x0a, 0x09, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x12, 0x30, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0xca, 0xb4, 0x2d, 0x0f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, 0x30, 0x2e, 0x34, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2c, 0x12, 0x2a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x61, 0x62, 0x63, 0x69, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x8e, 0x02, + 0x0a, 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x41, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, + 0x2f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x3b, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x42, 0x54, 0xaa, 0x02, 0x1e, 0x43, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x54, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1e, 0x43, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x61, 0x73, 0x65, 0x5c, 0x54, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x2a, + 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x61, 0x73, 0x65, 0x5c, 0x54, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x21, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x42, 0x61, 0x73, 0x65, 0x3a, 0x3a, 0x54, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/client/grpc/cmtservice/query.pb.go b/client/grpc/cmtservice/query.pb.go index 5a7e58dffc55..ff1675cb3a6e 100644 --- a/client/grpc/cmtservice/query.pb.go +++ b/client/grpc/cmtservice/query.pb.go @@ -712,14 +712,17 @@ func (m *GetNodeInfoResponse) GetApplicationVersion() *VersionInfo { // VersionInfo is the type for the GetNodeInfoResponse message. type VersionInfo struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - AppName string `protobuf:"bytes,2,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - GitCommit string `protobuf:"bytes,4,opt,name=git_commit,json=gitCommit,proto3" json:"git_commit,omitempty"` - BuildTags string `protobuf:"bytes,5,opt,name=build_tags,json=buildTags,proto3" json:"build_tags,omitempty"` - GoVersion string `protobuf:"bytes,6,opt,name=go_version,json=goVersion,proto3" json:"go_version,omitempty"` - BuildDeps []*Module `protobuf:"bytes,7,rep,name=build_deps,json=buildDeps,proto3" json:"build_deps,omitempty"` - CosmosSdkVersion string `protobuf:"bytes,8,opt,name=cosmos_sdk_version,json=cosmosSdkVersion,proto3" json:"cosmos_sdk_version,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + AppName string `protobuf:"bytes,2,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + GitCommit string `protobuf:"bytes,4,opt,name=git_commit,json=gitCommit,proto3" json:"git_commit,omitempty"` + BuildTags string `protobuf:"bytes,5,opt,name=build_tags,json=buildTags,proto3" json:"build_tags,omitempty"` + GoVersion string `protobuf:"bytes,6,opt,name=go_version,json=goVersion,proto3" json:"go_version,omitempty"` + BuildDeps []*Module `protobuf:"bytes,7,rep,name=build_deps,json=buildDeps,proto3" json:"build_deps,omitempty"` + CosmosSdkVersion string `protobuf:"bytes,8,opt,name=cosmos_sdk_version,json=cosmosSdkVersion,proto3" json:"cosmos_sdk_version,omitempty"` + CometServerVersion string `protobuf:"bytes,9,opt,name=comet_server_version,json=cometServerVersion,proto3" json:"comet_server_version,omitempty"` + RuntimeVersion string `protobuf:"bytes,10,opt,name=runtime_version,json=runtimeVersion,proto3" json:"runtime_version,omitempty"` + StfVersion string `protobuf:"bytes,11,opt,name=stf_version,json=stfVersion,proto3" json:"stf_version,omitempty"` } func (m *VersionInfo) Reset() { *m = VersionInfo{} } @@ -811,6 +814,27 @@ func (m *VersionInfo) GetCosmosSdkVersion() string { return "" } +func (m *VersionInfo) GetCometServerVersion() string { + if m != nil { + return m.CometServerVersion + } + return "" +} + +func (m *VersionInfo) GetRuntimeVersion() string { + if m != nil { + return m.RuntimeVersion + } + return "" +} + +func (m *VersionInfo) GetStfVersion() string { + if m != nil { + return m.StfVersion + } + return "" +} + // Module is the type for VersionInfo type Module struct { // module path @@ -1199,99 +1223,103 @@ func init() { } var fileDescriptor_40c93fb3ef485c5d = []byte{ - // 1468 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xcd, 0x6f, 0x1b, 0x45, - 0x1b, 0xcf, 0xda, 0x69, 0x6c, 0x3f, 0xe9, 0xfb, 0x36, 0x99, 0xe4, 0x6d, 0xb7, 0x7e, 0x53, 0x37, - 0xaf, 0xa5, 0xb7, 0x9f, 0x64, 0xb7, 0x76, 0xda, 0xb4, 0xa0, 0x52, 0x94, 0x34, 0x25, 0x4d, 0x69, - 0x4b, 0xd8, 0x54, 0x20, 0x21, 0xa4, 0xd5, 0x7a, 0x77, 0xbc, 0x59, 0xc5, 0xde, 0x99, 0xee, 0x8e, - 0x0d, 0x16, 0x42, 0x42, 0x9c, 0x38, 0x22, 0xf1, 0x2f, 0x70, 0x80, 0x1b, 0x87, 0x0a, 0x4e, 0x54, - 0x82, 0x53, 0xc5, 0xa9, 0x2a, 0x12, 0xaa, 0x7a, 0x40, 0xa8, 0x45, 0xe2, 0xdf, 0x40, 0xf3, 0xb1, - 0xeb, 0x75, 0x93, 0xd4, 0x4e, 0x6f, 0x70, 0x59, 0xcd, 0x3c, 0x9f, 0xbf, 0xe7, 0x63, 0x9e, 0x99, - 0x85, 0x33, 0x2e, 0x89, 0xdb, 0x24, 0x36, 0x1b, 0x4e, 0x8c, 0x4d, 0x86, 0x43, 0x0f, 0x47, 0xed, - 0x20, 0x64, 0x66, 0xb7, 0xd6, 0xc0, 0xcc, 0xa9, 0x99, 0x77, 0x3b, 0x38, 0xea, 0x19, 0x34, 0x22, - 0x8c, 0xa0, 0x8a, 0x94, 0x35, 0xb8, 0xac, 0xd1, 0x97, 0x35, 0x94, 0x6c, 0x79, 0xda, 0x69, 0x07, - 0x21, 0x31, 0xc5, 0x57, 0xaa, 0x94, 0x2b, 0x2e, 0x69, 0x63, 0xd6, 0x68, 0x32, 0xd3, 0x8d, 0x7a, - 0x94, 0x11, 0xb3, 0x5b, 0x33, 0x69, 0x44, 0x48, 0x53, 0xf1, 0xff, 0x9b, 0xf2, 0x69, 0x9d, 0x72, - 0x26, 0xeb, 0x51, 0x1c, 0x2b, 0xe6, 0xb1, 0x94, 0x29, 0xa8, 0x9c, 0xdd, 0x68, 0x11, 0x77, 0x7b, - 0x6f, 0x76, 0x56, 0x7b, 0x20, 0x32, 0x11, 0x46, 0x1a, 0x14, 0x75, 0xfc, 0x20, 0x74, 0x58, 0x40, - 0xc2, 0xdd, 0x64, 0x77, 0xc9, 0x42, 0xd6, 0xee, 0x51, 0x29, 0x6b, 0x8b, 0x9d, 0xa9, 0x52, 0x22, - 0x59, 0xb3, 0x3e, 0xf1, 0x89, 0xa4, 0xf3, 0x95, 0xa2, 0xce, 0xf9, 0x84, 0xf8, 0x2d, 0x6c, 0x3a, - 0x34, 0x30, 0x9d, 0x30, 0x24, 0x4c, 0x78, 0x4e, 0xcd, 0x29, 0xae, 0xd8, 0x35, 0x3a, 0x4d, 0xd3, - 0x09, 0x55, 0xbe, 0xab, 0x9f, 0x6a, 0x50, 0x59, 0xc3, 0xec, 0x5d, 0xa7, 0x15, 0x78, 0x0e, 0x23, - 0xd1, 0x26, 0x66, 0x2b, 0xbd, 0xeb, 0x38, 0xf0, 0xb7, 0x98, 0x85, 0xef, 0x76, 0x70, 0xcc, 0xd0, - 0x61, 0x98, 0xd8, 0x12, 0x04, 0x5d, 0x9b, 0xd7, 0x4e, 0xe5, 0x2d, 0xb5, 0x43, 0x6f, 0x02, 0xf4, - 0x83, 0xd4, 0x73, 0xf3, 0xda, 0xa9, 0xc9, 0xfa, 0x09, 0x23, 0x5b, 0x3f, 0x59, 0x58, 0x15, 0xa0, - 0xb1, 0xe1, 0xf8, 0x58, 0xd9, 0xb4, 0x32, 0x9a, 0xd5, 0xc7, 0x1a, 0x1c, 0xdf, 0x13, 0x42, 0x4c, - 0x49, 0x18, 0x63, 0xf4, 0x3f, 0x38, 0x28, 0xca, 0x62, 0x0f, 0x20, 0x99, 0x14, 0x34, 0x29, 0x8a, - 0xd6, 0x01, 0xba, 0x89, 0x89, 0x58, 0xcf, 0xcd, 0xe7, 0x4f, 0x4d, 0xd6, 0x4f, 0x1b, 0x2f, 0x6e, - 0x27, 0x23, 0x75, 0x6a, 0x65, 0x94, 0xd1, 0xda, 0x40, 0x64, 0x79, 0x11, 0xd9, 0xc9, 0xa1, 0x91, - 0x49, 0xa8, 0x03, 0xa1, 0x35, 0x61, 0x6e, 0x0d, 0xb3, 0x9b, 0x0e, 0xc3, 0xf1, 0x40, 0x7c, 0x49, - 0x6a, 0x07, 0x53, 0xa8, 0xbd, 0x74, 0x0a, 0x7f, 0xd5, 0xe0, 0xd8, 0x1e, 0x8e, 0xfe, 0xde, 0x09, - 0xbc, 0xaf, 0x41, 0x29, 0x75, 0x81, 0xea, 0x50, 0x70, 0x3c, 0x2f, 0xc2, 0x71, 0x2c, 0xf0, 0x97, - 0x56, 0xf4, 0x47, 0xf7, 0x16, 0x66, 0x95, 0xd9, 0x65, 0xc9, 0xd9, 0x64, 0x51, 0x10, 0xfa, 0x56, - 0x22, 0x88, 0x16, 0xa0, 0x40, 0x3b, 0x0d, 0x7b, 0x1b, 0xf7, 0x54, 0x8b, 0xce, 0x1a, 0xf2, 0x34, - 0x18, 0xc9, 0x69, 0x30, 0x96, 0xc3, 0x9e, 0x35, 0x41, 0x3b, 0x8d, 0xb7, 0x70, 0x8f, 0xe7, 0xa9, - 0x4b, 0x58, 0x10, 0xfa, 0x36, 0x25, 0x1f, 0xe2, 0x48, 0x60, 0xcf, 0x5b, 0x93, 0x92, 0xb6, 0xc1, - 0x49, 0xe8, 0x2c, 0x4c, 0xd3, 0x88, 0x50, 0x12, 0xe3, 0xc8, 0xa6, 0x51, 0x40, 0xa2, 0x80, 0xf5, - 0xf4, 0x71, 0x21, 0x37, 0x95, 0x30, 0x36, 0x14, 0xbd, 0x5a, 0x83, 0x23, 0x6b, 0x98, 0xad, 0xf0, - 0x34, 0x8f, 0x78, 0xae, 0xaa, 0x4f, 0x34, 0xd0, 0x77, 0xea, 0xa8, 0x3a, 0x5e, 0x80, 0xa2, 0xac, - 0x63, 0xe0, 0xa9, 0x7e, 0x29, 0x1b, 0xc9, 0x8c, 0x32, 0xe4, 0x08, 0xe9, 0xd6, 0x0c, 0xa1, 0xbb, - 0xbe, 0x6a, 0x15, 0x84, 0xec, 0xba, 0x87, 0x0c, 0x38, 0x20, 0x96, 0x2a, 0x07, 0xfa, 0x5e, 0x3a, - 0x96, 0x14, 0x43, 0xef, 0x41, 0x29, 0xf6, 0xb6, 0x6d, 0xa9, 0x23, 0xeb, 0xf7, 0xff, 0x61, 0xad, - 0x20, 0x01, 0xcf, 0x3c, 0xb9, 0xb7, 0x70, 0x48, 0x4a, 0x2e, 0xc4, 0xde, 0xf6, 0xfc, 0x39, 0xe3, - 0xfc, 0x45, 0xab, 0x18, 0x7b, 0xdb, 0x82, 0x5d, 0x3d, 0x02, 0xff, 0x49, 0x1b, 0x55, 0x7a, 0x94, - 0xd9, 0xe0, 0x53, 0xe0, 0xf0, 0xf3, 0x9c, 0x7f, 0x48, 0xcc, 0x33, 0x30, 0xbd, 0x86, 0xd9, 0x66, - 0x2f, 0x74, 0x79, 0x67, 0xaa, 0x78, 0x0d, 0x40, 0x59, 0xa2, 0x0a, 0x55, 0x87, 0x42, 0x2c, 0x49, - 0x22, 0xd2, 0xa2, 0x95, 0x6c, 0xab, 0xb3, 0x42, 0xfe, 0x36, 0xf1, 0xf0, 0x7a, 0xd8, 0x24, 0x89, - 0x95, 0x1f, 0x35, 0x98, 0x19, 0x20, 0x2b, 0x3b, 0x37, 0x61, 0xda, 0xc3, 0x4d, 0xa7, 0xd3, 0x62, - 0x76, 0x48, 0x3c, 0x6c, 0x07, 0x61, 0x93, 0xa8, 0xdc, 0xcd, 0xf7, 0xf3, 0x40, 0xeb, 0x94, 0x67, - 0x61, 0x55, 0x4a, 0xa6, 0x46, 0x0e, 0x79, 0x83, 0x04, 0xf4, 0x01, 0xcc, 0x38, 0x94, 0xb6, 0x02, - 0x57, 0x1c, 0x4a, 0xbb, 0x8b, 0xa3, 0xb8, 0x3f, 0xf2, 0xcf, 0x0e, 0x1d, 0x11, 0x52, 0x5c, 0x98, - 0x46, 0x19, 0x3b, 0x8a, 0x5e, 0xfd, 0x21, 0x07, 0x93, 0x19, 0x19, 0x84, 0x60, 0x3c, 0x74, 0xda, - 0x58, 0x1e, 0x71, 0x4b, 0xac, 0xd1, 0x51, 0x28, 0x3a, 0x94, 0xda, 0x82, 0x9e, 0x13, 0xf4, 0x82, - 0x43, 0xe9, 0x6d, 0xce, 0xd2, 0xa1, 0x90, 0x00, 0xca, 0x4b, 0x8e, 0xda, 0xa2, 0x63, 0x00, 0x7e, - 0xc0, 0x6c, 0x97, 0xb4, 0xdb, 0x01, 0x13, 0x27, 0xb4, 0x64, 0x95, 0xfc, 0x80, 0x5d, 0x15, 0x04, - 0xce, 0x6e, 0x74, 0x82, 0x96, 0x67, 0x33, 0xc7, 0x8f, 0xf5, 0x03, 0x92, 0x2d, 0x28, 0x77, 0x1c, - 0x3f, 0x16, 0xda, 0x24, 0x8d, 0x75, 0x42, 0x69, 0x13, 0x85, 0x14, 0x5d, 0x4b, 0xb4, 0x3d, 0x4c, - 0x63, 0xbd, 0x20, 0xa6, 0xe5, 0x89, 0x61, 0xa9, 0xb8, 0x45, 0xbc, 0x4e, 0x0b, 0x2b, 0x2f, 0xab, - 0x98, 0xc6, 0x68, 0x19, 0x90, 0xba, 0xeb, 0x79, 0xef, 0x25, 0xde, 0x8a, 0x62, 0xba, 0xed, 0xd2, - 0x56, 0x8b, 0xd6, 0x94, 0x24, 0x6c, 0x7a, 0xdb, 0x49, 0xfe, 0xae, 0xc3, 0x84, 0xb4, 0xcb, 0x33, - 0x47, 0x1d, 0xb6, 0x95, 0x64, 0x8e, 0xaf, 0xb3, 0xe9, 0xc9, 0x0d, 0xa6, 0x67, 0x0a, 0xf2, 0x71, - 0xa7, 0xad, 0x92, 0xc6, 0x97, 0xd5, 0x2d, 0x98, 0x5a, 0x5e, 0xb9, 0xba, 0xfe, 0x0e, 0x9f, 0xcd, - 0xc9, 0x94, 0x42, 0x30, 0xee, 0x39, 0xcc, 0x11, 0x36, 0x0f, 0x5a, 0x62, 0x9d, 0xfa, 0xc9, 0x65, - 0xfc, 0xf4, 0xa7, 0x59, 0x7e, 0xe0, 0x95, 0x30, 0x0b, 0x07, 0x68, 0x44, 0xba, 0x58, 0xe4, 0xbf, - 0x68, 0xc9, 0x4d, 0xf5, 0xf3, 0x1c, 0x4c, 0x67, 0x5c, 0xa9, 0xae, 0x45, 0x30, 0xee, 0x12, 0x4f, - 0x56, 0xfe, 0x5f, 0x96, 0x58, 0x73, 0x94, 0x2d, 0xe2, 0x27, 0x28, 0x5b, 0xc4, 0xe7, 0x52, 0xa2, - 0x9d, 0x65, 0x41, 0xc5, 0x9a, 0x7b, 0x09, 0x42, 0x0f, 0x7f, 0x24, 0xca, 0x98, 0xb7, 0xe4, 0x86, - 0xeb, 0xf2, 0xb9, 0x3f, 0x21, 0xa0, 0xf3, 0x25, 0x97, 0xeb, 0x3a, 0xad, 0x0e, 0xd6, 0x0b, 0x82, - 0x26, 0x37, 0x19, 0xec, 0xa5, 0x01, 0xec, 0x73, 0x50, 0xe2, 0x18, 0x62, 0xea, 0xb8, 0x58, 0x07, - 0xd9, 0x01, 0x29, 0x01, 0xbd, 0x0a, 0x25, 0xf1, 0xcc, 0xb4, 0x09, 0x8d, 0xf5, 0x49, 0x71, 0x16, - 0xe6, 0xfa, 0x67, 0x4b, 0xbe, 0x45, 0xf9, 0xf1, 0xda, 0xe0, 0x42, 0x6f, 0xd3, 0xd8, 0x2a, 0x52, - 0xb5, 0xba, 0x31, 0x5e, 0xcc, 0x4d, 0xe5, 0x6f, 0x8c, 0x17, 0x8b, 0x53, 0xa5, 0xea, 0x1a, 0x14, - 0x94, 0x04, 0x8f, 0x8c, 0x8f, 0xa6, 0xa4, 0x7e, 0x7c, 0x9d, 0xc4, 0x90, 0xeb, 0xc7, 0x90, 0x54, - 0x24, 0xdf, 0xaf, 0xc8, 0x6b, 0x39, 0x5d, 0xab, 0xde, 0x81, 0x62, 0xe2, 0x0a, 0xad, 0x42, 0x9e, - 0xa3, 0xd2, 0x44, 0x5b, 0x9e, 0x1c, 0xd6, 0x96, 0x4a, 0x6d, 0xa5, 0xf4, 0xe0, 0xb7, 0xe3, 0x63, - 0x5f, 0xff, 0xf9, 0xed, 0x19, 0xcd, 0xe2, 0xea, 0xdc, 0x6a, 0xfd, 0x27, 0x80, 0xc2, 0x26, 0x8e, - 0xba, 0x81, 0x8b, 0xd1, 0x37, 0x1a, 0x4c, 0x66, 0xa6, 0x0d, 0xaa, 0x0f, 0x33, 0xbc, 0x73, 0x62, - 0x95, 0x17, 0xf7, 0xa5, 0x23, 0x1b, 0xa3, 0x5a, 0xfb, 0xec, 0x97, 0x3f, 0xbe, 0xcc, 0x9d, 0x45, - 0xa7, 0xcd, 0x21, 0x8f, 0xe8, 0x74, 0xd8, 0xa1, 0xaf, 0x34, 0x80, 0xfe, 0x80, 0x45, 0xb5, 0x11, - 0xdc, 0x0e, 0x4e, 0xe8, 0x72, 0x7d, 0x3f, 0x2a, 0x0a, 0xa8, 0x29, 0x80, 0x9e, 0x46, 0x27, 0x87, - 0x01, 0x55, 0x63, 0x1d, 0x7d, 0xa7, 0xc1, 0xbf, 0x07, 0xaf, 0x3d, 0x74, 0x61, 0x04, 0xbf, 0x3b, - 0x2f, 0xd0, 0xf2, 0xd2, 0x7e, 0xd5, 0x14, 0xe4, 0x0b, 0x02, 0xb2, 0x89, 0x16, 0x86, 0x41, 0x16, - 0x17, 0x63, 0x6c, 0xb6, 0x84, 0x0d, 0x74, 0x5f, 0x83, 0xa9, 0xe7, 0x5f, 0x29, 0xe8, 0xe2, 0x08, - 0x18, 0x76, 0x7b, 0x0b, 0x95, 0x2f, 0xed, 0x5f, 0x51, 0xc1, 0xbf, 0x28, 0xe0, 0xd7, 0x90, 0x39, - 0x22, 0xfc, 0x8f, 0xe5, 0xd9, 0xfe, 0x04, 0x3d, 0xd2, 0x32, 0x4f, 0x91, 0xec, 0x9b, 0x19, 0x5d, - 0x1e, 0x39, 0x93, 0xbb, 0xbc, 0xe9, 0xcb, 0xaf, 0xbf, 0xa4, 0xb6, 0x8a, 0xe7, 0xb2, 0x88, 0x67, - 0x09, 0x9d, 0x1f, 0x16, 0x4f, 0xff, 0xb9, 0x8d, 0x59, 0x5a, 0x95, 0x27, 0x9a, 0x78, 0x6f, 0xee, - 0xf6, 0x2f, 0x85, 0xae, 0x8c, 0x00, 0xec, 0x05, 0xff, 0x81, 0xe5, 0x37, 0x5e, 0x5a, 0x5f, 0x85, - 0x76, 0x45, 0x84, 0x76, 0x09, 0x2d, 0xed, 0x2f, 0xb4, 0xb4, 0x62, 0xdf, 0x6b, 0x50, 0x4a, 0x2f, - 0x0d, 0x74, 0x6e, 0x18, 0x9c, 0xe7, 0xaf, 0xb2, 0x72, 0x6d, 0x1f, 0x1a, 0x0a, 0xf2, 0xb5, 0x9f, - 0x77, 0x5c, 0xc1, 0x4b, 0x22, 0x8a, 0x57, 0xd0, 0x99, 0x61, 0x51, 0x38, 0x0d, 0x37, 0xb0, 0xc5, - 0x7f, 0xce, 0xca, 0xad, 0x07, 0x4f, 0x2b, 0xda, 0xc3, 0xa7, 0x15, 0xed, 0xf7, 0xa7, 0x15, 0xed, - 0x8b, 0x67, 0x95, 0xb1, 0x87, 0xcf, 0x2a, 0x63, 0x8f, 0x9f, 0x55, 0xc6, 0xde, 0x5f, 0xf4, 0x03, - 0xb6, 0xd5, 0x69, 0xf0, 0x7b, 0x23, 0xb1, 0xd7, 0x77, 0x67, 0xba, 0xad, 0x00, 0x87, 0xcc, 0xf4, - 0x23, 0xea, 0x9a, 0x6e, 0x9b, 0xc5, 0x72, 0x0e, 0x37, 0x26, 0xc4, 0xaf, 0xcb, 0xe2, 0x5f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x65, 0x10, 0xfa, 0x9e, 0x59, 0x11, 0x00, 0x00, + // 1525 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xcb, 0x6f, 0xdb, 0x46, + 0x1a, 0x37, 0x25, 0xc7, 0x92, 0x3e, 0x65, 0x13, 0x7b, 0xec, 0x4d, 0x14, 0xad, 0xa3, 0x78, 0x05, + 0x6c, 0x9e, 0x6b, 0x32, 0x92, 0x63, 0x27, 0xbb, 0xc8, 0x66, 0x61, 0xc7, 0x59, 0xc7, 0xd9, 0x24, + 0x75, 0xe9, 0xa0, 0x05, 0x8a, 0x02, 0x04, 0x25, 0x8e, 0x68, 0xc2, 0x12, 0x67, 0xc2, 0x19, 0xa9, + 0x15, 0x8a, 0x02, 0x45, 0x4f, 0x3d, 0x16, 0xe8, 0xbf, 0xd0, 0x43, 0x7b, 0xeb, 0x21, 0x68, 0x6f, + 0x01, 0xda, 0x53, 0xd0, 0x53, 0x90, 0x02, 0x45, 0x90, 0x43, 0x51, 0x24, 0x05, 0xfa, 0x2f, 0xf4, + 0x58, 0xcc, 0x83, 0x14, 0x15, 0xdb, 0x91, 0x9d, 0x5b, 0x7b, 0x21, 0x66, 0xbe, 0xe7, 0xef, 0x7b, + 0xcc, 0x37, 0x43, 0x38, 0xdf, 0x24, 0xac, 0x43, 0x98, 0xd5, 0x70, 0x19, 0xb6, 0x38, 0x0e, 0x3d, + 0x1c, 0x75, 0x82, 0x90, 0x5b, 0xbd, 0x5a, 0x03, 0x73, 0xb7, 0x66, 0xdd, 0xef, 0xe2, 0xa8, 0x6f, + 0xd2, 0x88, 0x70, 0x82, 0x2a, 0x4a, 0xd6, 0x14, 0xb2, 0xe6, 0x40, 0xd6, 0xd4, 0xb2, 0xe5, 0x29, + 0xb7, 0x13, 0x84, 0xc4, 0x92, 0x5f, 0xa5, 0x52, 0xae, 0x34, 0x49, 0x07, 0xf3, 0x46, 0x8b, 0x5b, + 0xcd, 0xa8, 0x4f, 0x39, 0xb1, 0x7a, 0x35, 0x8b, 0x46, 0x84, 0xb4, 0x34, 0xff, 0x6f, 0x09, 0x9f, + 0xd6, 0xa9, 0x60, 0xf2, 0x3e, 0xc5, 0x4c, 0x33, 0x4f, 0x26, 0x4c, 0x49, 0x15, 0xec, 0x46, 0x9b, + 0x34, 0xb7, 0xf7, 0x66, 0xa7, 0xb5, 0x87, 0x22, 0x93, 0x61, 0x24, 0x41, 0x51, 0xd7, 0x0f, 0x42, + 0x97, 0x07, 0x24, 0xdc, 0x4d, 0x76, 0x97, 0x2c, 0xa4, 0xed, 0x9e, 0x50, 0xb2, 0x8e, 0xdc, 0x59, + 0x3a, 0x25, 0x8a, 0x35, 0xe3, 0x13, 0x9f, 0x28, 0xba, 0x58, 0x69, 0xea, 0xac, 0x4f, 0x88, 0xdf, + 0xc6, 0x96, 0x4b, 0x03, 0xcb, 0x0d, 0x43, 0xc2, 0xa5, 0xe7, 0xc4, 0x9c, 0xe6, 0xca, 0x5d, 0xa3, + 0xdb, 0xb2, 0xdc, 0x50, 0xe7, 0xbb, 0xfa, 0x91, 0x01, 0x95, 0x35, 0xcc, 0xdf, 0x72, 0xdb, 0x81, + 0xe7, 0x72, 0x12, 0x6d, 0x62, 0xbe, 0xd2, 0xbf, 0x89, 0x03, 0x7f, 0x8b, 0xdb, 0xf8, 0x7e, 0x17, + 0x33, 0x8e, 0x8e, 0xc1, 0xc4, 0x96, 0x24, 0x94, 0x8c, 0x39, 0xe3, 0x6c, 0xd6, 0xd6, 0x3b, 0xf4, + 0x3f, 0x80, 0x41, 0x90, 0xa5, 0xcc, 0x9c, 0x71, 0xb6, 0x58, 0x3f, 0x6d, 0xa6, 0xeb, 0xa7, 0x0a, + 0xab, 0x03, 0x34, 0x37, 0x5c, 0x1f, 0x6b, 0x9b, 0x76, 0x4a, 0xb3, 0xfa, 0xd4, 0x80, 0x53, 0x7b, + 0x42, 0x60, 0x94, 0x84, 0x0c, 0xa3, 0xbf, 0xc3, 0x61, 0x59, 0x16, 0x67, 0x08, 0x49, 0x51, 0xd2, + 0x94, 0x28, 0x5a, 0x07, 0xe8, 0xc5, 0x26, 0x58, 0x29, 0x33, 0x97, 0x3d, 0x5b, 0xac, 0x9f, 0x33, + 0x5f, 0xdd, 0x4e, 0x66, 0xe2, 0xd4, 0x4e, 0x29, 0xa3, 0xb5, 0xa1, 0xc8, 0xb2, 0x32, 0xb2, 0x33, + 0x23, 0x23, 0x53, 0x50, 0x87, 0x42, 0x6b, 0xc1, 0xec, 0x1a, 0xe6, 0xb7, 0x5d, 0x8e, 0xd9, 0x50, + 0x7c, 0x71, 0x6a, 0x87, 0x53, 0x68, 0xbc, 0x76, 0x0a, 0x7f, 0x34, 0xe0, 0xe4, 0x1e, 0x8e, 0xfe, + 0xd8, 0x09, 0x7c, 0x68, 0x40, 0x21, 0x71, 0x81, 0xea, 0x90, 0x73, 0x3d, 0x2f, 0xc2, 0x8c, 0x49, + 0xfc, 0x85, 0x95, 0xd2, 0x93, 0x07, 0xf3, 0x33, 0xda, 0xec, 0xb2, 0xe2, 0x6c, 0xf2, 0x28, 0x08, + 0x7d, 0x3b, 0x16, 0x44, 0xf3, 0x90, 0xa3, 0xdd, 0x86, 0xb3, 0x8d, 0xfb, 0xba, 0x45, 0x67, 0x4c, + 0x75, 0x1a, 0xcc, 0xf8, 0x34, 0x98, 0xcb, 0x61, 0xdf, 0x9e, 0xa0, 0xdd, 0xc6, 0xff, 0x71, 0x5f, + 0xe4, 0xa9, 0x47, 0x78, 0x10, 0xfa, 0x0e, 0x25, 0xef, 0xe1, 0x48, 0x62, 0xcf, 0xda, 0x45, 0x45, + 0xdb, 0x10, 0x24, 0x74, 0x01, 0xa6, 0x68, 0x44, 0x28, 0x61, 0x38, 0x72, 0x68, 0x14, 0x90, 0x28, + 0xe0, 0xfd, 0xd2, 0xb8, 0x94, 0x9b, 0x8c, 0x19, 0x1b, 0x9a, 0x5e, 0xad, 0xc1, 0xf1, 0x35, 0xcc, + 0x57, 0x44, 0x9a, 0xf7, 0x79, 0xae, 0xaa, 0xcf, 0x0c, 0x28, 0xed, 0xd4, 0xd1, 0x75, 0x5c, 0x84, + 0xbc, 0xaa, 0x63, 0xe0, 0xe9, 0x7e, 0x29, 0x9b, 0xf1, 0x8c, 0x32, 0xd5, 0x08, 0xe9, 0xd5, 0x4c, + 0xa9, 0xbb, 0xbe, 0x6a, 0xe7, 0xa4, 0xec, 0xba, 0x87, 0x4c, 0x38, 0x24, 0x97, 0x3a, 0x07, 0xa5, + 0xbd, 0x74, 0x6c, 0x25, 0x86, 0xde, 0x86, 0x02, 0xf3, 0xb6, 0x1d, 0xa5, 0xa3, 0xea, 0xf7, 0x8f, + 0x51, 0xad, 0xa0, 0x00, 0x4f, 0x3f, 0x7b, 0x30, 0x7f, 0x54, 0x49, 0xce, 0x33, 0x6f, 0x7b, 0xee, + 0xa2, 0x79, 0xe9, 0xb2, 0x9d, 0x67, 0xde, 0xb6, 0x64, 0x57, 0x8f, 0xc3, 0x5f, 0x93, 0x46, 0x55, + 0x1e, 0x55, 0x36, 0xc4, 0x14, 0x38, 0xf6, 0x32, 0xe7, 0x4f, 0x12, 0xf3, 0x34, 0x4c, 0xad, 0x61, + 0xbe, 0xd9, 0x0f, 0x9b, 0xa2, 0x33, 0x75, 0xbc, 0x26, 0xa0, 0x34, 0x51, 0x87, 0x5a, 0x82, 0x1c, + 0x53, 0x24, 0x19, 0x69, 0xde, 0x8e, 0xb7, 0xd5, 0x19, 0x29, 0x7f, 0x97, 0x78, 0x78, 0x3d, 0x6c, + 0x91, 0xd8, 0xca, 0xb7, 0x06, 0x4c, 0x0f, 0x91, 0xb5, 0x9d, 0xdb, 0x30, 0xe5, 0xe1, 0x96, 0xdb, + 0x6d, 0x73, 0x27, 0x24, 0x1e, 0x76, 0x82, 0xb0, 0x45, 0x74, 0xee, 0xe6, 0x06, 0x79, 0xa0, 0x75, + 0x2a, 0xb2, 0xb0, 0xaa, 0x24, 0x13, 0x23, 0x47, 0xbd, 0x61, 0x02, 0x7a, 0x17, 0xa6, 0x5d, 0x4a, + 0xdb, 0x41, 0x53, 0x1e, 0x4a, 0xa7, 0x87, 0x23, 0x36, 0x18, 0xf9, 0x17, 0x46, 0x8e, 0x08, 0x25, + 0x2e, 0x4d, 0xa3, 0x94, 0x1d, 0x4d, 0xaf, 0xfe, 0x96, 0x85, 0x62, 0x4a, 0x06, 0x21, 0x18, 0x0f, + 0xdd, 0x0e, 0x56, 0x47, 0xdc, 0x96, 0x6b, 0x74, 0x02, 0xf2, 0x2e, 0xa5, 0x8e, 0xa4, 0x67, 0x24, + 0x3d, 0xe7, 0x52, 0x7a, 0x57, 0xb0, 0x4a, 0x90, 0x8b, 0x01, 0x65, 0x15, 0x47, 0x6f, 0xd1, 0x49, + 0x00, 0x3f, 0xe0, 0x4e, 0x93, 0x74, 0x3a, 0x01, 0x97, 0x27, 0xb4, 0x60, 0x17, 0xfc, 0x80, 0x5f, + 0x97, 0x04, 0xc1, 0x6e, 0x74, 0x83, 0xb6, 0xe7, 0x70, 0xd7, 0x67, 0xa5, 0x43, 0x8a, 0x2d, 0x29, + 0xf7, 0x5c, 0x9f, 0x49, 0x6d, 0x92, 0xc4, 0x3a, 0xa1, 0xb5, 0x89, 0x46, 0x8a, 0x6e, 0xc4, 0xda, + 0x1e, 0xa6, 0xac, 0x94, 0x93, 0xd3, 0xf2, 0xf4, 0xa8, 0x54, 0xdc, 0x21, 0x5e, 0xb7, 0x8d, 0xb5, + 0x97, 0x55, 0x4c, 0x19, 0x5a, 0x06, 0xa4, 0xef, 0x7a, 0xd1, 0x7b, 0xb1, 0xb7, 0xbc, 0x9c, 0x6e, + 0xbb, 0xb4, 0xd5, 0x82, 0x3d, 0xa9, 0x08, 0x9b, 0xde, 0xf6, 0x00, 0xc9, 0x8c, 0xac, 0xa8, 0xc3, + 0x70, 0xd4, 0xc3, 0x51, 0x62, 0xa4, 0xb0, 0x87, 0x91, 0xc5, 0xba, 0x8d, 0xa4, 0xc2, 0xa6, 0x94, + 0x8f, 0xcd, 0x5c, 0x85, 0xa3, 0x51, 0x37, 0xe4, 0x41, 0x07, 0x27, 0x16, 0x60, 0x6f, 0x0b, 0x47, + 0xb4, 0x6c, 0xac, 0x7d, 0x09, 0x8a, 0x8c, 0xb7, 0x12, 0xcd, 0xe2, 0xde, 0x9a, 0xc0, 0x78, 0x2b, + 0x2e, 0xfd, 0x4d, 0x98, 0x50, 0x29, 0x11, 0x45, 0xa7, 0x2e, 0xdf, 0x8a, 0x8b, 0x2e, 0xd6, 0xe9, + 0xca, 0x66, 0x86, 0x2b, 0x3b, 0x09, 0x59, 0xd6, 0xed, 0xe8, 0x7a, 0x8b, 0x65, 0x75, 0x0b, 0x26, + 0x97, 0x57, 0xae, 0xaf, 0xbf, 0x29, 0xae, 0x95, 0x78, 0xc0, 0x22, 0x18, 0xf7, 0x5c, 0xee, 0x4a, + 0x9b, 0x87, 0x6d, 0xb9, 0x4e, 0xfc, 0x64, 0x52, 0x7e, 0x06, 0x83, 0x38, 0x3b, 0xf4, 0xc0, 0x99, + 0x81, 0x43, 0x34, 0x22, 0x3d, 0x2c, 0x5b, 0x27, 0x6f, 0xab, 0x4d, 0xf5, 0x93, 0x0c, 0x4c, 0xa5, + 0x5c, 0xe9, 0x03, 0x87, 0x60, 0xbc, 0x49, 0x3c, 0xd5, 0xb4, 0x7f, 0xb1, 0xe5, 0x5a, 0xa0, 0x6c, + 0x13, 0x3f, 0x46, 0xd9, 0x26, 0xbe, 0x90, 0x92, 0x27, 0x51, 0xf5, 0xa2, 0x5c, 0x0b, 0x2f, 0x41, + 0xe8, 0xe1, 0xf7, 0x65, 0x07, 0x66, 0x6d, 0xb5, 0x11, 0xba, 0xe2, 0xca, 0x9a, 0x90, 0xd0, 0xc5, + 0x52, 0xc8, 0xf5, 0xdc, 0x76, 0x17, 0x97, 0x72, 0x92, 0xa6, 0x36, 0x29, 0xec, 0x85, 0x21, 0xec, + 0xb3, 0x50, 0x10, 0x18, 0x18, 0x75, 0x9b, 0x58, 0xd5, 0xd1, 0x1e, 0x10, 0xd0, 0xbf, 0xa0, 0x20, + 0x5f, 0xc8, 0x0e, 0xa1, 0x4c, 0xd6, 0xaa, 0x58, 0x9f, 0x1d, 0x8c, 0x05, 0xf5, 0x8c, 0x16, 0x93, + 0x61, 0x43, 0x08, 0xbd, 0x41, 0x99, 0x9d, 0xa7, 0x7a, 0x75, 0x6b, 0x3c, 0x9f, 0x99, 0xcc, 0xde, + 0x1a, 0xcf, 0xe7, 0x27, 0x0b, 0xd5, 0x35, 0xc8, 0x69, 0x09, 0x11, 0x99, 0x98, 0xaa, 0x71, 0xfd, + 0xc4, 0x3a, 0x8e, 0x21, 0x33, 0x88, 0x21, 0xae, 0x48, 0x76, 0x50, 0x91, 0x7f, 0x67, 0x4a, 0x46, + 0xf5, 0x1e, 0xe4, 0x63, 0x57, 0x68, 0x15, 0xb2, 0x02, 0x95, 0x21, 0x4f, 0xd4, 0x99, 0x51, 0x27, + 0x4a, 0xab, 0xad, 0x14, 0x1e, 0xfd, 0x74, 0x6a, 0xec, 0x8b, 0x5f, 0xbf, 0x3a, 0x6f, 0xd8, 0x42, + 0x5d, 0x58, 0xad, 0x7f, 0x07, 0x90, 0x13, 0x3d, 0x1e, 0x34, 0x31, 0xfa, 0xd2, 0x80, 0x62, 0x6a, + 0x50, 0xa2, 0xfa, 0x28, 0xc3, 0x3b, 0x87, 0x6d, 0x79, 0xe1, 0x40, 0x3a, 0xaa, 0x31, 0xaa, 0xb5, + 0x8f, 0x7f, 0xf8, 0xe5, 0xb3, 0xcc, 0x05, 0x74, 0xce, 0x1a, 0xf1, 0xfe, 0x4f, 0xe6, 0x34, 0xfa, + 0xdc, 0x00, 0x18, 0xdc, 0x0d, 0xa8, 0xb6, 0x0f, 0xb7, 0xc3, 0x97, 0x4b, 0xb9, 0x7e, 0x10, 0x15, + 0x0d, 0xd4, 0x92, 0x40, 0xcf, 0xa1, 0x33, 0xa3, 0x80, 0xea, 0x1b, 0x09, 0x7d, 0x6d, 0xc0, 0x91, + 0xe1, 0x1b, 0x1b, 0x2d, 0xee, 0xc3, 0xef, 0xce, 0xbb, 0xbf, 0xbc, 0x74, 0x50, 0x35, 0x0d, 0x79, + 0x51, 0x42, 0xb6, 0xd0, 0xfc, 0x28, 0xc8, 0xf2, 0x4e, 0x67, 0x56, 0x5b, 0xda, 0x40, 0x0f, 0x0d, + 0x98, 0x7c, 0xf9, 0x81, 0x85, 0x2e, 0xef, 0x03, 0xc3, 0x6e, 0xcf, 0xb8, 0xf2, 0x95, 0x83, 0x2b, + 0x6a, 0xf8, 0x97, 0x25, 0xfc, 0x1a, 0xb2, 0xf6, 0x09, 0xff, 0x03, 0x75, 0xb6, 0x3f, 0x44, 0x4f, + 0x8c, 0xd4, 0x2b, 0x2a, 0xfd, 0xdc, 0x47, 0x57, 0xf7, 0x9d, 0xc9, 0x5d, 0x7e, 0x47, 0xca, 0xff, + 0x79, 0x4d, 0x6d, 0x1d, 0xcf, 0x55, 0x19, 0xcf, 0x12, 0xba, 0x34, 0x2a, 0x9e, 0xc1, 0x9f, 0x02, + 0xe6, 0x49, 0x55, 0x9e, 0x19, 0xf2, 0xa9, 0xbc, 0xdb, 0x6f, 0x20, 0xba, 0xb6, 0x0f, 0x60, 0xaf, + 0xf8, 0x85, 0x2d, 0xff, 0xf7, 0xb5, 0xf5, 0x75, 0x68, 0xd7, 0x64, 0x68, 0x57, 0xd0, 0xd2, 0xc1, + 0x42, 0x4b, 0x2a, 0xf6, 0x8d, 0x01, 0x85, 0xe4, 0xd2, 0x40, 0x17, 0x47, 0xc1, 0x79, 0xf9, 0x2a, + 0x2b, 0xd7, 0x0e, 0xa0, 0xa1, 0x21, 0xdf, 0xf8, 0x7e, 0xc7, 0xeb, 0x61, 0x49, 0x46, 0xf1, 0x4f, + 0x74, 0x7e, 0x54, 0x14, 0x6e, 0xa3, 0x19, 0x38, 0xf2, 0x17, 0x6d, 0xe5, 0xce, 0xa3, 0xe7, 0x15, + 0xe3, 0xf1, 0xf3, 0x8a, 0xf1, 0xf3, 0xf3, 0x8a, 0xf1, 0xe9, 0x8b, 0xca, 0xd8, 0xe3, 0x17, 0x95, + 0xb1, 0xa7, 0x2f, 0x2a, 0x63, 0xef, 0x2c, 0xf8, 0x01, 0xdf, 0xea, 0x36, 0xc4, 0xbd, 0x11, 0xdb, + 0x1b, 0xb8, 0xb3, 0x9a, 0xed, 0x00, 0x87, 0xdc, 0xf2, 0x23, 0xda, 0xb4, 0x9a, 0x1d, 0xce, 0xd4, + 0x1c, 0x6e, 0x4c, 0xc8, 0xbf, 0xae, 0x85, 0xdf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x77, 0x79, + 0x79, 0x14, 0x12, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2159,6 +2187,27 @@ func (m *VersionInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.StfVersion) > 0 { + i -= len(m.StfVersion) + copy(dAtA[i:], m.StfVersion) + i = encodeVarintQuery(dAtA, i, uint64(len(m.StfVersion))) + i-- + dAtA[i] = 0x5a + } + if len(m.RuntimeVersion) > 0 { + i -= len(m.RuntimeVersion) + copy(dAtA[i:], m.RuntimeVersion) + i = encodeVarintQuery(dAtA, i, uint64(len(m.RuntimeVersion))) + i-- + dAtA[i] = 0x52 + } + if len(m.CometServerVersion) > 0 { + i -= len(m.CometServerVersion) + copy(dAtA[i:], m.CometServerVersion) + i = encodeVarintQuery(dAtA, i, uint64(len(m.CometServerVersion))) + i-- + dAtA[i] = 0x4a + } if len(m.CosmosSdkVersion) > 0 { i -= len(m.CosmosSdkVersion) copy(dAtA[i:], m.CosmosSdkVersion) @@ -2744,6 +2793,18 @@ func (m *VersionInfo) Size() (n int) { if l > 0 { n += 1 + l + sovQuery(uint64(l)) } + l = len(m.CometServerVersion) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.RuntimeVersion) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.StfVersion) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } return n } @@ -4514,6 +4575,102 @@ func (m *VersionInfo) Unmarshal(dAtA []byte) error { } m.CosmosSdkVersion = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CometServerVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CometServerVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RuntimeVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RuntimeVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StfVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StfVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) diff --git a/client/grpc/cmtservice/service.go b/client/grpc/cmtservice/service.go index 7d56efd3389d..aabbee441bea 100644 --- a/client/grpc/cmtservice/service.go +++ b/client/grpc/cmtservice/service.go @@ -227,14 +227,17 @@ func (s queryServer) GetNodeInfo(ctx context.Context, _ *GetNodeInfoRequest) (*G resp := GetNodeInfoResponse{ DefaultNodeInfo: protoNodeInfo, ApplicationVersion: &VersionInfo{ - AppName: nodeInfo.AppName, - Name: nodeInfo.Name, - GitCommit: nodeInfo.GitCommit, - GoVersion: nodeInfo.GoVersion, - Version: nodeInfo.Version, - BuildTags: nodeInfo.BuildTags, - BuildDeps: deps, - CosmosSdkVersion: nodeInfo.CosmosSdkVersion, + AppName: nodeInfo.AppName, + Name: nodeInfo.Name, + GitCommit: nodeInfo.GitCommit, + GoVersion: nodeInfo.GoVersion, + Version: nodeInfo.Version, + BuildTags: nodeInfo.BuildTags, + BuildDeps: deps, + CosmosSdkVersion: nodeInfo.CosmosSdkVersion, + RuntimeVersion: nodeInfo.RuntimeVersion, + CometServerVersion: nodeInfo.CometServerVersion, + StfVersion: nodeInfo.StfVersion, }, } return &resp, nil diff --git a/proto/cosmos/base/tendermint/v1beta1/query.proto b/proto/cosmos/base/tendermint/v1beta1/query.proto index 70c6588985d3..c5462b523678 100644 --- a/proto/cosmos/base/tendermint/v1beta1/query.proto +++ b/proto/cosmos/base/tendermint/v1beta1/query.proto @@ -143,14 +143,17 @@ message GetNodeInfoResponse { // VersionInfo is the type for the GetNodeInfoResponse message. message VersionInfo { - string name = 1; - string app_name = 2; - string version = 3; - string git_commit = 4; - string build_tags = 5; - string go_version = 6; - repeated Module build_deps = 7; - string cosmos_sdk_version = 8 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.43"]; + string name = 1; + string app_name = 2; + string version = 3; + string git_commit = 4; + string build_tags = 5; + string go_version = 6; + repeated Module build_deps = 7; + string cosmos_sdk_version = 8 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.43"]; + string comet_server_version = 9 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.52"]; + string runtime_version = 10 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.52"]; + string stf_version = 11 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.52"]; } // Module is the type for VersionInfo diff --git a/version/build_test.go b/version/build_test.go new file mode 100644 index 000000000000..1f00abba8e0b --- /dev/null +++ b/version/build_test.go @@ -0,0 +1,166 @@ +package version + +import ( + "runtime/debug" + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_getSDKBuildInfo(t *testing.T) { + tests := []struct { + name string + debugBuildInfo *debug.BuildInfo + want sdkBuildInfo + }{ + { + name: "no deps", + debugBuildInfo: &debug.BuildInfo{ + Deps: nil, + }, + want: sdkBuildInfo{}, + }, + { + name: "cosmos-sdk dep only", + debugBuildInfo: &debug.BuildInfo{ + Deps: []*debug.Module{ + { + Path: "github.com/cosmos/cosmos-sdk", + Version: "v2.0.0", + }, + }, + }, + want: sdkBuildInfo{ + sdkVersion: "v2.0.0", + }, + }, + { + name: "all depo", + debugBuildInfo: &debug.BuildInfo{ + Deps: []*debug.Module{ + { + Path: "github.com/cosmos/cosmos-sdk", + Version: "v2.0.0", + }, + { + Path: "cosmossdk.io/server/v2/cometbft", + Version: "v2.0.1", + }, + { + Path: "cosmossdk.io/runtime/v2", + Version: "v2.0.2", + }, + { + Path: "cosmossdk.io/server/v2/stf", + Version: "v2.0.3", + }, + }, + }, + want: sdkBuildInfo{ + sdkVersion: "v2.0.0", + cometServerVersion: "v2.0.1", + runtimeVersion: "v2.0.2", + stfVersion: "v2.0.3", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + require.Equal(t, tt.want, getSDKBuildInfo(tt.debugBuildInfo)) + }) + } +} + +func Test_extractVersionFromBuildInfo(t *testing.T) { + tests := []struct { + name string + dep *debug.Module + want string + }{ + { + name: "no replace", + dep: &debug.Module{ + Path: "github.com/cosmos/cosmos-sdk", + Version: "v2.0.0", + }, + want: "v2.0.0", + }, + { + name: "devel replace ", + dep: &debug.Module{ + Path: "github.com/cosmos/cosmos-sdk", + Version: "v2.0.0", + Replace: &debug.Module{ + Version: "(devel)", + }, + }, + want: "v2.0.0", + }, + { + name: "non-devel replace ", + dep: &debug.Module{ + Path: "github.com/cosmos/cosmos-sdk", + Version: "v2.0.0", + Replace: &debug.Module{ + Version: "v1.0.3", + }, + }, + want: "v1.0.3", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + require.Equal(t, tt.want, extractVersionFromBuildInfo(tt.dep)) + }) + } +} + +func Test_depsFromBuildInfo(t *testing.T) { + modules := []*debug.Module{ + { + Path: "github.com/cosmos/cosmos-sdk", + Version: "v2.0.0", + }, + { + Path: "cosmossdk.io/server/v2/cometbft", + Version: "v2.0.1", + }, + { + Path: "cosmossdk.io/runtime/v2", + Version: "v2.0.2", + }, + { + Path: "cosmossdk.io/server/v2/stf", + Version: "v2.0.3", + }, + } + + tests := []struct { + name string + debugBuildInfo *debug.BuildInfo + want []buildDep + }{ + { + name: "no deps", + debugBuildInfo: &debug.BuildInfo{}, + want: nil, + }, + { + name: "deps", + debugBuildInfo: &debug.BuildInfo{ + Deps: modules, + }, + want: []buildDep{ + {modules[0]}, + {modules[1]}, + {modules[2]}, + {modules[3]}, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + require.Equal(t, tt.want, depsFromBuildInfo(tt.debugBuildInfo)) + }) + } +} diff --git a/version/version.go b/version/version.go index 8f1f040d471c..6f07624335f9 100644 --- a/version/version.go +++ b/version/version.go @@ -39,23 +39,37 @@ var ( BuildTags = "" ) -func getSDKVersion() string { - deps, ok := debug.ReadBuildInfo() - if !ok { - return "unable to read deps" - } - var sdkVersion string - for _, dep := range deps.Deps { - if dep.Path == "github.com/cosmos/cosmos-sdk" { - if dep.Replace != nil && dep.Replace.Version != "(devel)" { - sdkVersion = dep.Replace.Version - } else { - sdkVersion = dep.Version - } +type sdkBuildInfo struct { + sdkVersion string + runtimeVersion string + stfVersion string + cometServerVersion string +} + +func getSDKBuildInfo(debugBuildInfo *debug.BuildInfo) sdkBuildInfo { + var buildInfo sdkBuildInfo + for _, dep := range debugBuildInfo.Deps { + switch dep.Path { + case "github.com/cosmos/cosmos-sdk": + buildInfo.sdkVersion = extractVersionFromBuildInfo(dep) + case "cosmossdk.io/server/v2/cometbft": + buildInfo.cometServerVersion = extractVersionFromBuildInfo(dep) + case "cosmossdk.io/runtime/v2": + buildInfo.runtimeVersion = extractVersionFromBuildInfo(dep) + case "cosmossdk.io/server/v2/stf": + buildInfo.stfVersion = extractVersionFromBuildInfo(dep) } } - return sdkVersion + return buildInfo +} + +func extractVersionFromBuildInfo(dep *debug.Module) string { + if dep.Replace != nil && dep.Replace.Version != "(devel)" { + return dep.Replace.Version + } + + return dep.Version } // ExtraInfo contains a set of extra information provided by apps @@ -63,29 +77,43 @@ type ExtraInfo map[string]string // Info defines the application version information. type Info struct { - Name string `json:"name" yaml:"name"` - AppName string `json:"server_name" yaml:"server_name"` - Version string `json:"version" yaml:"version"` - GitCommit string `json:"commit" yaml:"commit"` - BuildTags string `json:"build_tags" yaml:"build_tags"` - GoVersion string `json:"go" yaml:"go"` - BuildDeps []buildDep `json:"build_deps" yaml:"build_deps"` - CosmosSdkVersion string `json:"cosmos_sdk_version" yaml:"cosmos_sdk_version"` - ExtraInfo ExtraInfo `json:"extra_info,omitempty" yaml:"extra_info,omitempty"` + Name string `json:"name" yaml:"name"` + AppName string `json:"server_name" yaml:"server_name"` + Version string `json:"version" yaml:"version"` + GitCommit string `json:"commit" yaml:"commit"` + BuildTags string `json:"build_tags" yaml:"build_tags"` + GoVersion string `json:"go" yaml:"go"` + BuildDeps []buildDep `json:"build_deps" yaml:"build_deps"` + CosmosSdkVersion string `json:"cosmos_sdk_version" yaml:"cosmos_sdk_version"` + RuntimeVersion string `json:"runtime_version,omitempty" yaml:"runtime_version,omitempty"` + StfVersion string `json:"stf_version,omitempty" yaml:"stf_version,omitempty"` + CometServerVersion string `json:"comet_server_version,omitempty" yaml:"comet_server_version,omitempty"` + ExtraInfo ExtraInfo `json:"extra_info,omitempty" yaml:"extra_info,omitempty"` } func NewInfo() Info { - sdkVersion := getSDKVersion() - return Info{ + info := Info{ Name: Name, AppName: AppName, Version: Version, GitCommit: Commit, BuildTags: BuildTags, GoVersion: fmt.Sprintf("go version %s %s/%s", runtime.Version(), runtime.GOOS, runtime.GOARCH), - BuildDeps: depsFromBuildInfo(), - CosmosSdkVersion: sdkVersion, + CosmosSdkVersion: "unable to read deps", + } + + // use debug info more granular build info if available + debugBuildInfo, ok := debug.ReadBuildInfo() + if ok { + info.BuildDeps = depsFromBuildInfo(debugBuildInfo) + sdkBuildInfo := getSDKBuildInfo(debugBuildInfo) + info.CosmosSdkVersion = sdkBuildInfo.sdkVersion + info.RuntimeVersion = sdkBuildInfo.runtimeVersion + info.StfVersion = sdkBuildInfo.stfVersion + info.CometServerVersion = sdkBuildInfo.cometServerVersion } + + return info } func (vi Info) String() string { @@ -97,13 +125,8 @@ build tags: %s ) } -func depsFromBuildInfo() (deps []buildDep) { - buildInfo, ok := debug.ReadBuildInfo() - if !ok { - return nil - } - - for _, dep := range buildInfo.Deps { +func depsFromBuildInfo(debugBuildInfo *debug.BuildInfo) (deps []buildDep) { + for _, dep := range debugBuildInfo.Deps { deps = append(deps, buildDep{dep}) } From 57b4d3003b841ebc37c5e3d4fb7c55734c95a045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Toledano?= Date: Tue, 10 Dec 2024 21:20:30 +0100 Subject: [PATCH 35/62] fix(client/v2/autocli): add CoinDec flag (#22817) Co-authored-by: Marko Co-authored-by: Julien Robert --- client/v2/CHANGELOG.md | 1 + client/v2/autocli/flag/builder.go | 1 + client/v2/autocli/flag/coin.go | 4 ++ client/v2/autocli/flag/dec_coin.go | 58 ++++++++++++++++++++++ client/v2/go.mod | 2 +- client/v2/go.sum | 4 +- client/v2/internal/coins/format.go | 39 ++++++++++++--- client/v2/internal/coins/format_test.go | 66 +++++++++++++++++++++++-- go.mod | 3 +- go.sum | 2 + indexer/postgres/go.mod | 2 +- indexer/postgres/tests/go.mod | 2 +- runtime/v2/go.mod | 3 +- runtime/v2/go.sum | 2 + schema/testing/go.mod | 2 +- server/v2/cometbft/go.mod | 3 +- server/v2/cometbft/go.sum | 2 + server/v2/go.mod | 3 +- server/v2/go.sum | 2 + server/v2/stf/go.mod | 4 +- server/v2/stf/go.sum | 2 + simapp/go.mod | 3 +- simapp/go.sum | 2 + simapp/v2/go.mod | 3 +- simapp/v2/go.sum | 2 + tests/go.mod | 3 +- tests/go.sum | 2 + x/accounts/defaults/base/go.mod | 2 +- x/accounts/defaults/base/go.sum | 4 +- x/accounts/defaults/lockup/go.mod | 2 +- x/accounts/defaults/lockup/go.sum | 4 +- x/accounts/defaults/multisig/go.mod | 2 +- x/accounts/defaults/multisig/go.sum | 4 +- x/accounts/go.mod | 3 +- x/accounts/go.sum | 2 + x/authz/go.mod | 2 +- x/authz/go.sum | 4 +- x/bank/go.mod | 2 +- x/bank/go.sum | 4 +- x/circuit/go.mod | 2 +- x/circuit/go.sum | 4 +- x/consensus/go.mod | 2 +- x/consensus/go.sum | 4 +- x/distribution/go.mod | 3 +- x/distribution/go.sum | 2 + x/epochs/go.mod | 2 +- x/epochs/go.sum | 4 +- x/evidence/go.mod | 2 +- x/evidence/go.sum | 4 +- x/feegrant/go.mod | 2 +- x/feegrant/go.sum | 4 +- x/gov/go.mod | 2 +- x/gov/go.sum | 4 +- x/group/go.mod | 2 +- x/group/go.sum | 4 +- x/mint/go.mod | 2 +- x/mint/go.sum | 4 +- x/nft/go.mod | 2 +- x/nft/go.sum | 4 +- x/params/go.mod | 2 +- x/params/go.sum | 4 +- x/protocolpool/go.mod | 2 +- x/protocolpool/go.sum | 4 +- x/slashing/go.mod | 2 +- x/slashing/go.sum | 4 +- x/staking/go.mod | 2 +- x/staking/go.sum | 4 +- x/upgrade/go.mod | 2 +- x/upgrade/go.sum | 4 +- 69 files changed, 251 insertions(+), 95 deletions(-) create mode 100644 client/v2/autocli/flag/dec_coin.go diff --git a/client/v2/CHANGELOG.md b/client/v2/CHANGELOG.md index 27f312a99925..33052c9000e7 100644 --- a/client/v2/CHANGELOG.md +++ b/client/v2/CHANGELOG.md @@ -60,6 +60,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#21853](https://github.com/cosmos/cosmos-sdk/pull/21853) Fix `*big.Int` unmarshalling in txs. * [#22576](https://github.com/cosmos/cosmos-sdk/pull/22576) Fix duplicate command addition in `autocli` when custom enhanced command has a different name than module name +* [#22817](https://github.com/cosmos/cosmos-sdk/pull/22817) Add DecCoin support in autocli flag builder. ## [v2.0.0-beta.5] - 2024-09-18 diff --git a/client/v2/autocli/flag/builder.go b/client/v2/autocli/flag/builder.go index bdd42634dd35..61e7c7393eef 100644 --- a/client/v2/autocli/flag/builder.go +++ b/client/v2/autocli/flag/builder.go @@ -60,6 +60,7 @@ func (b *Builder) init() { b.messageFlagTypes["google.protobuf.Timestamp"] = timestampType{} b.messageFlagTypes["google.protobuf.Duration"] = durationType{} b.messageFlagTypes["cosmos.base.v1beta1.Coin"] = coinType{} + b.messageFlagTypes["cosmos.base.v1beta1.DecCoin"] = decCoinType{} } if b.scalarFlagTypes == nil { diff --git a/client/v2/autocli/flag/coin.go b/client/v2/autocli/flag/coin.go index f317d8585776..c6ec9f363e0a 100644 --- a/client/v2/autocli/flag/coin.go +++ b/client/v2/autocli/flag/coin.go @@ -33,6 +33,10 @@ func (c *coinValue) Get(protoreflect.Value) (protoreflect.Value, error) { } func (c *coinValue) String() string { + if c.value == nil { + return "" + } + return c.value.String() } diff --git a/client/v2/autocli/flag/dec_coin.go b/client/v2/autocli/flag/dec_coin.go new file mode 100644 index 000000000000..18f9bf1eb284 --- /dev/null +++ b/client/v2/autocli/flag/dec_coin.go @@ -0,0 +1,58 @@ +package flag + +import ( + "context" + "errors" + "strings" + + "google.golang.org/protobuf/reflect/protoreflect" + + basev1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + "cosmossdk.io/client/v2/internal/coins" +) + +type decCoinType struct{} + +type decCoinValue struct { + value *basev1beta1.DecCoin +} + +func (c decCoinType) NewValue(*context.Context, *Builder) Value { + return &decCoinValue{} +} + +func (c decCoinType) DefaultValue() string { + return "zero" +} + +func (c *decCoinValue) Get(protoreflect.Value) (protoreflect.Value, error) { + if c.value == nil { + return protoreflect.Value{}, nil + } + return protoreflect.ValueOfMessage(c.value.ProtoReflect()), nil +} + +func (c *decCoinValue) String() string { + if c.value == nil { + return "" + } + + return c.value.String() +} + +func (c *decCoinValue) Set(stringValue string) error { + if strings.Contains(stringValue, ",") { + return errors.New("coin flag must be a single coin, specific multiple coins with multiple flags or spaces") + } + + coin, err := coins.ParseDecCoin(stringValue) + if err != nil { + return err + } + c.value = coin + return nil +} + +func (c *decCoinValue) Type() string { + return "cosmos.base.v1beta1.DecCoin" +} diff --git a/client/v2/go.mod b/client/v2/go.mod index 52ab0c0b20a4..a2daf5013614 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -39,7 +39,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.5.0 cosmossdk.io/math v1.4.0 - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect filippo.io/edwards25519 v1.1.0 // indirect diff --git a/client/v2/go.sum b/client/v2/go.sum index 2222f2852373..fb5e79737848 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= diff --git a/client/v2/internal/coins/format.go b/client/v2/internal/coins/format.go index c447040c2456..b3ca0866a83d 100644 --- a/client/v2/internal/coins/format.go +++ b/client/v2/internal/coins/format.go @@ -16,20 +16,47 @@ var coinRegex = regexp.MustCompile(`^(\d+(\.\d+)?)([a-zA-Z][a-zA-Z0-9\/\:\._\-]{ // ParseCoin parses a coin from a string. The string must be in the format // , where is a number and is a valid denom. func ParseCoin(input string) (*basev1beta1.Coin, error) { + amount, denom, err := parseCoin(input) + if err != nil { + return nil, err + } + + return &basev1beta1.Coin{ + Amount: amount, + Denom: denom, + }, nil +} + +// ParseDecCoin parses a decCoin from a string. The string must be in the format +// , where is a number and is a valid denom. +func ParseDecCoin(input string) (*basev1beta1.DecCoin, error) { + amount, denom, err := parseCoin(input) + if err != nil { + return nil, err + } + + return &basev1beta1.DecCoin{ + Amount: amount, + Denom: denom, + }, nil +} + +// parseCoin parses a coin string into its amount and denom components. +// The input string must be in the format . +// It returns the amount string, denom string, and any error encountered. +// Returns an error if the input is empty or doesn't match the expected format. +func parseCoin(input string) (amount, denom string, err error) { input = strings.TrimSpace(input) if input == "" { - return nil, errors.New("empty input when parsing coin") + return "", "", errors.New("empty input when parsing coin") } matches := coinRegex.FindStringSubmatch(input) if len(matches) == 0 { - return nil, errors.New("invalid input format") + return "", "", errors.New("invalid input format") } - return &basev1beta1.Coin{ - Amount: matches[1], - Denom: matches[3], - }, nil + return matches[1], matches[3], nil } diff --git a/client/v2/internal/coins/format_test.go b/client/v2/internal/coins/format_test.go index 4cddeb7cfdbf..a5c42ac1ed11 100644 --- a/client/v2/internal/coins/format_test.go +++ b/client/v2/internal/coins/format_test.go @@ -1,16 +1,72 @@ -package coins_test +package coins import ( "testing" "github.com/stretchr/testify/require" - - "cosmossdk.io/client/v2/internal/coins" ) -func TestDecodeCoin(t *testing.T) { +func Test_parseCoin(t *testing.T) { + tests := []struct { + name string + input string + amount string + denom string + err string + }{ + { + name: "ok", + input: "1000stake", + amount: "1000", + denom: "stake", + }, + { + name: "empty", + input: "", + err: "empty input when parsing coin", + }, + { + name: "empty denom", + input: "1000", + err: "invalid input format", + }, + { + name: "empty amount", + input: "stake", + err: "invalid input format", + }, + { + name: " format", + input: "stake1000", + err: "invalid input format", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + amount, denom, err := parseCoin(tt.input) + if tt.err != "" { + require.Error(t, err) + require.Contains(t, err.Error(), tt.err) + } else { + require.NoError(t, err) + require.Equal(t, tt.amount, amount) + require.Equal(t, tt.denom, denom) + } + }) + } +} + +func TestParseCoin(t *testing.T) { + encodedCoin := "1000000000foo" + coin, err := ParseCoin(encodedCoin) + require.NoError(t, err) + require.Equal(t, "1000000000", coin.Amount) + require.Equal(t, "foo", coin.Denom) +} + +func TestParseDecCoin(t *testing.T) { encodedCoin := "1000000000foo" - coin, err := coins.ParseCoin(encodedCoin) + coin, err := ParseDecCoin(encodedCoin) require.NoError(t, err) require.Equal(t, "1000000000", coin.Amount) require.Equal(t, "foo", coin.Denom) diff --git a/go.mod b/go.mod index e8d432d94e37..c3f2c23d2d68 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.5.0 cosmossdk.io/math v1.4.0 - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b + cosmossdk.io/schema v0.4.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 @@ -186,7 +186,6 @@ require ( // TODO remove after all modules have their own go.mods replace ( cosmossdk.io/api => ./api - cosmossdk.io/schema => ./schema cosmossdk.io/store => ./store cosmossdk.io/x/bank => ./x/bank cosmossdk.io/x/staking => ./x/staking diff --git a/go.sum b/go.sum index 3623aaea28a6..11cb61f2946c 100644 --- a/go.sum +++ b/go.sum @@ -18,6 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/indexer/postgres/go.mod b/indexer/postgres/go.mod index c13699a1677a..7bea5187eeaa 100644 --- a/indexer/postgres/go.mod +++ b/indexer/postgres/go.mod @@ -8,6 +8,6 @@ go 1.12 // so there are no problems building this with any version of the SDK. // This module should only use the golang standard library (database/sql) // and cosmossdk.io/indexer/base. -require cosmossdk.io/schema v0.3.0 +require cosmossdk.io/schema v0.4.0 replace cosmossdk.io/schema => ../../schema diff --git a/indexer/postgres/tests/go.mod b/indexer/postgres/tests/go.mod index d265dea886da..0c0ef2b329b6 100644 --- a/indexer/postgres/tests/go.mod +++ b/indexer/postgres/tests/go.mod @@ -4,7 +4,7 @@ go 1.23 require ( cosmossdk.io/indexer/postgres v0.0.0-00010101000000-000000000000 - cosmossdk.io/schema v0.3.0 + cosmossdk.io/schema v0.4.0 cosmossdk.io/schema/testing v0.0.0 github.com/fergusstrange/embedded-postgres v1.29.0 github.com/hashicorp/consul/sdk v0.16.1 diff --git a/runtime/v2/go.mod b/runtime/v2/go.mod index c190c61b80e0..737cd6df463c 100644 --- a/runtime/v2/go.mod +++ b/runtime/v2/go.mod @@ -6,7 +6,6 @@ go 1.23 replace ( cosmossdk.io/api => ../../api cosmossdk.io/core/testing => ../../core/testing - cosmossdk.io/schema => ../../schema cosmossdk.io/server/v2/appmanager => ../../server/v2/appmanager cosmossdk.io/server/v2/stf => ../../server/v2/stf cosmossdk.io/store/v2 => ../../store/v2 @@ -18,7 +17,7 @@ require ( cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/log v1.5.0 - cosmossdk.io/schema v0.3.0 + cosmossdk.io/schema v0.4.0 cosmossdk.io/server/v2/appmanager v0.0.0-00010101000000-000000000000 cosmossdk.io/server/v2/stf v0.0.0-00010101000000-000000000000 cosmossdk.io/store/v2 v2.0.0-00010101000000-000000000000 diff --git a/runtime/v2/go.sum b/runtime/v2/go.sum index 45249c90627d..ddcc16a920e9 100644 --- a/runtime/v2/go.sum +++ b/runtime/v2/go.sum @@ -10,6 +10,8 @@ cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 h1:IQNdY2kB+k+1OM2DvqF cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5/go.mod h1:0CuYKkFHxc1vw2JC+t21THBCALJVROrWVR/3PQ1urpc= cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= diff --git a/schema/testing/go.mod b/schema/testing/go.mod index 2af5a76af5a8..c45939d0c627 100644 --- a/schema/testing/go.mod +++ b/schema/testing/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/schema/testing go 1.23 require ( - cosmossdk.io/schema v0.0.0 + cosmossdk.io/schema v0.4.0 github.com/cockroachdb/apd/v3 v3.2.1 github.com/stretchr/testify v1.10.0 github.com/tidwall/btree v1.7.0 diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod index 6e72d88f543c..c56dc2632748 100644 --- a/server/v2/cometbft/go.mod +++ b/server/v2/cometbft/go.mod @@ -5,7 +5,6 @@ go 1.23.2 replace ( cosmossdk.io/api => ../../../api cosmossdk.io/core/testing => ../../../core/testing - cosmossdk.io/schema => ../../../schema cosmossdk.io/server/v2 => ../ cosmossdk.io/server/v2/appmanager => ../appmanager cosmossdk.io/server/v2/stf => ../stf @@ -25,7 +24,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 cosmossdk.io/log v1.5.0 - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b + cosmossdk.io/schema v0.4.0 cosmossdk.io/server/v2 v2.0.0-00010101000000-000000000000 cosmossdk.io/server/v2/appmanager v0.0.0-20240802110823-cffeedff643d cosmossdk.io/server/v2/stf v0.0.0-20240708142107-25e99c54bac1 diff --git a/server/v2/cometbft/go.sum b/server/v2/cometbft/go.sum index 61a3fa909ae3..4e5abbdb1361 100644 --- a/server/v2/cometbft/go.sum +++ b/server/v2/cometbft/go.sum @@ -18,6 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/server/v2/go.mod b/server/v2/go.mod index 72dcdc735185..44720598a398 100644 --- a/server/v2/go.mod +++ b/server/v2/go.mod @@ -4,7 +4,6 @@ go 1.23 replace ( cosmossdk.io/api => ../../api - cosmossdk.io/schema => ../../schema cosmossdk.io/server/v2/appmanager => ./appmanager cosmossdk.io/server/v2/stf => ./stf cosmossdk.io/store/v2 => ../../store/v2 @@ -42,7 +41,7 @@ require ( require ( cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 // indirect - cosmossdk.io/schema v0.3.1-0.20241010135032-192601639cac // indirect + cosmossdk.io/schema v0.4.0 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.5 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect diff --git a/server/v2/go.sum b/server/v2/go.sum index 25402407a571..d0c8c97f62af 100644 --- a/server/v2/go.sum +++ b/server/v2/go.sum @@ -8,6 +8,8 @@ cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 h1:IQNdY2kB+k+1OM2DvqF cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5/go.mod h1:0CuYKkFHxc1vw2JC+t21THBCALJVROrWVR/3PQ1urpc= cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= 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= diff --git a/server/v2/stf/go.mod b/server/v2/stf/go.mod index a6824044348b..a56e652594c9 100644 --- a/server/v2/stf/go.mod +++ b/server/v2/stf/go.mod @@ -5,13 +5,11 @@ go 1.23 require ( cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e - cosmossdk.io/schema v0.3.0 + cosmossdk.io/schema v0.4.0 github.com/cosmos/gogoproto v1.7.0 github.com/tidwall/btree v1.7.0 ) -replace cosmossdk.io/schema => ../../../schema - require ( github.com/google/go-cmp v0.6.0 // indirect google.golang.org/protobuf v1.35.2 // indirect diff --git a/server/v2/stf/go.sum b/server/v2/stf/go.sum index c1679ad748ba..d362cf1eb9a1 100644 --- a/server/v2/stf/go.sum +++ b/server/v2/stf/go.sum @@ -2,6 +2,8 @@ cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e h1:F+ScucYxwrrDJU8guJXQXpGhdpziYSbxW6HMP2wCNxs= cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e/go.mod h1:3YvVv9aJayjPhdX0DY1IMrGse4sR63hNBWx2VtDWjGQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= diff --git a/simapp/go.mod b/simapp/go.mod index 0c890a5b684a..368fb7f27b40 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -64,7 +64,7 @@ require ( cloud.google.com/go/iam v1.1.13 // indirect cloud.google.com/go/storage v1.43.0 // indirect cosmossdk.io/errors v1.0.1 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.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 @@ -253,7 +253,6 @@ replace ( cosmossdk.io/client/v2 => ../client/v2 cosmossdk.io/collections => ../collections cosmossdk.io/indexer/postgres => ../indexer/postgres - cosmossdk.io/schema => ../schema cosmossdk.io/store => ../store cosmossdk.io/tools/confix => ../tools/confix cosmossdk.io/x/accounts => ../x/accounts diff --git a/simapp/go.sum b/simapp/go.sum index 27298d33b472..569212c600c8 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -204,6 +204,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index d29decad721d..e3ce2f17bafc 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -63,7 +63,7 @@ require ( cosmossdk.io/core/testing v0.0.0 // indirect cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/server/v2/appmanager v0.0.0-20240802110823-cffeedff643d // indirect cosmossdk.io/server/v2/stf v0.0.0-20240708142107-25e99c54bac1 // indirect cosmossdk.io/store v1.1.1 // indirect @@ -301,7 +301,6 @@ replace ( cosmossdk.io/core/testing => ../../core/testing cosmossdk.io/indexer/postgres => ../../indexer/postgres cosmossdk.io/runtime/v2 => ../../runtime/v2 - cosmossdk.io/schema => ../../schema cosmossdk.io/server/v2 => ../../server/v2 cosmossdk.io/server/v2/appmanager => ../../server/v2/appmanager cosmossdk.io/server/v2/cometbft => ../../server/v2/cometbft diff --git a/simapp/v2/go.sum b/simapp/v2/go.sum index 5c9d700b7023..f5942e3dc1ca 100644 --- a/simapp/v2/go.sum +++ b/simapp/v2/go.sum @@ -206,6 +206,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/tests/go.mod b/tests/go.mod index e44fa2b8bab6..fb76f7776604 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -72,7 +72,7 @@ require ( cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 // indirect cosmossdk.io/indexer/postgres v0.1.0 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/server/v2/appmanager v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/circuit v0.0.0-20230613133644-0a778132a60f // indirect cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337 // indirect @@ -284,7 +284,6 @@ replace ( // Below are the long-lived replace for tests. replace ( - cosmossdk.io/schema => ../schema // We always want to test against the latest version of the simapp. cosmossdk.io/simapp => ../simapp github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 diff --git a/tests/go.sum b/tests/go.sum index 3136ca975c19..eaaf0ff61562 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -204,6 +204,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/x/accounts/defaults/base/go.mod b/x/accounts/defaults/base/go.mod index 328a2cc4a418..a8da52908215 100644 --- a/x/accounts/defaults/base/go.mod +++ b/x/accounts/defaults/base/go.mod @@ -23,7 +23,7 @@ require ( cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/math v1.4.0 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect diff --git a/x/accounts/defaults/base/go.sum b/x/accounts/defaults/base/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/accounts/defaults/base/go.sum +++ b/x/accounts/defaults/base/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/defaults/lockup/go.mod b/x/accounts/defaults/lockup/go.mod index 0be721c12e5f..f0f6a45f0a67 100644 --- a/x/accounts/defaults/lockup/go.mod +++ b/x/accounts/defaults/lockup/go.mod @@ -33,7 +33,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.5.0 cosmossdk.io/math v1.4.0 - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect filippo.io/edwards25519 v1.1.0 // indirect diff --git a/x/accounts/defaults/lockup/go.sum b/x/accounts/defaults/lockup/go.sum index 364d4b2288bc..f74d909c24fe 100644 --- a/x/accounts/defaults/lockup/go.sum +++ b/x/accounts/defaults/lockup/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/defaults/multisig/go.mod b/x/accounts/defaults/multisig/go.mod index 8996f387866f..57ac772cb992 100644 --- a/x/accounts/defaults/multisig/go.mod +++ b/x/accounts/defaults/multisig/go.mod @@ -23,7 +23,7 @@ require ( cosmossdk.io/depinject v1.1.0 // indirect cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/log v1.5.0 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect diff --git a/x/accounts/defaults/multisig/go.sum b/x/accounts/defaults/multisig/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/accounts/defaults/multisig/go.sum +++ b/x/accounts/defaults/multisig/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 1b1735990662..2b6db6fdead5 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -39,7 +39,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/math v1.4.0 - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b + cosmossdk.io/schema v0.4.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect filippo.io/edwards25519 v1.1.0 // indirect @@ -178,7 +178,6 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( cosmossdk.io/api => ../../api - cosmossdk.io/schema => ../../schema cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking diff --git a/x/accounts/go.sum b/x/accounts/go.sum index 921534217ff3..87c9104950d3 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -18,6 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/authz/go.mod b/x/authz/go.mod index 4346b1864a66..4f8ff62e894b 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -30,7 +30,7 @@ require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.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 diff --git a/x/authz/go.sum b/x/authz/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/bank/go.mod b/x/bank/go.mod index 2016a115a9ad..9e154f61e7f8 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -156,7 +156,7 @@ require ( sigs.k8s.io/yaml v1.4.0 // indirect ) -require cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b +require cosmossdk.io/schema v0.4.0 require ( github.com/bytedance/sonic v1.12.4 // indirect diff --git a/x/bank/go.sum b/x/bank/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index bdd419df3d35..d90b82643b80 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -9,7 +9,7 @@ require ( cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/depinject v1.1.0 cosmossdk.io/errors v1.0.1 - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b + cosmossdk.io/schema v0.4.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/gogoproto v1.7.0 diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/consensus/go.mod b/x/consensus/go.mod index 3cd6d1ee2d97..fb571f0c7994 100644 --- a/x/consensus/go.mod +++ b/x/consensus/go.mod @@ -8,7 +8,7 @@ require ( cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/depinject v1.1.0 - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b + cosmossdk.io/schema v0.4.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 github.com/cometbft/cometbft/api v1.0.0-rc2 diff --git a/x/consensus/go.sum b/x/consensus/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/consensus/go.sum +++ b/x/consensus/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 099511e778da..68335d480916 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -10,7 +10,7 @@ require ( cosmossdk.io/depinject v1.1.0 cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.4.0 - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b + cosmossdk.io/schema v0.4.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 github.com/cosmos/cosmos-proto v1.0.0-beta.5 @@ -175,7 +175,6 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( cosmossdk.io/api => ../../api - cosmossdk.io/schema => ../../schema cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/protocolpool => ../protocolpool diff --git a/x/distribution/go.sum b/x/distribution/go.sum index 921534217ff3..87c9104950d3 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -18,6 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/epochs/go.mod b/x/epochs/go.mod index aed9d97a8b74..4d447185d811 100644 --- a/x/epochs/go.mod +++ b/x/epochs/go.mod @@ -20,7 +20,7 @@ require ( google.golang.org/grpc v1.68.1 ) -require cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b +require cosmossdk.io/schema v0.4.0 require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect diff --git a/x/epochs/go.sum b/x/epochs/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/epochs/go.sum +++ b/x/epochs/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index 511d44128a22..74f1bd3ce5f5 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -28,7 +28,7 @@ require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/log v1.5.0 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index c41c5ffece67..faead6769e13 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -37,7 +37,7 @@ require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/log v1.5.0 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index 2222f2852373..fb5e79737848 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= diff --git a/x/gov/go.mod b/x/gov/go.mod index 9567e7ddfd61..208c7fda324c 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -35,7 +35,7 @@ require ( require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect diff --git a/x/gov/go.sum b/x/gov/go.sum index bef5b50b0d7e..756769fda547 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/group/go.mod b/x/group/go.mod index 7df98890228e..c23406794e66 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -38,7 +38,7 @@ require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect filippo.io/edwards25519 v1.1.0 // indirect diff --git a/x/group/go.sum b/x/group/go.sum index 50b790e05f8d..34eed35f6f2d 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/mint/go.mod b/x/mint/go.mod index da1cab874819..5bf737906076 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -29,7 +29,7 @@ require ( require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b + cosmossdk.io/schema v0.4.0 cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect diff --git a/x/mint/go.sum b/x/mint/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/nft/go.mod b/x/nft/go.mod index 62e472eb36cc..5711ddd069fc 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -26,7 +26,7 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/params/go.mod b/x/params/go.mod index 3f1869bc703d..4436abc529ce 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -29,7 +29,7 @@ require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect diff --git a/x/params/go.sum b/x/params/go.sum index 3014ac8bbdd6..9e9e58566093 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index f253b7f2f1ea..144789471f38 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -27,7 +27,7 @@ require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/log v1.5.0 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index 53cb89610443..352c037c0698 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -30,7 +30,7 @@ require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/log v1.5.0 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect filippo.io/edwards25519 v1.1.0 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index 8a161939fe69..69db19b23e3a 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/staking/go.mod b/x/staking/go.mod index 71bd60ca9167..3f4729b8f315 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -158,7 +158,7 @@ require ( go.opencensus.io v0.24.0 // indirect ) -require cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b +require cosmossdk.io/schema v0.4.0 require ( github.com/bytedance/sonic v1.12.4 // indirect diff --git a/x/staking/go.sum b/x/staking/go.sum index 353df80d6663..87c9104950d3 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -18,8 +18,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index a332c8874d75..5d71a9feff83 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -42,7 +42,7 @@ require ( cloud.google.com/go/storage v1.43.0 // indirect cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect cosmossdk.io/math v1.4.0 // indirect - cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index 38340d535359..1e8da62b2ab5 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -206,8 +206,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b h1:svpFdulZRrYz+RTHu2u9CeKkMKrIHx5354vjiHerovo= -cosmossdk.io/schema v0.3.1-0.20241128094659-bd76b47e1d8b/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= From 19fbd0b8557684887777968e22a179767f2a7df5 Mon Sep 17 00:00:00 2001 From: Marko Date: Tue, 10 Dec 2024 13:07:52 -0800 Subject: [PATCH 36/62] chore(v2): add example of setting store metrics (#22819) --- simapp/v2/app_di.go | 10 +++++++++- store/v2/metrics/metrics.go | 11 +++++++++++ store/v2/root/factory.go | 3 ++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/simapp/v2/app_di.go b/simapp/v2/app_di.go index bd0a39472a1c..e78708807b33 100644 --- a/simapp/v2/app_di.go +++ b/simapp/v2/app_di.go @@ -167,11 +167,19 @@ func NewSimApp[T transaction.Tx]( return nil, fmt.Errorf("store builder did not return a db") } + /**** Store Metrics ****/ + /* + // In order to set store metrics uncomment the below + storeMetrics, err := metrics.NewMetrics([][]string{{"module", "store"}}) + if err != nil { + return nil, err + } + app.store.SetMetrics(storeMetrics) + */ /**** Module Options ****/ // RegisterUpgradeHandlers is used for registering any on-chain upgrades. app.RegisterUpgradeHandlers() - if err = app.LoadLatest(); err != nil { return nil, err } diff --git a/store/v2/metrics/metrics.go b/store/v2/metrics/metrics.go index bea5eda8a4d2..a964c89dbf2c 100644 --- a/store/v2/metrics/metrics.go +++ b/store/v2/metrics/metrics.go @@ -45,3 +45,14 @@ func NewMetrics(labels [][]string) (Metrics, error) { func (m Metrics) MeasureSince(start time.Time, keys ...string) { metrics.MeasureSinceWithLabels(keys, start.UTC(), m.Labels) } + +// NoOpMetrics is a no-op implementation of the StoreMetrics interface +type NoOpMetrics struct{} + +// NewNoOpMetrics returns a new instance of the NoOpMetrics +func NewNoOpMetrics() NoOpMetrics { + return NoOpMetrics{} +} + +// MeasureSince is a no-op implementation of the StoreMetrics interface to avoid time.Now() calls +func (m NoOpMetrics) MeasureSince(start time.Time, keys ...string) {} diff --git a/store/v2/root/factory.go b/store/v2/root/factory.go index 36eadf2382bc..c908432c9a29 100644 --- a/store/v2/root/factory.go +++ b/store/v2/root/factory.go @@ -12,6 +12,7 @@ import ( "cosmossdk.io/store/v2/commitment/mem" "cosmossdk.io/store/v2/db" "cosmossdk.io/store/v2/internal" + "cosmossdk.io/store/v2/metrics" "cosmossdk.io/store/v2/pruning" ) @@ -127,5 +128,5 @@ func CreateRootStore(opts *FactoryOptions) (store.RootStore, error) { } pm := pruning.NewManager(sc, storeOpts.SCPruningOption) - return New(opts.SCRawDB, opts.Logger, sc, pm, nil, nil) + return New(opts.SCRawDB, opts.Logger, sc, pm, nil, metrics.NoOpMetrics{}) } From 0adf6fde1a520778567cda0fc55d65463b56118a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 07:45:14 +0100 Subject: [PATCH 37/62] build(deps): Bump github.com/fergusstrange/embedded-postgres from 1.29.0 to 1.30.0 in /indexer/postgres/tests (#22822) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- indexer/postgres/tests/go.mod | 3 +-- indexer/postgres/tests/go.sum | 9 ++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/indexer/postgres/tests/go.mod b/indexer/postgres/tests/go.mod index 0c0ef2b329b6..e7be9b754596 100644 --- a/indexer/postgres/tests/go.mod +++ b/indexer/postgres/tests/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/indexer/postgres v0.0.0-00010101000000-000000000000 cosmossdk.io/schema v0.4.0 cosmossdk.io/schema/testing v0.0.0 - github.com/fergusstrange/embedded-postgres v1.29.0 + github.com/fergusstrange/embedded-postgres v1.30.0 github.com/hashicorp/consul/sdk v0.16.1 github.com/jackc/pgx/v5 v5.7.1 github.com/stretchr/testify v1.10.0 @@ -20,7 +20,6 @@ require ( github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect - github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect diff --git a/indexer/postgres/tests/go.sum b/indexer/postgres/tests/go.sum index 904bfba0e72b..af43f0ab89ae 100644 --- a/indexer/postgres/tests/go.sum +++ b/indexer/postgres/tests/go.sum @@ -1,11 +1,10 @@ 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/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/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/fergusstrange/embedded-postgres v1.29.0 h1:Uv8hdhoiaNMuH0w8UuGXDHr60VoAQPFdgx7Qf3bzXJM= -github.com/fergusstrange/embedded-postgres v1.29.0/go.mod h1:t/MLs0h9ukYM6FSt99R7InCHs1nW0ordoVCcnzmpTYw= +github.com/fergusstrange/embedded-postgres v1.30.0 h1:ewv1e6bBlqOIYtgGgRcEnNDpfGlmfPxB8T3PO9tV68Q= +github.com/fergusstrange/embedded-postgres v1.30.0/go.mod h1:w0YvnCgf19o6tskInrOOACtnqfVlOvluz3hlNLY7tRk= 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/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= @@ -38,8 +37,8 @@ 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/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= From c08ab17de6f267544c11d8e68f358502119eda03 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 11 Dec 2024 07:52:21 +0100 Subject: [PATCH 38/62] docs: update server/v2 api contract (#22815) --- runtime/v2/config.go | 2 +- server/v2/server.go | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/runtime/v2/config.go b/runtime/v2/config.go index 4cddadd7be20..aec6a992abfb 100644 --- a/runtime/v2/config.go +++ b/runtime/v2/config.go @@ -35,7 +35,7 @@ func ProvideModuleConfigMaps( fetchFlag := flag // splitting on "." is required to handle nested flags which are defined // in other modules that are not the current module - // for example: "server.minimum-gas-prices" is defined in the server module + // for example: "server.minimum-gas-prices" is defined in the server component // but required by x/validate for _, part := range strings.Split(flag, ".") { if maybeMap, ok := m[part]; ok { diff --git a/server/v2/server.go b/server/v2/server.go index 5dd8a73d76ad..9f4f3ee66e58 100644 --- a/server/v2/server.go +++ b/server/v2/server.go @@ -16,15 +16,19 @@ import ( "cosmossdk.io/log" ) -// ServerComponent is a server module that can be started and stopped. +// ServerComponent is a server component that can be started and stopped. type ServerComponent[T transaction.Tx] interface { + // Name returns the name of the server component. Name() string + // Start starts the server component. Start(context.Context) error + // Stop stops the server component. + // Once Stop has been called on a server component, it may not be reused. Stop(context.Context) error } -// HasStartFlags is a server module that has start flags. +// HasStartFlags is a server component that has start flags. type HasStartFlags interface { // StartCmdFlags returns server start flags. // Those flags should be prefixed with the server name. @@ -32,29 +36,29 @@ type HasStartFlags interface { StartCmdFlags() *pflag.FlagSet } -// HasConfig is a server module that has a config. +// HasConfig is a server component that has a config. type HasConfig interface { Config() any } -// ConfigWriter is a server module that can write its config to a file. +// ConfigWriter is a server component that can write its config to a file. type ConfigWriter interface { WriteConfig(path string) error } -// HasCLICommands is a server module that has CLI commands. +// HasCLICommands is a server component that has CLI commands. type HasCLICommands interface { CLICommands() CLIConfig } -// CLIConfig defines the CLI configuration for a module server. +// CLIConfig defines the CLI configuration for a component server. type CLIConfig struct { - // Commands defines the main command of a module server. + // Commands defines the main command of a server component. Commands []*cobra.Command - // Queries defines the query commands of a module server. + // Queries defines the query commands of a server component. // Those commands are meant to be added in the root query command. Queries []*cobra.Command - // Txs defines the tx commands of a module server. + // Txs defines the tx commands of a server component. // Those commands are meant to be added in the root tx command. Txs []*cobra.Command } From aa8266e702fe7d79e3d00af5f14b20f58f0cbfe1 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 11 Dec 2024 09:10:45 +0100 Subject: [PATCH 39/62] docs: runtime docs (#22816) --- depinject/README.md | 2 +- docs/build/building-apps/00-runtime.md | 142 +++++++++++++++++-- docs/build/building-apps/01-app-go-di.md | 46 +++--- docs/learn/advanced/12-simulation.md | 2 +- docs/learn/beginner/00-app-anatomy.md | 16 +-- runtime/v2/app.go | 2 +- simapp/{app_di.go => app.go} | 0 simapp/simd/cmd/{root_di.go => root.go} | 0 simapp/v2/{app_di.go => app.go} | 0 simapp/v2/simdv2/cmd/{root_di.go => root.go} | 0 10 files changed, 172 insertions(+), 38 deletions(-) rename simapp/{app_di.go => app.go} (100%) rename simapp/simd/cmd/{root_di.go => root.go} (100%) rename simapp/v2/{app_di.go => app.go} (100%) rename simapp/v2/simdv2/cmd/{root_di.go => root.go} (100%) diff --git a/depinject/README.md b/depinject/README.md index de58b49e28e0..ae682717851c 100644 --- a/depinject/README.md +++ b/depinject/README.md @@ -177,7 +177,7 @@ When using `depinject.Inject`, the injected types must be pointers. ::: ```go reference -https://github.com/cosmos/cosmos-sdk/blob/v0.47.0-rc1/simapp/app_v2.go#L219-L244 +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_di.go#L187-L206 ``` ## Debugging diff --git a/docs/build/building-apps/00-runtime.md b/docs/build/building-apps/00-runtime.md index 5f9ab6f9287f..5da91a65396e 100644 --- a/docs/build/building-apps/00-runtime.md +++ b/docs/build/building-apps/00-runtime.md @@ -4,24 +4,150 @@ sidebar_position: 1 # What is `runtime`? -The `runtime` package is the Cosmos SDK package that combines the building blocks of your blockchain together. It wires together the modules, the applications, the codecs, and the stores. +The `runtime` package in the Cosmos SDK provides a flexible framework for configuring and managing blockchain applications. It serves as the foundation for creating modular blockchain applications using a declarative configuration approach. + +## Overview + +The runtime package acts as a wrapper around the `BaseApp` and `ModuleManager`, offering a hybrid approach where applications can be configured both declaratively through configuration files and programmatically through traditional methods. It is a layer of abstraction between `baseapp` and the application modules that simplifies the process of building a Cosmos SDK application. -## Modules wiring +## Core Components + +### App Structure + +The runtime App struct contains several key components: + +```go +type App struct { + *baseapp.BaseApp + ModuleManager *module.Manager + UnorderedTxManager *unorderedtx.Manager + configurator module.Configurator + config *runtimev1alpha1.Module + storeKeys []storetypes.StoreKey + // ... other fields +} +``` + +It is the struct that any Cosmos SDK application should embed to leverage the runtime module. + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_di.go#L61-L62 +``` + +### Configuration + +The runtime module is configured using App Wiring. The main configuration object is the [`Module` message](https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/proto/cosmos/app/runtime/v1alpha1/module.proto), which supports the following key settings: + +* `app_name`: The name of the application +* `begin_blockers`: List of module names to call during BeginBlock +* `end_blockers`: List of module names to call during EndBlock +* `init_genesis`: Order of module initialization during genesis +* `export_genesis`: Order for exporting module genesis data +* `pre_blockers`: Modules to execute before block processing + +Learn more about wiring `runtime` in the [next section](./01-app-go-di.md). + +#### Store Configuration + +By default, the runtime module uses the module name as the store key. +However it provides a flexible store key configuration through: + +* `override_store_keys`: Allows customizing module store keys +* `skip_store_keys`: Specifies store keys to skip during keeper construction + +Example configuration: + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/v2/app_config.go#L138-L147 +``` + +## Key Features + +### 1. BaseApp and other Core SDK components integration + +The runtime module integrates with the `BaseApp` and other core SDK components to provide a seamless experience for developers. + +The developer only needs to embed the `App` struct in their application to leverage the runtime module. +The configuration of the module manager and other core components is handled internally via the [`AppBuilder`](#4-application-building). + +### 2. Module Registration + +Runtime has built-in support for [`depinject`-enabled modules](../building-modules/15-depinject.md). +Such modules can be registered through the configuration file (often named `app_config.go`), with no additional code required. -Runtime is responsible for wiring the modules together. It uses `depinject` to inject the dependencies of the modules. +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_config.go#L210-L215 +``` -## App wiring +Additionally, the runtime package facilitates manual module registration through the `RegisterModules` method. This is the primary integration point for modules not registered via configuration. -Runtime is the base boilerplate of a Cosmos SDK application. -A user only needs to import `runtime` in their `app.go` and instantiate a `runtime.App`. +:::warning +Even when using manual registration, the module should still be configured in the `Module` message in AppConfig. +::: + +```go +func (a *App) RegisterModules(modules ...module.AppModule) error +``` -## Services +The SDK recommends using the declarative approach with `depinject` for module registration whenever possible. -Modules have access to a multitude of services that are provided by the runtime. +### 3. Service Registration + +Runtime registers all [core services](../../learn/advanced/02-core.md) required by modules. These services include the `store`, the `event manager`, the `context`, and the `logger`. As runtime is doing the wiring of modules, it can ensure that the services are scoped to their respective modules. ```go reference https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/runtime/module.go#L250-L279 ``` + +Additionally, runtime provides automatic registration of other essential (f.e gRPC routes) services, available to the App: + +* AutoCLI Query Service +* Reflection Service +* Custom module services + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/runtime/builder.go#L74-L77 +``` + +### 4. Application Building + +The `AppBuilder` type provides a structured way to build applications: + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/runtime/builder.go#L22-L29 +``` + +Key building steps: + +1. Configuration loading +2. Module registration +3. Service setup +4. Store mounting +5. Router configuration + +An application only needs to call `AppBuilder.Build` to create a fully configured application (`runtime.App`). + +```go reference +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/runtime/builder.go#L36-L80 +``` + +More information on building applications can be found in the [next section](./02-app-building.md). + +## Best Practices + +1. **Module Order**: Carefully consider the order of modules in begin_blockers and end_blockers +2. **Store Keys**: Use override_store_keys only when necessary to maintain clarity +3. **Genesis Order**: Maintain correct initialization order in init_genesis +4. **Migration Management**: Use order_migrations to control upgrade paths + +### Migration Considerations + +When upgrading between versions: + +1. Review the migration order specified in `order_migrations` +2. Ensure all required modules are included in the configuration +3. Validate store key configurations +4. Test the upgrade path thoroughly diff --git a/docs/build/building-apps/01-app-go-di.md b/docs/build/building-apps/01-app-go-di.md index d77899d26e6d..872124e49625 100644 --- a/docs/build/building-apps/01-app-go-di.md +++ b/docs/build/building-apps/01-app-go-di.md @@ -6,16 +6,17 @@ sidebar_position: 1 :::note Synopsis -The Cosmos SDK allows much easier wiring of an `app.go` thanks to App Wiring and [`depinject`](../packages/01-depinject.md). +The Cosmos SDK allows much easier wiring of an `app.go` thanks to [runtime](./00-runtime.md) and app wiring. Learn more about the rationale of App Wiring in [ADR-057](../architecture/adr-057-app-wiring.md). ::: :::note Pre-requisite Readings -* [ADR 057: App Wiring](../architecture/adr-057-app-wiring.md) -* [Depinject Documentation](../packages/01-depinject.md) +* [What is `runtime`?](./00-runtime.md) +* [Depinject documentation](../packages/01-depinject.md) * [Modules depinject-ready](../building-modules/15-depinject.md) +* [ADR 057: App Wiring](../architecture/adr-057-app-wiring.md) ::: @@ -28,30 +29,39 @@ The `app_config.go` file is the single place to configure all modules parameters 1. Create the `AppConfig` variable: ```go reference - https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_config.go#L103 + https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_di.go#L93-L99 ``` -2. Configure the `runtime` module: + Where the `appConfig`, combine the [runtime](./00-runtime.md) and the modules configuration. ```go reference - https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_config.go#L103-L167 + https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_config.go#L107-L111 ``` -3. Configure the modules defined in the `PreBlocker`, `BeginBlocker` and `EndBlocker` and the `tx` module: +2. Configure the `runtime` module: + + In this configuration, the order at which the modules are defined is important. + They are named in the order they should be executed by the module manager. ```go reference - https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_config.go#L112-L129 + https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_config.go#L110-L187 ``` +3. Wire the other modules: + + Next to runtime, the other (depinject-enabled) modules are wired in the `AppConfig`: + ```go reference - https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_config.go#L200-L203 + https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_config.go#L196-L215 ``` -### Complete `app_config.go` + Note: the `tx` isn't a module, but a configuration. It should be wired in the `AppConfig` as well. -```go reference -https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_config.go -``` + ```go reference + https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_config.go#L188-L195 + ``` + +See the complete `app_config.go` file for `SimApp` [here](https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_config.go). ### Alternative formats @@ -93,15 +103,15 @@ modules: "@type": cosmos.tx.config.v1.Config ``` -A more complete example of `app.yaml` can be found [here](https://github.com/cosmos/cosmos-sdk/blob/91b1d83f1339e235a1dfa929ecc00084101a19e3/simapp/app.yaml). +A more complete example of `app.yaml` can be found [here](https://github.com/cosmosregistry/chain-minimal/blob/mini-v050.2/app/app.yaml). ## `app_di.go` `app_di.go` is the place where `SimApp` is constructed. `depinject.Inject` facilitates that by automatically wiring the app modules and keepers, provided an application configuration `AppConfig` is provided. `SimApp` is constructed, when calling the injected `*runtime.AppBuilder`, with `appBuilder.Build(...)`. -In short `depinject` and the [`runtime` package](https://pkg.go.dev/github.com/cosmos/cosmos-sdk/runtime) abstract the wiring of the app, and the `AppBuilder` is the place where the app is constructed. [`runtime`](https://pkg.go.dev/github.com/cosmos/cosmos-sdk/runtime) takes care of registering the codecs, KV store, subspaces and instantiating `baseapp`. +In short `depinject` and the [`runtime` package](./00-runtime.md) abstract the wiring of the app, and the `AppBuilder` is the place where the app is constructed. [`runtime`](./00-runtime.md) takes care of registering the codecs, KV store, subspaces and instantiating `baseapp`. ```go reference -https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_v2.go#L101-L245 +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_di.go#L101-L290 ``` :::warning @@ -115,7 +125,7 @@ In this case, use `depinject.Configs` for combining the extra configuration and More information on how work `depinject.Configs` and `depinject.Supply` can be found in the [`depinject` documentation](https://pkg.go.dev/cosmossdk.io/depinject). ```go reference -https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_v2.go#L114-L146 +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_di.go#L117-L161 ``` ### Registering non app wiring modules @@ -150,5 +160,5 @@ Note that in the complete `SimApp` `app_di.go` file, testing utilities are also ::: ```go reference -https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_v2.go +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app.go ``` diff --git a/docs/learn/advanced/12-simulation.md b/docs/learn/advanced/12-simulation.md index 6a43bb10ff51..efe51694e347 100644 --- a/docs/learn/advanced/12-simulation.md +++ b/docs/learn/advanced/12-simulation.md @@ -7,7 +7,7 @@ sidebar_position: 1 The Cosmos SDK offers a full fledged simulation framework to [fuzz test](https://en.wikipedia.org/wiki/Fuzzing) every message defined by a module. -On the Cosmos SDK, this functionality is provided by [`SimApp`](https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_v2.go), which is a `Baseapp` application that is used for running the [`simulation`](https://github.com/cosmos/cosmos-sdk/blob/23cf89cce1882ba9c8280e64735ae200504bfdce/simsx/README.md#L1) package. This package defines all the simulation logic as well as the operations for randomized parameters like accounts, balances etc. +On the Cosmos SDK, this functionality is provided by [`SimApp`](https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_di.go), which is a `Baseapp` application that is used for running the [`simulation`](https://github.com/cosmos/cosmos-sdk/blob/23cf89cce1882ba9c8280e64735ae200504bfdce/simsx/README.md#L1) package. This package defines all the simulation logic as well as the operations for randomized parameters like accounts, balances etc. ## Goals diff --git a/docs/learn/beginner/00-app-anatomy.md b/docs/learn/beginner/00-app-anatomy.md index 88e54fbf7975..1515799677fd 100644 --- a/docs/learn/beginner/00-app-anatomy.md +++ b/docs/learn/beginner/00-app-anatomy.md @@ -57,22 +57,20 @@ In general, the core of the state-machine is defined in a file called `app.go`. ### Type Definition of the Application - +The first thing defined in `app.go` is the `type` of the application. It is generally comprised of the following parts: - +https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/simapp/app_di.go#L58-L83 +``` ### Constructor Function diff --git a/runtime/v2/app.go b/runtime/v2/app.go index f2128b219def..5c5c78532f33 100644 --- a/runtime/v2/app.go +++ b/runtime/v2/app.go @@ -21,7 +21,7 @@ import ( // // App can be used to create a hybrid app.go setup where some configuration is // done declaratively with an app config and the rest of it is done the old way. -// See simapp/app_v2.go for an example of this setup. +// See simapp/v2/app.go for an example of this setup. type App[T transaction.Tx] struct { appmanager.AppManager[T] diff --git a/simapp/app_di.go b/simapp/app.go similarity index 100% rename from simapp/app_di.go rename to simapp/app.go diff --git a/simapp/simd/cmd/root_di.go b/simapp/simd/cmd/root.go similarity index 100% rename from simapp/simd/cmd/root_di.go rename to simapp/simd/cmd/root.go diff --git a/simapp/v2/app_di.go b/simapp/v2/app.go similarity index 100% rename from simapp/v2/app_di.go rename to simapp/v2/app.go diff --git a/simapp/v2/simdv2/cmd/root_di.go b/simapp/v2/simdv2/cmd/root.go similarity index 100% rename from simapp/v2/simdv2/cmd/root_di.go rename to simapp/v2/simdv2/cmd/root.go From 5b124267e6e7f15c5e23e478efff2c59b2672c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Toledano?= Date: Wed, 11 Dec 2024 11:28:23 +0100 Subject: [PATCH 40/62] feat(client/v2)!: dynamic prompt (#22775) --- CHANGELOG.md | 2 + client/prompt_validation_test.go | 39 --- client/v2/CHANGELOG.md | 1 + client/v2/autocli/prompt/message.go | 259 ++++++++++++++++++ client/v2/autocli/prompt/message_test.go | 59 ++++ client/v2/autocli/prompt/struct.go | 134 +++++++++ client/v2/autocli/prompt/struct_test.go | 46 ++++ client/v2/autocli/prompt/util.go | 70 +++++ .../autocli/prompt/validation.go} | 45 +-- client/v2/autocli/prompt/validation_test.go | 55 ++++ client/v2/go.mod | 2 +- client/v2/internal/prompt/validation.go | 37 --- client/v2/internal/prompt/validation_test.go | 30 -- simapp/go.mod | 2 +- simapp/v2/go.mod | 2 +- tests/go.mod | 2 +- x/feegrant/go.mod | 4 +- x/gov/CHANGELOG.md | 1 + x/gov/client/cli/prompt.go | 187 +++---------- x/gov/client/cli/prompt_test.go | 90 ------ x/gov/client/cli/util.go | 18 ++ x/gov/client/cli/util_test.go | 14 + x/gov/go.mod | 6 +- x/group/client/cli/prompt.go | 71 ++--- x/group/go.mod | 6 +- x/upgrade/go.mod | 4 +- 26 files changed, 771 insertions(+), 415 deletions(-) delete mode 100644 client/prompt_validation_test.go create mode 100644 client/v2/autocli/prompt/message.go create mode 100644 client/v2/autocli/prompt/message_test.go create mode 100644 client/v2/autocli/prompt/struct.go create mode 100644 client/v2/autocli/prompt/struct_test.go create mode 100644 client/v2/autocli/prompt/util.go rename client/{prompt_validation.go => v2/autocli/prompt/validation.go} (51%) create mode 100644 client/v2/autocli/prompt/validation_test.go delete mode 100644 client/v2/internal/prompt/validation.go delete mode 100644 client/v2/internal/prompt/validation_test.go delete mode 100644 x/gov/client/cli/prompt_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 4958458cebd2..f8b5b452b08c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,8 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i ### API Breaking Changes +* (client) [#22775](https://github.com/cosmos/cosmos-sdk/pull/22775) Removed client prompt validations. + ### Deprecated ## [v0.52.0](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.52.0) - 2024-XX-XX diff --git a/client/prompt_validation_test.go b/client/prompt_validation_test.go deleted file mode 100644 index 488aa03e5414..000000000000 --- a/client/prompt_validation_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package client_test - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/client" -) - -func TestValidatePromptNotEmpty(t *testing.T) { - require := require.New(t) - - require.NoError(client.ValidatePromptNotEmpty("foo")) - require.ErrorContains(client.ValidatePromptNotEmpty(""), "input cannot be empty") -} - -func TestValidatePromptURL(t *testing.T) { - require := require.New(t) - - require.NoError(client.ValidatePromptURL("https://example.com")) - require.ErrorContains(client.ValidatePromptURL("foo"), "invalid URL") -} - -func TestValidatePromptAddress(t *testing.T) { - require := require.New(t) - - require.NoError(client.ValidatePromptAddress("cosmos1huydeevpz37sd9snkgul6070mstupukw00xkw9")) - require.NoError(client.ValidatePromptAddress("cosmosvaloper1sjllsnramtg3ewxqwwrwjxfgc4n4ef9u2lcnj0")) - require.NoError(client.ValidatePromptAddress("cosmosvalcons1ntk8eualewuprz0gamh8hnvcem2nrcdsgz563h")) - require.ErrorContains(client.ValidatePromptAddress("foo"), "invalid address") -} - -func TestValidatePromptCoins(t *testing.T) { - require := require.New(t) - - require.NoError(client.ValidatePromptCoins("100stake")) - require.ErrorContains(client.ValidatePromptCoins("foo"), "invalid coins") -} diff --git a/client/v2/CHANGELOG.md b/client/v2/CHANGELOG.md index 33052c9000e7..e4011ec3750e 100644 --- a/client/v2/CHANGELOG.md +++ b/client/v2/CHANGELOG.md @@ -45,6 +45,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#20623](https://github.com/cosmos/cosmos-sdk/pull/20623) Introduce client/v2 tx factory. * [#20623](https://github.com/cosmos/cosmos-sdk/pull/20623) Extend client/v2 keyring interface with `KeyType` and `KeyInfo`. * [#22282](https://github.com/cosmos/cosmos-sdk/pull/22282) Added custom broadcast logic. +* [#22775](https://github.com/cosmos/cosmos-sdk/pull/22775) Added interactive autocli prompt functionality, including message field prompting, validation helpers, and default value support. ### Improvements diff --git a/client/v2/autocli/prompt/message.go b/client/v2/autocli/prompt/message.go new file mode 100644 index 000000000000..c6e3738b8668 --- /dev/null +++ b/client/v2/autocli/prompt/message.go @@ -0,0 +1,259 @@ +package prompt + +import ( + "fmt" + "io" + "strconv" + "strings" + + "github.com/manifoldco/promptui" + "google.golang.org/protobuf/reflect/protoreflect" + + "cosmossdk.io/client/v2/autocli/flag" + addresscodec "cosmossdk.io/core/address" +) + +// PromptMessage prompts the user for values to populate a protobuf message interactively. +// It returns the populated message and any error encountered during prompting. +func PromptMessage( + addressCodec, validatorAddressCodec, consensusAddressCodec addresscodec.Codec, + promptPrefix string, msg protoreflect.Message, +) (protoreflect.Message, error) { + return promptMessage(addressCodec, validatorAddressCodec, consensusAddressCodec, promptPrefix, nil, msg) +} + +// promptMessage prompts the user for values to populate a protobuf message interactively. +// stdIn is provided to make the function easier to unit test by allowing injection of predefined inputs. +func promptMessage( + addressCodec, validatorAddressCodec, consensusAddressCodec addresscodec.Codec, + promptPrefix string, stdIn io.ReadCloser, msg protoreflect.Message, +) (protoreflect.Message, error) { + fields := msg.Descriptor().Fields() + for i := 0; i < fields.Len(); i++ { + field := fields.Get(i) + fieldName := string(field.Name()) + + promptUi := promptui.Prompt{ + Validate: ValidatePromptNotEmpty, + Stdin: stdIn, + } + + // If this signer field has already a valid default value set, + // use that value as the default prompt value. This is useful for + // commands that have an authority such as gov. + if strings.EqualFold(fieldName, flag.GetSignerFieldName(msg.Descriptor())) { + if defaultValue := msg.Get(field); defaultValue.IsValid() { + promptUi.Default = defaultValue.String() + } + } + + // validate address fields + scalarField, ok := flag.GetScalarType(field) + if ok { + switch scalarField { + case flag.AddressStringScalarType: + promptUi.Validate = ValidateAddress(addressCodec) + case flag.ValidatorAddressStringScalarType: + promptUi.Validate = ValidateAddress(validatorAddressCodec) + case flag.ConsensusAddressStringScalarType: + promptUi.Validate = ValidateAddress(consensusAddressCodec) + default: + // prompt.Validate = ValidatePromptNotEmpty (we possibly don't want to force all fields to be non-empty) + promptUi.Validate = nil + } + } + + // handle nested message fields recursively + if field.Kind() == protoreflect.MessageKind { + err := promptInnerMessageKind(field, addressCodec, validatorAddressCodec, consensusAddressCodec, promptPrefix, stdIn, msg) + if err != nil { + return nil, err + } + continue + } + + // handle repeated fields by prompting for a comma-separated list of values + if field.IsList() { + list, err := promptList(field, msg, promptUi, promptPrefix) + if err != nil { + return nil, err + } + + msg.Set(field, protoreflect.ValueOfList(list)) + continue + } + + promptUi.Label = fmt.Sprintf("Enter %s %s", promptPrefix, fieldName) + result, err := promptUi.Run() + if err != nil { + return msg, fmt.Errorf("failed to prompt for %s: %w", fieldName, err) + } + + v, err := valueOf(field, result) + if err != nil { + return msg, err + } + msg.Set(field, v) + } + + return msg, nil +} + +// valueOf converts a string input value to a protoreflect.Value based on the field's type. +// It handles string, numeric, bool, bytes and enum field types. +// Returns the converted value and any error that occurred during conversion. +func valueOf(field protoreflect.FieldDescriptor, result string) (protoreflect.Value, error) { + switch field.Kind() { + case protoreflect.StringKind: + return protoreflect.ValueOfString(result), nil + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + resultUint, err := strconv.ParseUint(result, 10, 0) + if err != nil { + return protoreflect.Value{}, fmt.Errorf("invalid value for int: %w", err) + } + + return protoreflect.ValueOfUint64(resultUint), nil + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + resultInt, err := strconv.ParseInt(result, 10, 0) + if err != nil { + return protoreflect.Value{}, fmt.Errorf("invalid value for int: %w", err) + } + // If a value was successfully parsed the ranges of: + // [minInt, maxInt] + // are within the ranges of: + // [minInt64, maxInt64] + // of which on 64-bit machines, which are most common, + // int==int64 + return protoreflect.ValueOfInt64(resultInt), nil + case protoreflect.BoolKind: + resultBool, err := strconv.ParseBool(result) + if err != nil { + return protoreflect.Value{}, fmt.Errorf("invalid value for bool: %w", err) + } + + return protoreflect.ValueOfBool(resultBool), nil + case protoreflect.BytesKind: + resultBytes := []byte(result) + return protoreflect.ValueOfBytes(resultBytes), nil + case protoreflect.EnumKind: + enumValue := field.Enum().Values().ByName(protoreflect.Name(result)) + if enumValue == nil { + return protoreflect.Value{}, fmt.Errorf("invalid enum value %q", result) + } + return protoreflect.ValueOfEnum(enumValue.Number()), nil + default: + // TODO: add more kinds + // skip any other types + return protoreflect.Value{}, nil + } +} + +// promptList prompts the user for a comma-separated list of values for a repeated field. +// The user will be prompted to enter values separated by commas which will be parsed +// according to the field's type using valueOf. +func promptList(field protoreflect.FieldDescriptor, msg protoreflect.Message, promptUi promptui.Prompt, promptPrefix string) (protoreflect.List, error) { + promptUi.Label = fmt.Sprintf("Enter %s %s list (separate values with ',')", promptPrefix, string(field.Name())) + result, err := promptUi.Run() + if err != nil { + return nil, fmt.Errorf("failed to prompt for %s: %w", string(field.Name()), err) + } + + list := msg.Mutable(field).List() + for _, item := range strings.Split(result, ",") { + v, err := valueOf(field, item) + if err != nil { + return nil, err + } + list.Append(v) + } + + return list, nil +} + +// promptInnerMessageKind handles prompting for fields that are of message kind. +// It handles both single messages and repeated message fields by delegating to +// promptInnerMessage and promptMessageList respectively. +func promptInnerMessageKind( + f protoreflect.FieldDescriptor, addressCodec addresscodec.Codec, + validatorAddressCodec, consensusAddressCodec addresscodec.Codec, + promptPrefix string, stdIn io.ReadCloser, msg protoreflect.Message, +) error { + if f.IsList() { + return promptMessageList(f, addressCodec, validatorAddressCodec, consensusAddressCodec, promptPrefix, stdIn, msg) + } + return promptInnerMessage(f, addressCodec, validatorAddressCodec, consensusAddressCodec, promptPrefix, stdIn, msg) +} + +// promptInnerMessage prompts for a single nested message field. It creates a new message instance, +// recursively prompts for its fields, and sets the populated message on the parent message. +func promptInnerMessage( + f protoreflect.FieldDescriptor, addressCodec addresscodec.Codec, + validatorAddressCodec, consensusAddressCodec addresscodec.Codec, + promptPrefix string, stdIn io.ReadCloser, msg protoreflect.Message, +) error { + fieldName := promptPrefix + "." + string(f.Name()) + nestedMsg := msg.Get(f).Message() + nestedMsg = nestedMsg.New() + // Recursively prompt for nested message fields + updatedMsg, err := promptMessage( + addressCodec, + validatorAddressCodec, + consensusAddressCodec, + fieldName, + stdIn, + nestedMsg, + ) + if err != nil { + return fmt.Errorf("failed to prompt for nested message %s: %w", fieldName, err) + } + + msg.Set(f, protoreflect.ValueOfMessage(updatedMsg)) + return nil +} + +// promptMessageList prompts for a repeated message field by repeatedly creating new message instances, +// prompting for their fields, and appending them to the list until the user chooses to stop. +func promptMessageList( + f protoreflect.FieldDescriptor, addressCodec addresscodec.Codec, + validatorAddressCodec, consensusAddressCodec addresscodec.Codec, + promptPrefix string, stdIn io.ReadCloser, msg protoreflect.Message, +) error { + list := msg.Mutable(f).List() + for { + fieldName := promptPrefix + "." + string(f.Name()) + // Create and populate a new message for the list + nestedMsg := list.NewElement().Message() + updatedMsg, err := promptMessage( + addressCodec, + validatorAddressCodec, + consensusAddressCodec, + fieldName, + stdIn, + nestedMsg, + ) + if err != nil { + return fmt.Errorf("failed to prompt for list item in %s: %w", fieldName, err) + } + + list.Append(protoreflect.ValueOfMessage(updatedMsg)) + + // Prompt whether to continue + // TODO: may be better yes/no rather than interactive? + continuePrompt := promptui.Select{ + Label: "Add another item?", + Items: []string{"No", "Yes"}, + Stdin: stdIn, + } + + _, result, err := continuePrompt.Run() + if err != nil { + return fmt.Errorf("failed to prompt for continuation: %w", err) + } + + if result == "No" { + break + } + } + + return nil +} diff --git a/client/v2/autocli/prompt/message_test.go b/client/v2/autocli/prompt/message_test.go new file mode 100644 index 000000000000..353cbf6cd725 --- /dev/null +++ b/client/v2/autocli/prompt/message_test.go @@ -0,0 +1,59 @@ +package prompt + +import ( + "io" + "strings" + "testing" + + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/reflect/protoreflect" + + "cosmossdk.io/client/v2/internal/testpb" + + address2 "github.com/cosmos/cosmos-sdk/codec/address" +) + +func getReader(inputs []string) io.ReadCloser { + // https://github.com/manifoldco/promptui/issues/63#issuecomment-621118463 + var paddedInputs []string + for _, input := range inputs { + padding := strings.Repeat("a", 4096-1-len(input)%4096) + paddedInputs = append(paddedInputs, input+"\n"+padding) + } + return io.NopCloser(strings.NewReader(strings.Join(paddedInputs, ""))) +} + +func TestPromptMessage(t *testing.T) { + tests := []struct { + name string + msg protoreflect.Message + inputs []string + }{ + { + name: "testPb", + inputs: []string{ + "1", "2", "string", "bytes", "10101010", "0", "234234", "3", "4", "5", "true", "ENUM_ONE", + "bar", "6", "10000", "stake", "cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn", + "bytes", "6", "7", "false", "false", "true,false,true", "1,2,3", "hello,hola,ciao", "ENUM_ONE,ENUM_TWO", + "10239", "0", "No", "bar", "343", "No", "134", "positional2", "23455", "stake", "No", "deprecate", + "shorthand", "false", "cosmosvaloper1tnh2q55v8wyygtt9srz5safamzdengsn9dsd7z", + }, + msg: (&testpb.MsgRequest{}).ProtoReflect(), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // https://github.com/manifoldco/promptui/issues/63#issuecomment-621118463 + var paddedInputs []string + for _, input := range tt.inputs { + padding := strings.Repeat("a", 4096-1-len(input)%4096) + paddedInputs = append(paddedInputs, input+"\n"+padding) + } + reader := io.NopCloser(strings.NewReader(strings.Join(paddedInputs, ""))) + + got, err := promptMessage(address2.NewBech32Codec("cosmos"), address2.NewBech32Codec("cosmosvaloper"), address2.NewBech32Codec("cosmosvalcons"), "prefix", reader, tt.msg) + require.NoError(t, err) + require.NotNil(t, got) + }) + } +} diff --git a/client/v2/autocli/prompt/struct.go b/client/v2/autocli/prompt/struct.go new file mode 100644 index 000000000000..a450b5a60e22 --- /dev/null +++ b/client/v2/autocli/prompt/struct.go @@ -0,0 +1,134 @@ +package prompt + +import ( + "fmt" + "io" + "reflect" + "strconv" + "strings" + + "github.com/manifoldco/promptui" +) + +// PromptStruct prompts for values of a struct's fields interactively. +// It returns the populated struct and any error encountered. +func PromptStruct[T any](promptPrefix string, data T) (T, error) { + return promptStruct(promptPrefix, data, nil) +} + +// promptStruct prompts for values of a struct's fields interactively. +// +// For each field in the struct: +// - Pointer fields are initialized if nil and handled recursively if they contain structs +// - Struct fields are handled recursively +// - String and int slices are supported +// - String and int fields are prompted for and populated +// - Only String and int pointers are supported +// - Other types are skipped +func promptStruct[T any](promptPrefix string, data T, stdIn io.ReadCloser) (T, error) { + v := reflect.ValueOf(&data).Elem() + if v.Kind() == reflect.Interface { + v = reflect.ValueOf(data) + if v.Kind() == reflect.Ptr { + v = v.Elem() + } + } + + for i := 0; i < v.NumField(); i++ { + field := v.Field(i) + fieldName := strings.ToLower(v.Type().Field(i).Name) + + // Handle pointer types + if field.Kind() == reflect.Ptr { + if field.IsNil() { + field.Set(reflect.New(field.Type().Elem())) + } + if field.Elem().Kind() == reflect.Struct { + result, err := promptStruct(promptPrefix+"."+fieldName, field.Interface(), stdIn) + if err != nil { + return data, err + } + field.Set(reflect.ValueOf(result)) + continue + } + } + + switch field.Kind() { + case reflect.Struct: + // For struct fields, create a new pointer to handle them + structPtr := reflect.New(field.Type()).Interface() + reflect.ValueOf(structPtr).Elem().Set(field) + + result, err := promptStruct(promptPrefix+"."+fieldName, structPtr, stdIn) + if err != nil { + return data, err + } + + // Get the actual struct value from the result + resultValue := reflect.ValueOf(result) + if resultValue.Kind() == reflect.Ptr { + resultValue = resultValue.Elem() + } + field.Set(resultValue) + continue + case reflect.Slice: + if v.Field(i).Type().Elem().Kind() != reflect.String && v.Field(i).Type().Elem().Kind() != reflect.Int { + continue + } + } + + // create prompts + prompt := promptui.Prompt{ + Label: fmt.Sprintf("Enter %s %s", promptPrefix, strings.Title(fieldName)), // nolint:staticcheck // strings.Title has a better API + Validate: ValidatePromptNotEmpty, + Stdin: stdIn, + } + + result, err := prompt.Run() + if err != nil { + return data, fmt.Errorf("failed to prompt for %s: %w", fieldName, err) + } + + switch field.Kind() { + case reflect.String: + v.Field(i).SetString(result) + case reflect.Int: + resultInt, err := strconv.ParseInt(result, 10, 0) + if err != nil { + return data, fmt.Errorf("invalid value for int: %w", err) + } + v.Field(i).SetInt(resultInt) + case reflect.Slice: + switch v.Field(i).Type().Elem().Kind() { + case reflect.String: + v.Field(i).Set(reflect.ValueOf([]string{result})) + case reflect.Int: + resultInt, err := strconv.ParseInt(result, 10, 0) + if err != nil { + return data, fmt.Errorf("invalid value for int: %w", err) + } + + v.Field(i).Set(reflect.ValueOf([]int{int(resultInt)})) + } + case reflect.Ptr: + // Handle pointer fields by creating a new value and setting it + ptrValue := reflect.New(field.Type().Elem()) + if ptrValue.Elem().Kind() == reflect.String { + ptrValue.Elem().SetString(result) + v.Field(i).Set(ptrValue) + } else if ptrValue.Elem().Kind() == reflect.Int { + resultInt, err := strconv.ParseInt(result, 10, 0) + if err != nil { + return data, fmt.Errorf("invalid value for int: %w", err) + } + ptrValue.Elem().SetInt(resultInt) + v.Field(i).Set(ptrValue) + } + default: + // skip any other types + continue + } + } + + return data, nil +} diff --git a/client/v2/autocli/prompt/struct_test.go b/client/v2/autocli/prompt/struct_test.go new file mode 100644 index 000000000000..1b712d81a0e7 --- /dev/null +++ b/client/v2/autocli/prompt/struct_test.go @@ -0,0 +1,46 @@ +package prompt + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +type innerStruct struct { + A string + B int +} + +type testStruct struct { + A string + B int + C *innerStruct + D innerStruct + E *string + F []string +} + +func TestPromptStruct(t *testing.T) { + type testCase[T any] struct { + name string + data T + inputs []string + } + tests := []testCase[testStruct]{ + { + name: "test struct", + data: testStruct{}, + inputs: []string{ + "a", "1", "b", "2", "c", "3", "pointerStr", "list", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + inputs := getReader(tt.inputs) + got, err := promptStruct("testStruct", tt.data, inputs) + require.NoError(t, err) + require.NotNil(t, got) + }) + } +} diff --git a/client/v2/autocli/prompt/util.go b/client/v2/autocli/prompt/util.go new file mode 100644 index 000000000000..4b3bdec56baf --- /dev/null +++ b/client/v2/autocli/prompt/util.go @@ -0,0 +1,70 @@ +package prompt + +import ( + "fmt" + + "github.com/manifoldco/promptui" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Select prompts the user to select an option from a list of choices. +// It takes a label string to display above the selection prompt and a slice of string options to choose from. +func Select(label string, options []string) (string, error) { + selectUi := promptui.Select{ + Label: label, + Items: options, + } + + _, selectedProposalType, err := selectUi.Run() + if err != nil { + return "", fmt.Errorf("failed to prompt proposal types: %w", err) + } + + return selectedProposalType, nil +} + +// PromptString prompts the user for a string input with the given label. +// It validates the input using the provided validate function. +func PromptString(label string, validate func(string) error) (string, error) { + promptUi := promptui.Prompt{ + Label: label, + Validate: validate, + } + + return promptUi.Run() +} + +// SetDefaults sets default values on a protobuf message based on a map of field names to values. +// It iterates through the message fields and sets values from the defaults map if the field name +// and type match. +func SetDefaults(msg protoreflect.Message, defaults map[string]interface{}) { + fields := msg.Descriptor().Fields() + for i := 0; i < fields.Len(); i++ { + field := fields.Get(i) + fieldName := string(field.Name()) + + if v, ok := defaults[fieldName]; ok { + // Get the field's kind + fieldKind := field.Kind() + + switch v.(type) { + case string: + if fieldKind == protoreflect.StringKind { + msg.Set(field, protoreflect.ValueOf(v)) + } + case int64: + if fieldKind == protoreflect.Int64Kind { + msg.Set(field, protoreflect.ValueOf(v)) + } + case int32: + if fieldKind == protoreflect.Int32Kind { + msg.Set(field, protoreflect.ValueOf(v)) + } + case bool: + if fieldKind == protoreflect.BoolKind { + msg.Set(field, protoreflect.ValueOf(v)) + } + } + } + } +} diff --git a/client/prompt_validation.go b/client/v2/autocli/prompt/validation.go similarity index 51% rename from client/prompt_validation.go rename to client/v2/autocli/prompt/validation.go index 9d3af0d58f67..c189918434ab 100644 --- a/client/prompt_validation.go +++ b/client/v2/autocli/prompt/validation.go @@ -1,4 +1,4 @@ -package client +package prompt import ( "errors" @@ -6,7 +6,7 @@ import ( "net/url" "unicode" - sdk "github.com/cosmos/cosmos-sdk/types" + "cosmossdk.io/core/address" ) // ValidatePromptNotEmpty validates that the input is not empty. @@ -18,40 +18,23 @@ func ValidatePromptNotEmpty(input string) error { return nil } -// ValidatePromptURL validates that the input is a valid URL. -func ValidatePromptURL(input string) error { - _, err := url.ParseRequestURI(input) - if err != nil { - return fmt.Errorf("invalid URL: %w", err) - } - - return nil -} - -// ValidatePromptAddress validates that the input is a valid Bech32 address. -func ValidatePromptAddress(input string) error { // TODO(@julienrbrt) remove and add prompts in AutoCLI - _, err := sdk.AccAddressFromBech32(input) - if err == nil { - return nil - } - - _, err = sdk.ValAddressFromBech32(input) - if err == nil { - return nil - } +// ValidateAddress returns a validation function that checks if a string is a valid address +// for the given address codec. +func ValidateAddress(ac address.Codec) func(string) error { + return func(i string) error { + if _, err := ac.StringToBytes(i); err != nil { + return fmt.Errorf("invalid address") + } - _, err = sdk.ConsAddressFromBech32(input) - if err == nil { return nil } - - return fmt.Errorf("invalid address: %w", err) } -// ValidatePromptCoins validates that the input contains valid sdk.Coins -func ValidatePromptCoins(input string) error { - if _, err := sdk.ParseCoinsNormalized(input); err != nil { - return fmt.Errorf("invalid coins: %w", err) +// ValidatePromptURL validates that the input is a valid URL. +func ValidatePromptURL(input string) error { + _, err := url.ParseRequestURI(input) + if err != nil { + return fmt.Errorf("invalid URL: %w", err) } return nil diff --git a/client/v2/autocli/prompt/validation_test.go b/client/v2/autocli/prompt/validation_test.go new file mode 100644 index 000000000000..32b65b2c5b26 --- /dev/null +++ b/client/v2/autocli/prompt/validation_test.go @@ -0,0 +1,55 @@ +package prompt + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "cosmossdk.io/core/address" + + address2 "github.com/cosmos/cosmos-sdk/codec/address" +) + +func TestValidatePromptNotEmpty(t *testing.T) { + require := require.New(t) + + require.NoError(ValidatePromptNotEmpty("foo")) + require.ErrorContains(ValidatePromptNotEmpty(""), "input cannot be empty") +} + +func TestValidateAddress(t *testing.T) { + tests := []struct { + name string + ac address.Codec + addr string + }{ + { + name: "address", + ac: address2.NewBech32Codec("cosmos"), + addr: "cosmos129lxcu2n3hx54fdxlwsahqkjr3sp32cxm00zlm", + }, + { + name: "validator address", + ac: address2.NewBech32Codec("cosmosvaloper"), + addr: "cosmosvaloper1tnh2q55v8wyygtt9srz5safamzdengsn9dsd7z", + }, + { + name: "consensus address", + ac: address2.NewBech32Codec("cosmosvalcons"), + addr: "cosmosvalcons136uu5rj23kdr3jjcmjt7aw5qpugjjat2klgrus", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := ValidateAddress(tt.ac)(tt.addr) + require.NoError(t, err) + }) + } +} + +func TestValidatePromptURL(t *testing.T) { + require := require.New(t) + + require.NoError(ValidatePromptURL("https://example.com")) + require.ErrorContains(ValidatePromptURL("foo"), "invalid URL") +} diff --git a/client/v2/go.mod b/client/v2/go.mod index a2daf5013614..825387886272 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -118,7 +118,7 @@ require ( github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect github.com/magiconair/properties v1.8.9 // indirect - github.com/manifoldco/promptui v0.9.0 // indirect + github.com/manifoldco/promptui v0.9.0 github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect diff --git a/client/v2/internal/prompt/validation.go b/client/v2/internal/prompt/validation.go deleted file mode 100644 index d914999f214d..000000000000 --- a/client/v2/internal/prompt/validation.go +++ /dev/null @@ -1,37 +0,0 @@ -package prompt - -import ( - "errors" - "fmt" - "net/url" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// ValidatePromptNotEmpty validates that the input is not empty. -func ValidatePromptNotEmpty(input string) error { - if input == "" { - return errors.New("input cannot be empty") - } - - return nil -} - -// ValidatePromptURL validates that the input is a valid URL. -func ValidatePromptURL(input string) error { - _, err := url.ParseRequestURI(input) - if err != nil { - return fmt.Errorf("invalid URL: %w", err) - } - - return nil -} - -// ValidatePromptCoins validates that the input contains valid sdk.Coins -func ValidatePromptCoins(input string) error { - if _, err := sdk.ParseCoinsNormalized(input); err != nil { - return fmt.Errorf("invalid coins: %w", err) - } - - return nil -} diff --git a/client/v2/internal/prompt/validation_test.go b/client/v2/internal/prompt/validation_test.go deleted file mode 100644 index 86e4ba4ab475..000000000000 --- a/client/v2/internal/prompt/validation_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package prompt_test - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "cosmossdk.io/client/v2/internal/prompt" -) - -func TestValidatePromptNotEmpty(t *testing.T) { - require := require.New(t) - - require.NoError(prompt.ValidatePromptNotEmpty("foo")) - require.ErrorContains(prompt.ValidatePromptNotEmpty(""), "input cannot be empty") -} - -func TestValidatePromptURL(t *testing.T) { - require := require.New(t) - - require.NoError(prompt.ValidatePromptURL("https://example.com")) - require.ErrorContains(prompt.ValidatePromptURL("foo"), "invalid URL") -} - -func TestValidatePromptCoins(t *testing.T) { - require := require.New(t) - - require.NoError(prompt.ValidatePromptCoins("100stake")) - require.ErrorContains(prompt.ValidatePromptCoins("foo"), "invalid coins") -} diff --git a/simapp/go.mod b/simapp/go.mod index 368fb7f27b40..834a72990b14 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -4,7 +4,7 @@ go 1.23.3 require ( cosmossdk.io/api v0.7.6 - cosmossdk.io/client/v2 v2.0.0-20230630094428-02b760776860 + cosmossdk.io/client/v2 v2.0.0-beta.6 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index e3ce2f17bafc..48cc9a8c688c 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -4,7 +4,7 @@ go 1.23.3 require ( cosmossdk.io/api v0.7.6 - cosmossdk.io/client/v2 v2.0.0-00010101000000-000000000000 + cosmossdk.io/client/v2 v2.0.0-beta.6 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/log v1.5.0 diff --git a/tests/go.mod b/tests/go.mod index fb76f7776604..edb0679af957 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -68,7 +68,7 @@ require ( cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.13 // indirect cloud.google.com/go/storage v1.43.0 // indirect - cosmossdk.io/client/v2 v2.0.0-20230630094428-02b760776860 // indirect + cosmossdk.io/client/v2 v2.0.0-beta.6 // indirect cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 // indirect cosmossdk.io/indexer/postgres v0.1.0 // indirect diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index faead6769e13..c80b0ec793a9 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -12,7 +12,7 @@ require ( cosmossdk.io/math v1.4.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 - cosmossdk.io/x/gov v0.0.0-20230925135524-a1bc045b3190 + cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.53.0 @@ -36,6 +36,7 @@ require ( require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect + cosmossdk.io/client/v2 v2.0.0-beta.6 // indirect cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 // indirect @@ -182,6 +183,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( cosmossdk.io/api => ../../api + cosmossdk.io/client/v2 => ../../client/v2 cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/gov => ../gov diff --git a/x/gov/CHANGELOG.md b/x/gov/CHANGELOG.md index 231a520171a9..4743c45d6571 100644 --- a/x/gov/CHANGELOG.md +++ b/x/gov/CHANGELOG.md @@ -61,6 +61,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Client Breaking Changes * [#19101](https://github.com/cosmos/cosmos-sdk/pull/19101) Querying specific params types was deprecated in gov/v1 and has been removed. gov/v1beta1 rest unchanged. +* [#22775](https://github.com/cosmos/cosmos-sdk/pull/22775) Refactored interactive proposal prompts to use `client/v2/autocli/prompt` package. ### API Breaking Changes diff --git a/x/gov/client/cli/prompt.go b/x/gov/client/cli/prompt.go index ec5f49287711..08a4c1d05d77 100644 --- a/x/gov/client/cli/prompt.go +++ b/x/gov/client/cli/prompt.go @@ -4,14 +4,15 @@ import ( "encoding/json" "fmt" "os" - "reflect" // #nosec "sort" - "strconv" "strings" - "github.com/manifoldco/promptui" + gogoproto "github.com/cosmos/gogoproto/proto" "github.com/spf13/cobra" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoregistry" + "cosmossdk.io/client/v2/autocli/prompt" "cosmossdk.io/core/address" "cosmossdk.io/x/gov/types" @@ -19,7 +20,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + sdkaddress "github.com/cosmos/cosmos-sdk/types/address" ) const ( @@ -60,102 +61,6 @@ var suggestedProposalTypes = []proposalType{ }, } -// Prompt prompts the user for all values of the given type. -// data is the struct to be filled -// namePrefix is the name to be displayed as "Enter " -// TODO: when bringing this in autocli, use proto message instead -// this will simplify the get address logic -func Prompt[T any](data T, namePrefix string, addressCodec address.Codec) (T, error) { - v := reflect.ValueOf(&data).Elem() - if v.Kind() == reflect.Interface { - v = reflect.ValueOf(data) - if v.Kind() == reflect.Ptr { - v = v.Elem() - } - } - - for i := 0; i < v.NumField(); i++ { - // if the field is a struct skip or not slice of string or int then skip - switch v.Field(i).Kind() { - case reflect.Struct: - // TODO(@julienrbrt) in the future we can add a recursive call to Prompt - continue - case reflect.Slice: - if v.Field(i).Type().Elem().Kind() != reflect.String && v.Field(i).Type().Elem().Kind() != reflect.Int { - continue - } - } - - // create prompts - prompt := promptui.Prompt{ - Label: fmt.Sprintf("Enter %s %s", namePrefix, strings.ToLower(client.CamelCaseToString(v.Type().Field(i).Name))), - Validate: client.ValidatePromptNotEmpty, - } - - fieldName := strings.ToLower(v.Type().Field(i).Name) - - if strings.EqualFold(fieldName, "authority") { - // pre-fill with gov address - defaultAddr, err := addressCodec.BytesToString(authtypes.NewModuleAddress(types.ModuleName)) - if err != nil { - return data, err - } - prompt.Default = defaultAddr - prompt.Validate = client.ValidatePromptAddress - } - - // TODO(@julienrbrt) use scalar annotation instead of dumb string name matching - if strings.Contains(fieldName, "addr") || - strings.Contains(fieldName, "sender") || - strings.Contains(fieldName, "voter") || - strings.Contains(fieldName, "depositor") || - strings.Contains(fieldName, "granter") || - strings.Contains(fieldName, "grantee") || - strings.Contains(fieldName, "recipient") { - prompt.Validate = client.ValidatePromptAddress - } - - result, err := prompt.Run() - if err != nil { - return data, fmt.Errorf("failed to prompt for %s: %w", fieldName, err) - } - - switch v.Field(i).Kind() { - case reflect.String: - v.Field(i).SetString(result) - case reflect.Int: - resultInt, err := strconv.ParseInt(result, 10, 0) - if err != nil { - return data, fmt.Errorf("invalid value for int: %w", err) - } - // If a value was successfully parsed the ranges of: - // [minInt, maxInt] - // are within the ranges of: - // [minInt64, maxInt64] - // of which on 64-bit machines, which are most common, - // int==int64 - v.Field(i).SetInt(resultInt) - case reflect.Slice: - switch v.Field(i).Type().Elem().Kind() { - case reflect.String: - v.Field(i).Set(reflect.ValueOf([]string{result})) - case reflect.Int: - resultInt, err := strconv.ParseInt(result, 10, 0) - if err != nil { - return data, fmt.Errorf("invalid value for int: %w", err) - } - - v.Field(i).Set(reflect.ValueOf([]int{int(resultInt)})) - } - default: - // skip any other types - continue - } - } - - return data, nil -} - type proposalType struct { Name string MsgType string @@ -163,8 +68,8 @@ type proposalType struct { } // Prompt the proposal type values and return the proposal and its metadata -func (p *proposalType) Prompt(cdc codec.Codec, skipMetadata bool, addressCodec address.Codec) (*proposal, types.ProposalMetadata, error) { - metadata, err := PromptMetadata(skipMetadata, addressCodec) +func (p *proposalType) Prompt(cdc codec.Codec, skipMetadata bool, addressCodec, validatorAddressCodec, consensusAddressCodec address.Codec) (*proposal, types.ProposalMetadata, error) { + metadata, err := PromptMetadata(skipMetadata) if err != nil { return nil, metadata, fmt.Errorf("failed to set proposal metadata: %w", err) } @@ -176,11 +81,7 @@ func (p *proposalType) Prompt(cdc codec.Codec, skipMetadata bool, addressCodec a } // set deposit - depositPrompt := promptui.Prompt{ - Label: "Enter proposal deposit", - Validate: client.ValidatePromptCoins, - } - proposal.Deposit, err = depositPrompt.Run() + proposal.Deposit, err = prompt.PromptString("Enter proposal deposit", ValidatePromptCoins) if err != nil { return nil, metadata, fmt.Errorf("failed to set proposal deposit: %w", err) } @@ -190,12 +91,35 @@ func (p *proposalType) Prompt(cdc codec.Codec, skipMetadata bool, addressCodec a } // set messages field - result, err := Prompt(p.Msg, "msg", addressCodec) + msg, err := protoregistry.GlobalTypes.FindMessageByURL(p.MsgType) + if err != nil { + return nil, metadata, fmt.Errorf("failed to find proposal msg: %w", err) + } + newMsg := msg.New() + govAddr := sdkaddress.Module(types.ModuleName) + govAddrStr, err := addressCodec.BytesToString(govAddr) + if err != nil { + return nil, metadata, fmt.Errorf("failed to convert gov address to string: %w", err) + } + + prompt.SetDefaults(newMsg, map[string]interface{}{"authority": govAddrStr}) + result, err := prompt.PromptMessage(addressCodec, validatorAddressCodec, consensusAddressCodec, "msg", newMsg) if err != nil { return nil, metadata, fmt.Errorf("failed to set proposal message: %w", err) } - message, err := cdc.MarshalInterfaceJSON(result) + // message must be converted to gogoproto so @type is not lost + resultBytes, err := proto.Marshal(result.Interface()) + if err != nil { + return nil, metadata, fmt.Errorf("failed to marshal proposal message: %w", err) + } + + err = gogoproto.Unmarshal(resultBytes, p.Msg) + if err != nil { + return nil, metadata, fmt.Errorf("failed to unmarshal proposal message: %w", err) + } + + message, err := cdc.MarshalInterfaceJSON(p.Msg) if err != nil { return nil, metadata, fmt.Errorf("failed to marshal proposal message: %w", err) } @@ -214,33 +138,22 @@ func getProposalSuggestions() []string { } // PromptMetadata prompts for proposal metadata or only title and summary if skip is true -func PromptMetadata(skip bool, addressCodec address.Codec) (types.ProposalMetadata, error) { +func PromptMetadata(skip bool) (types.ProposalMetadata, error) { if !skip { - metadata, err := Prompt(types.ProposalMetadata{}, "proposal", addressCodec) + metadata, err := prompt.PromptStruct("proposal", types.ProposalMetadata{}) if err != nil { - return metadata, fmt.Errorf("failed to set proposal metadata: %w", err) + return types.ProposalMetadata{}, err } return metadata, nil } - // prompt for title and summary - titlePrompt := promptui.Prompt{ - Label: "Enter proposal title", - Validate: client.ValidatePromptNotEmpty, - } - - title, err := titlePrompt.Run() + title, err := prompt.PromptString("Enter proposal title", ValidatePromptNotEmpty) if err != nil { return types.ProposalMetadata{}, fmt.Errorf("failed to set proposal title: %w", err) } - summaryPrompt := promptui.Prompt{ - Label: "Enter proposal summary", - Validate: client.ValidatePromptNotEmpty, - } - - summary, err := summaryPrompt.Run() + summary, err := prompt.PromptString("Enter proposal summary", ValidatePromptNotEmpty) if err != nil { return types.ProposalMetadata{}, fmt.Errorf("failed to set proposal summary: %w", err) } @@ -262,17 +175,10 @@ func NewCmdDraftProposal() *cobra.Command { return err } - // prompt proposal type - proposalTypesPrompt := promptui.Select{ - Label: "Select proposal type", - Items: getProposalSuggestions(), - } - - _, selectedProposalType, err := proposalTypesPrompt.Run() + selectedProposalType, err := prompt.Select("Select proposal type", getProposalSuggestions()) if err != nil { return fmt.Errorf("failed to prompt proposal types: %w", err) } - var proposal proposalType for _, p := range suggestedProposalTypes { if strings.EqualFold(p.Name, selectedProposalType) { @@ -283,17 +189,10 @@ func NewCmdDraftProposal() *cobra.Command { // create any proposal type if proposal.Name == proposalOther { - // prompt proposal type - msgPrompt := promptui.Select{ - Label: "Select proposal message type:", - Items: func() []string { - msgs := clientCtx.InterfaceRegistry.ListImplementations(sdk.MsgInterfaceProtoName) - sort.Strings(msgs) - return msgs - }(), - } + msgs := clientCtx.InterfaceRegistry.ListImplementations(sdk.MsgInterfaceProtoName) + sort.Strings(msgs) - _, result, err := msgPrompt.Run() + result, err := prompt.Select("Select proposal message type:", msgs) if err != nil { return fmt.Errorf("failed to prompt proposal types: %w", err) } @@ -311,7 +210,7 @@ func NewCmdDraftProposal() *cobra.Command { skipMetadataPrompt, _ := cmd.Flags().GetBool(flagSkipMetadata) - result, metadata, err := proposal.Prompt(clientCtx.Codec, skipMetadataPrompt, clientCtx.AddressCodec) + result, metadata, err := proposal.Prompt(clientCtx.Codec, skipMetadataPrompt, clientCtx.AddressCodec, clientCtx.ValidatorAddressCodec, clientCtx.ConsensusAddressCodec) if err != nil { return err } diff --git a/x/gov/client/cli/prompt_test.go b/x/gov/client/cli/prompt_test.go deleted file mode 100644 index 359c9dea5b53..000000000000 --- a/x/gov/client/cli/prompt_test.go +++ /dev/null @@ -1,90 +0,0 @@ -//go:build !race -// +build !race - -// Disabled -race because the package github.com/manifoldco/promptui@v0.9.0 -// has a data race and this code exposes it, but fixing it would require -// holding up the associated change to this. - -package cli_test - -import ( - "fmt" - "math" - "os" - "testing" - - "github.com/chzyer/readline" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "cosmossdk.io/x/gov/client/cli" - - codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil" -) - -type st struct { - I int -} - -// Tests that we successfully report overflows in parsing ints -// See https://github.com/cosmos/cosmos-sdk/issues/13346 -func TestPromptIntegerOverflow(t *testing.T) { - // Intentionally sending values out of the range of int. - intOverflowers := []string{ - "-9223372036854775809", - "9223372036854775808", - "9923372036854775809", - "-9923372036854775809", - "18446744073709551616", - "-18446744073709551616", - } - - for _, intOverflower := range intOverflowers { - overflowStr := intOverflower - t.Run(overflowStr, func(t *testing.T) { - origStdin := readline.Stdin - defer func() { - readline.Stdin = origStdin - }() - - fin, fw := readline.NewFillableStdin(os.Stdin) - readline.Stdin = fin - _, err := fw.Write([]byte(overflowStr + "\n")) - assert.NoError(t, err) - - v, err := cli.Prompt(st{}, "", codectestutil.CodecOptions{}.GetAddressCodec()) - assert.Equal(t, st{}, v, "expected a value of zero") - require.NotNil(t, err, "expected a report of an overflow") - require.Contains(t, err.Error(), "range") - }) - } -} - -func TestPromptParseInteger(t *testing.T) { - // Intentionally sending a value out of the range of - values := []struct { - in string - want int - }{ - {fmt.Sprintf("%d", math.MinInt), math.MinInt}, - {"19991", 19991}, - {"991000000199", 991000000199}, - } - - for _, tc := range values { - t.Run(tc.in, func(t *testing.T) { - origStdin := readline.Stdin - defer func() { - readline.Stdin = origStdin - }() - - fin, fw := readline.NewFillableStdin(os.Stdin) - readline.Stdin = fin - _, err := fw.Write([]byte(tc.in + "\n")) - assert.NoError(t, err) - v, err := cli.Prompt(st{}, "", codectestutil.CodecOptions{}.GetAddressCodec()) - assert.Nil(t, err, "expected a nil error") - assert.Equal(t, tc.want, v.I, "expected %d = %d", tc.want, v.I) - }) - } -} diff --git a/x/gov/client/cli/util.go b/x/gov/client/cli/util.go index f8628f9cffed..cdf76268b1da 100644 --- a/x/gov/client/cli/util.go +++ b/x/gov/client/cli/util.go @@ -209,3 +209,21 @@ func ReadGovPropFlags(clientCtx client.Context, flagSet *pflag.FlagSet) (*govv1. return ReadGovPropCmdFlags(addr, flagSet) } + +// ValidatePromptCoins validates that the input contains valid sdk.Coins +func ValidatePromptCoins(input string) error { + if _, err := sdk.ParseCoinsNormalized(input); err != nil { + return fmt.Errorf("invalid coins: %w", err) + } + + return nil +} + +// ValidatePromptNotEmpty validates that the input is not empty. +func ValidatePromptNotEmpty(input string) error { + if input == "" { + return errors.New("input cannot be empty") + } + + return nil +} diff --git a/x/gov/client/cli/util_test.go b/x/gov/client/cli/util_test.go index 2601a526fe1b..e5ad5efcc29b 100644 --- a/x/gov/client/cli/util_test.go +++ b/x/gov/client/cli/util_test.go @@ -714,3 +714,17 @@ func TestReadGovPropFlags(t *testing.T) { }) } } + +func TestValidatePromptNotEmpty(t *testing.T) { + require := require.New(t) + + require.NoError(ValidatePromptNotEmpty("foo")) + require.ErrorContains(ValidatePromptNotEmpty(""), "input cannot be empty") +} + +func TestValidatePromptCoins(t *testing.T) { + require := require.New(t) + + require.NoError(ValidatePromptCoins("100stake")) + require.ErrorContains(ValidatePromptCoins("foo"), "invalid coins") +} diff --git a/x/gov/go.mod b/x/gov/go.mod index 208c7fda324c..f35867bb0486 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -4,6 +4,7 @@ go 1.23.3 require ( cosmossdk.io/api v0.7.6 + cosmossdk.io/client/v2 v2.0.0-beta.6 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -15,14 +16,14 @@ require ( cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 - github.com/chzyer/readline v1.5.1 + github.com/chzyer/readline v1.5.1 // indirect github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/gogoproto v1.7.0 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/manifoldco/promptui v0.9.0 + github.com/manifoldco/promptui v0.9.0 // indirect github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.10.0 @@ -181,6 +182,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( cosmossdk.io/api => ../../api + cosmossdk.io/client/v2 => ../../client/v2 cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/protocolpool => ../protocolpool diff --git a/x/group/client/cli/prompt.go b/x/group/client/cli/prompt.go index 3cb018e02548..f3677c485059 100644 --- a/x/group/client/cli/prompt.go +++ b/x/group/client/cli/prompt.go @@ -6,9 +6,12 @@ import ( "os" "sort" - "github.com/manifoldco/promptui" + gogoproto "github.com/cosmos/gogoproto/proto" "github.com/spf13/cobra" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoregistry" + "cosmossdk.io/client/v2/autocli/prompt" "cosmossdk.io/core/address" govcli "cosmossdk.io/x/gov/client/cli" govtypes "cosmossdk.io/x/gov/types" @@ -27,14 +30,15 @@ const ( ) type proposalType struct { - Name string - Msg sdk.Msg + Name string + MsgType string + Msg sdk.Msg } // Prompt the proposal type values and return the proposal and its metadata. -func (p *proposalType) Prompt(cdc codec.Codec, skipMetadata bool, addressCodec address.Codec) (*Proposal, govtypes.ProposalMetadata, error) { +func (p *proposalType) Prompt(cdc codec.Codec, skipMetadata bool, addressCodec, validatorAddressCodec, consensusAddressCodec address.Codec) (*Proposal, govtypes.ProposalMetadata, error) { // set metadata - metadata, err := govcli.PromptMetadata(skipMetadata, addressCodec) + metadata, err := govcli.PromptMetadata(skipMetadata) if err != nil { return nil, metadata, fmt.Errorf("failed to set proposal metadata: %w", err) } @@ -46,22 +50,14 @@ func (p *proposalType) Prompt(cdc codec.Codec, skipMetadata bool, addressCodec a } // set group policy address - policyAddressPrompt := promptui.Prompt{ - Label: "Enter group policy address", - Validate: client.ValidatePromptAddress, - } - groupPolicyAddress, err := policyAddressPrompt.Run() + groupPolicyAddress, err := prompt.PromptString("Enter group policy address", prompt.ValidateAddress(addressCodec)) if err != nil { return nil, metadata, fmt.Errorf("failed to set group policy address: %w", err) } proposal.GroupPolicyAddress = groupPolicyAddress // set proposer address - proposerPrompt := promptui.Prompt{ - Label: "Enter proposer address", - Validate: client.ValidatePromptAddress, - } - proposerAddress, err := proposerPrompt.Run() + proposerAddress, err := prompt.PromptString("Enter proposer address", prompt.ValidateAddress(addressCodec)) if err != nil { return nil, metadata, fmt.Errorf("failed to set proposer address: %w", err) } @@ -72,12 +68,29 @@ func (p *proposalType) Prompt(cdc codec.Codec, skipMetadata bool, addressCodec a } // set messages field - result, err := govcli.Prompt(p.Msg, "msg", addressCodec) + msg, err := protoregistry.GlobalTypes.FindMessageByURL(p.MsgType) + if err != nil { + return nil, metadata, fmt.Errorf("failed to find proposal msg: %w", err) + } + newMsg := msg.New() + + result, err := prompt.PromptMessage(addressCodec, validatorAddressCodec, consensusAddressCodec, "msg", newMsg) if err != nil { return nil, metadata, fmt.Errorf("failed to set proposal message: %w", err) } - message, err := cdc.MarshalInterfaceJSON(result) + // message must be converted to gogoproto so @type is not lost + resultBytes, err := proto.Marshal(result.Interface()) + if err != nil { + return nil, metadata, fmt.Errorf("failed to marshal proposal message: %w", err) + } + + err = gogoproto.Unmarshal(resultBytes, p.Msg) + if err != nil { + return nil, metadata, fmt.Errorf("failed to unmarshal proposal message: %w", err) + } + + message, err := cdc.MarshalInterfaceJSON(p.Msg) if err != nil { return nil, metadata, fmt.Errorf("failed to marshal proposal message: %w", err) } @@ -101,12 +114,7 @@ func NewCmdDraftProposal() *cobra.Command { } // prompt proposal type - proposalTypesPrompt := promptui.Select{ - Label: "Select proposal type", - Items: []string{proposalText, proposalOther}, - } - - _, selectedProposalType, err := proposalTypesPrompt.Run() + selectedProposalType, err := prompt.Select("Select proposal type", []string{proposalText, proposalOther}) if err != nil { return fmt.Errorf("failed to prompt proposal types: %w", err) } @@ -118,20 +126,15 @@ func NewCmdDraftProposal() *cobra.Command { case proposalOther: // prompt proposal type proposal = &proposalType{Name: proposalOther} - msgPrompt := promptui.Select{ - Label: "Select proposal message type:", - Items: func() []string { - msgs := clientCtx.InterfaceRegistry.ListImplementations(sdk.MsgInterfaceProtoName) - sort.Strings(msgs) - return msgs - }(), - } - _, result, err := msgPrompt.Run() + msgs := clientCtx.InterfaceRegistry.ListImplementations(sdk.MsgInterfaceProtoName) + sort.Strings(msgs) + + result, err := prompt.Select("Select proposal message type:", msgs) if err != nil { return fmt.Errorf("failed to prompt proposal types: %w", err) } - + proposal.MsgType = result proposal.Msg, err = sdk.GetMsgFromTypeURL(clientCtx.Codec, result) if err != nil { // should never happen @@ -143,7 +146,7 @@ func NewCmdDraftProposal() *cobra.Command { skipMetadataPrompt, _ := cmd.Flags().GetBool(flagSkipMetadata) - result, metadata, err := proposal.Prompt(clientCtx.Codec, skipMetadataPrompt, clientCtx.AddressCodec) + result, metadata, err := proposal.Prompt(clientCtx.Codec, skipMetadataPrompt, clientCtx.AddressCodec, clientCtx.ValidatorAddressCodec, clientCtx.ConsensusAddressCodec) if err != nil { return err } diff --git a/x/group/go.mod b/x/group/go.mod index c23406794e66..059b237bc831 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -4,6 +4,7 @@ go 1.23.3 require ( cosmossdk.io/api v0.7.6 + cosmossdk.io/client/v2 v2.0.0-beta.6 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/depinject v1.1.0 @@ -15,7 +16,7 @@ require ( cosmossdk.io/x/authz v0.0.0-00010101000000-000000000000 cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 - cosmossdk.io/x/gov v0.0.0-20230925135524-a1bc045b3190 + cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a cosmossdk.io/x/mint v0.0.0-00010101000000-000000000000 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 github.com/cockroachdb/apd/v3 v3.2.1 @@ -24,7 +25,6 @@ require ( github.com/cosmos/gogoproto v1.7.0 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/manifoldco/promptui v0.9.0 github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.10.0 go.uber.org/mock v0.5.0 @@ -120,6 +120,7 @@ require ( github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect github.com/magiconair/properties v1.8.9 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.3 // indirect @@ -184,6 +185,7 @@ replace github.com/cosmos/cosmos-sdk => ../../ // TODO remove post spinning out all modules replace ( cosmossdk.io/api => ../../api + cosmossdk.io/client/v2 => ../../client/v2 cosmossdk.io/store => ../../store cosmossdk.io/x/accounts => ../accounts cosmossdk.io/x/accounts/defaults/base => ../accounts/defaults/base diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index 5d71a9feff83..fa3d43e9a917 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -10,7 +10,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.5.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc - cosmossdk.io/x/gov v0.0.0-20230925135524-a1bc045b3190 + cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 github.com/cometbft/cometbft/api v1.0.0-rc2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 @@ -40,6 +40,7 @@ require ( cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.13 // indirect cloud.google.com/go/storage v1.43.0 // indirect + cosmossdk.io/client/v2 v2.0.0-beta.6 // indirect cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/schema v0.4.0 // indirect @@ -206,6 +207,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. replace ( cosmossdk.io/api => ../../api + cosmossdk.io/client/v2 => ../../client/v2 cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/gov => ../gov From 71d2571e21a8b513c48d97b50aeeb2a9d5e9489e Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 11 Dec 2024 12:19:24 +0100 Subject: [PATCH 41/62] refactor(testutil)!: remove `cmdtest` (#22826) --- CHANGELOG.md | 1 + client/keys/add.go | 2 +- client/keys/export.go | 2 +- client/keys/mnemonic.go | 3 +- client/keys/show.go | 4 +- client/keys/utils.go | 2 +- tests/go.mod | 2 +- tests/integration/genutil/export_test.go | 354 ----------------------- testutil/cmdtest/system.go | 120 -------- version/command.go | 5 +- version/version_test.go | 99 ------- 11 files changed, 9 insertions(+), 585 deletions(-) delete mode 100644 tests/integration/genutil/export_test.go delete mode 100644 testutil/cmdtest/system.go diff --git a/CHANGELOG.md b/CHANGELOG.md index f8b5b452b08c..4d8fdac92ef0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i * RocksDB libraries have been upgraded to support RockDB v9 instead of v8. * (testutil/integration) [#22616](https://github.com/cosmos/cosmos-sdk/pull/22616) Remove double context in integration tests v1. * Use integrationApp.Context() instead of creating a context prior. +* [#22826](https://github.com/cosmos/cosmos-sdk/pull/22826) Simplify testing frameworks by removing `testutil/cmdtest`. ### Bug Fixes diff --git a/client/keys/add.go b/client/keys/add.go index ee006231ace2..bbee335ba5f6 100644 --- a/client/keys/add.go +++ b/client/keys/add.go @@ -400,7 +400,7 @@ func printCreate(ctx client.Context, cmd *cobra.Command, k *keyring.Record, show return fmt.Errorf("failed to print mnemonic: %w", err) } } else { - if err = printDiscreetly(ctx, cmd.ErrOrStderr(), "**Important** write this mnemonic phrase in a safe place.\nIt is the only way to recover your account if you ever forget your password.", mnemonic); err != nil { + if err = printDiscreetly(cmd.ErrOrStderr(), "**Important** write this mnemonic phrase in a safe place.\nIt is the only way to recover your account if you ever forget your password.", mnemonic); err != nil { return fmt.Errorf("failed to print mnemonic: %w", err) } } diff --git a/client/keys/export.go b/client/keys/export.go index 9abdb684ec11..ef235113ac13 100644 --- a/client/keys/export.go +++ b/client/keys/export.go @@ -89,7 +89,7 @@ func exportUnsafeUnarmored(ctx client.Context, cmd *cobra.Command, uid string, b cmd.Println(hexPrivKey) return nil } - if err = printDiscreetly(ctx, cmd.ErrOrStderr(), "**Important** Do not share this private key.", hexPrivKey); err != nil { + if err = printDiscreetly(cmd.ErrOrStderr(), "**Important** Do not share this private key.", hexPrivKey); err != nil { return fmt.Errorf("failed to print private key: %w", err) } cmd.Println("Export private key successfully") diff --git a/client/keys/mnemonic.go b/client/keys/mnemonic.go index 245e969432a1..b3e8d99ca216 100644 --- a/client/keys/mnemonic.go +++ b/client/keys/mnemonic.go @@ -8,7 +8,6 @@ import ( "github.com/cosmos/go-bip39" "github.com/spf13/cobra" - "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/input" ) @@ -69,7 +68,7 @@ func MnemonicKeyCommand() *cobra.Command { } indiscreet, _ := cmd.Flags().GetBool(flagIndiscreet) if !indiscreet { - return printDiscreetly(client.GetClientContextFromCmd(cmd), cmd.ErrOrStderr(), "**Important** write this mnemonic phrase in a safe place. Do not share it to anyone.", mnemonic) + return printDiscreetly(cmd.ErrOrStderr(), "**Important** write this mnemonic phrase in a safe place. Do not share it to anyone.", mnemonic) } cmd.Println(mnemonic) return nil diff --git a/client/keys/show.go b/client/keys/show.go index 0c418b6ed6f9..9869dd4fecec 100644 --- a/client/keys/show.go +++ b/client/keys/show.go @@ -143,9 +143,7 @@ func runShowCmd(cmd *cobra.Command, args []string) (err error) { qrterminal.GenerateHalfBlock(out, qrterminal.H, cmd.OutOrStdout()) } - if _, err := fmt.Fprintln(cmd.OutOrStdout(), out); err != nil { - return err - } + cmd.Println(out) default: if err := printKeyringRecord(cmd.OutOrStdout(), ko, outputFormat); err != nil { return err diff --git a/client/keys/utils.go b/client/keys/utils.go index 295af8750382..cb092a930be2 100644 --- a/client/keys/utils.go +++ b/client/keys/utils.go @@ -74,7 +74,7 @@ func printTextRecords(w io.Writer, kos []KeyOutput) error { } // printDiscreetly Print a secret string to an alternate screen, so the string isn't printed to the terminal. -func printDiscreetly(clientCtx client.Context, w io.Writer, promptMsg, secretMsg string) error { +func printDiscreetly(w io.Writer, promptMsg, secretMsg string) error { output := termenv.NewOutput(w) output.AltScreen() defer output.ExitAltScreen() diff --git a/tests/go.mod b/tests/go.mod index edb0679af957..237b4a86b6d5 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -54,7 +54,6 @@ require ( github.com/google/go-cmp v0.6.0 github.com/google/gofuzz v1.2.0 github.com/jhump/protoreflect v1.17.0 - github.com/rs/zerolog v1.33.0 github.com/spf13/viper v1.19.0 gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b ) @@ -194,6 +193,7 @@ require ( github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/cors v1.11.1 // indirect + github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect diff --git a/tests/integration/genutil/export_test.go b/tests/integration/genutil/export_test.go deleted file mode 100644 index e583aa59e970..000000000000 --- a/tests/integration/genutil/export_test.go +++ /dev/null @@ -1,354 +0,0 @@ -package genutil - -import ( - "context" - "encoding/json" - "errors" - "io" - "os" - "path/filepath" - "testing" - "time" - - cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1" - cmttypes "github.com/cometbft/cometbft/types" - "github.com/rs/zerolog" - "github.com/spf13/viper" - "github.com/stretchr/testify/require" - - corectx "cosmossdk.io/core/context" - corestore "cosmossdk.io/core/store" - "cosmossdk.io/log" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/testutil/cmdtest" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" -) - -// ExportSystem wraps a (*cmdtest).System -// and sets up appropriate client and server contexts, -// to simplify testing the export CLI. -type ExportSystem struct { - sys *cmdtest.System - - Ctx context.Context - - Viper *viper.Viper - Logger log.Logger - - HomeDir string -} - -// newExportSystem returns a cmdtest.System with export as a child command, -// and it returns a context.Background with an associated *server.Context value. -func NewExportSystem(t *testing.T, exporter types.AppExporter) *ExportSystem { - t.Helper() - - homeDir := t.TempDir() - - // Unclear why we have to create the config directory ourselves, - // but tests fail without this. - if err := os.MkdirAll(filepath.Join(homeDir, "config"), 0o700); err != nil { - t.Fatal(err) - } - - sys := cmdtest.NewSystem() - sys.AddCommands( - cli.ExportCmd(exporter), - cli.InitCmd(module.NewManager()), - ) - - tw := zerolog.NewTestWriter(t) - tw.Frame = 5 // Seems to be the magic number to get source location to match logger calls. - - viper := viper.New() - logger := log.NewCustomLogger(zerolog.New(tw)) - err := writeAndTrackDefaultConfig(viper, homeDir) - if err != nil { - t.Fatal(err) - } - - cCtx := (client.Context{}).WithHomeDir(homeDir) - - ctx := context.WithValue(context.Background(), corectx.ViperContextKey, viper) - ctx = context.WithValue(ctx, corectx.LoggerContextKey, logger) - - ctx = context.WithValue(ctx, client.ClientContextKey, &cCtx) - - return &ExportSystem{ - sys: sys, - Ctx: ctx, - Viper: viper, - Logger: logger, - HomeDir: homeDir, - } -} - -// Run wraps (*cmdtest.System).RunC, providing e's context. -func (s *ExportSystem) Run(args ...string) cmdtest.RunResult { - return s.sys.RunC(s.Ctx, args...) -} - -// MustRun wraps (*cmdtest.System).MustRunC, providing e's context. -func (s *ExportSystem) MustRun(t *testing.T, args ...string) cmdtest.RunResult { - t.Helper() - return s.sys.MustRunC(t, s.Ctx, args...) -} - -// isZeroExportedApp reports whether all fields of a are unset. -// -// This is for the mockExporter to check if a return value was ever set. -func isZeroExportedApp(a types.ExportedApp) bool { - return a.AppState == nil && - len(a.Validators) == 0 && - a.Height == 0 && - a.ConsensusParams == cmtproto.ConsensusParams{} -} - -// mockExporter provides an Export method matching server/types.AppExporter, -// and it tracks relevant arguments when that method is called. -type mockExporter struct { - // The values to return from Export(). - ExportApp types.ExportedApp - Err error - - // Whether Export was called at all. - WasCalled bool - - // Called tracks the interesting arguments passed to Export(). - Called struct { - Height int64 - ForZeroHeight bool - JailAllowedAddrs []string - ModulesToExport []string - } -} - -// SetDefaultExportApp sets a valid ExportedApp to be returned -// when e.Export is called. -func (e *mockExporter) SetDefaultExportApp() { - e.ExportApp = types.ExportedApp{ - ConsensusParams: cmtproto.ConsensusParams{ - Block: &cmtproto.BlockParams{ - MaxBytes: 5 * 1024 * 1024, - MaxGas: -1, - }, - Evidence: &cmtproto.EvidenceParams{ - MaxAgeNumBlocks: 100, - MaxAgeDuration: time.Hour, - MaxBytes: 1024 * 1024, - }, - Validator: &cmtproto.ValidatorParams{ - PubKeyTypes: []string{cmttypes.ABCIPubKeyTypeEd25519}, - }, - }, - } -} - -// Export satisfies the server/types.AppExporter function type. -// -// e tracks relevant arguments under the e.Called struct. -// -// Export panics if neither e.ExportApp nor e.Err have been set. -func (e *mockExporter) Export( - logger log.Logger, - db corestore.KVStoreWithBatch, - traceWriter io.Writer, - height int64, - forZeroHeight bool, - jailAllowedAddrs []string, - opts types.AppOptions, - modulesToExport []string, -) (types.ExportedApp, error) { - if e.Err == nil && isZeroExportedApp(e.ExportApp) { - panic(errors.New("(*mockExporter).Export called without setting e.ExportApp or e.Err")) - } - e.WasCalled = true - - e.Called.Height = height - e.Called.ForZeroHeight = forZeroHeight - e.Called.JailAllowedAddrs = jailAllowedAddrs - e.Called.ModulesToExport = modulesToExport - - return e.ExportApp, e.Err -} - -func TestExportCLI(t *testing.T) { - // Use t.Parallel in all of the subtests, - // because they all read from disk and risk blocking on io. - - t.Run("fail on missing genesis file", func(t *testing.T) { - t.Parallel() - - e := new(mockExporter) - sys := NewExportSystem(t, e.Export) - - res := sys.Run("export") - require.Error(t, res.Err) - require.Truef(t, os.IsNotExist(res.Err), "expected resulting error to be os.IsNotExist, got %T (%v)", res.Err, res.Err) - - require.False(t, e.WasCalled) - }) - - t.Run("prints to stdout by default", func(t *testing.T) { - t.Parallel() - - e := new(mockExporter) - e.SetDefaultExportApp() - - sys := NewExportSystem(t, e.Export) - _ = sys.MustRun(t, "init", "some_moniker") - res := sys.MustRun(t, "export") - - require.Empty(t, res.Stderr.String()) - - CheckExportedGenesis(t, res.Stdout.Bytes()) - }) - - t.Run("passes expected default values to the AppExporter", func(t *testing.T) { - t.Parallel() - - e := new(mockExporter) - e.SetDefaultExportApp() - - sys := NewExportSystem(t, e.Export) - _ = sys.MustRun(t, "init", "some_moniker") - _ = sys.MustRun(t, "export") - - require.True(t, e.WasCalled) - - require.Equal(t, int64(-1), e.Called.Height) - require.False(t, e.Called.ForZeroHeight) - require.Empty(t, e.Called.JailAllowedAddrs) - require.Empty(t, e.Called.ModulesToExport) - }) - - t.Run("passes flag values to the AppExporter", func(t *testing.T) { - t.Parallel() - - e := new(mockExporter) - e.SetDefaultExportApp() - - sys := NewExportSystem(t, e.Export) - _ = sys.MustRun(t, "init", "some_moniker") - _ = sys.MustRun(t, "export", - "--height=100", - "--jail-allowed-addrs", "addr1,addr2", - "--modules-to-export", "foo,bar", - ) - - require.True(t, e.WasCalled) - - require.Equal(t, int64(100), e.Called.Height) - require.False(t, e.Called.ForZeroHeight) - require.Equal(t, []string{"addr1", "addr2"}, e.Called.JailAllowedAddrs) - require.Equal(t, []string{"foo", "bar"}, e.Called.ModulesToExport) - }) - - t.Run("passes --for-zero-height to the AppExporter", func(t *testing.T) { - t.Parallel() - - e := new(mockExporter) - e.SetDefaultExportApp() - - sys := NewExportSystem(t, e.Export) - _ = sys.MustRun(t, "init", "some_moniker") - _ = sys.MustRun(t, "export", "--for-zero-height") - - require.True(t, e.WasCalled) - - require.Equal(t, int64(-1), e.Called.Height) - require.True(t, e.Called.ForZeroHeight) - require.Empty(t, e.Called.JailAllowedAddrs) - require.Empty(t, e.Called.ModulesToExport) - }) - - t.Run("prints to a given file with --output-document", func(t *testing.T) { - t.Parallel() - - e := new(mockExporter) - e.SetDefaultExportApp() - - sys := NewExportSystem(t, e.Export) - _ = sys.MustRun(t, "init", "some_moniker") - - outDir := t.TempDir() - outFile := filepath.Join(outDir, "export.json") - - res := sys.MustRun(t, "export", "--output-document", outFile) - - require.Empty(t, res.Stderr.String()) - require.Empty(t, res.Stdout.String()) - - j, err := os.ReadFile(outFile) - require.NoError(t, err) - - CheckExportedGenesis(t, j) - }) - - t.Run("prints genesis to stdout when no app exporter defined", func(t *testing.T) { - t.Parallel() - - sys := NewExportSystem(t, nil) - _ = sys.MustRun(t, "init", "some_moniker") - - res := sys.MustRun(t, "export") - - require.Contains(t, res.Stderr.String(), "WARNING: App exporter not defined.") - - origGenesis, err := os.ReadFile(filepath.Join(sys.HomeDir, "config", "genesis.json")) - require.NoError(t, err) - - out := res.Stdout.Bytes() - - require.Equal(t, origGenesis, out) - }) - - t.Run("returns app exporter error", func(t *testing.T) { - t.Parallel() - - e := new(mockExporter) - e.Err = errors.New("whoopsie") - - sys := NewExportSystem(t, e.Export) - _ = sys.MustRun(t, "init", "some_moniker") - - res := sys.Run("export") - - require.ErrorIs(t, res.Err, e.Err) - }) - - t.Run("rejects positional arguments", func(t *testing.T) { - t.Parallel() - - e := new(mockExporter) - e.SetDefaultExportApp() - - sys := NewExportSystem(t, e.Export) - _ = sys.MustRun(t, "init", "some_moniker") - - outDir := t.TempDir() - outFile := filepath.Join(outDir, "export.json") - - res := sys.Run("export", outFile) - require.Error(t, res.Err) - - require.NoFileExists(t, outFile) - }) -} - -// CheckExportedGenesis fails t if j cannot be unmarshaled into a valid AppGenesis. -func CheckExportedGenesis(t *testing.T, j []byte) { - t.Helper() - - var ag genutiltypes.AppGenesis - require.NoError(t, json.Unmarshal(j, &ag)) - - require.NotEmpty(t, ag.AppName) - require.NotZero(t, ag.GenesisTime) - require.NotEmpty(t, ag.ChainID) - require.NotNil(t, ag.Consensus) -} diff --git a/testutil/cmdtest/system.go b/testutil/cmdtest/system.go deleted file mode 100644 index 1b02b0a365a3..000000000000 --- a/testutil/cmdtest/system.go +++ /dev/null @@ -1,120 +0,0 @@ -// Package cmdtest contains a framework for testing cobra Commands within Go unit tests. -package cmdtest - -import ( - "bytes" - "context" - "io" - - "github.com/spf13/cobra" -) - -// System is a system under test. -type System struct { - commands []*cobra.Command -} - -// NewSystem returns a new System. -func NewSystem() *System { - // We aren't doing any special initialization yet, - // but let's encourage a constructor to make it simpler - // to update later, if needed. - return new(System) -} - -// AddCommands sets commands to be available to the Run family of methods on s. -func (s *System) AddCommands(cmds ...*cobra.Command) { - s.commands = append(s.commands, cmds...) -} - -// RunResult is the stdout and stderr resulting from a call to a System's Run family of methods, -// and any error that was returned. -type RunResult struct { - Stdout, Stderr bytes.Buffer - - Err error -} - -// Run calls s.RunC with context.Background(). -func (s *System) Run(args ...string) RunResult { - return s.RunC(context.Background(), args...) -} - -// RunC calls s.RunWithInput with an empty stdin. -func (s *System) RunC(ctx context.Context, args ...string) RunResult { - return s.RunWithInputC(ctx, bytes.NewReader(nil), args...) -} - -// RunWithInput calls s.RunWithInputC with context.Background(). -func (s *System) RunWithInput(in io.Reader, args ...string) RunResult { - return s.RunWithInputC(context.Background(), in, args...) -} - -// RunWithInputC executes a new root command with subcommands -// that were set in s.AddCommands(). -// The command's stdin is set to the in argument. -// RunWithInputC returns a RunResult wrapping stdout, stderr, and any returned error. -func (s *System) RunWithInputC(ctx context.Context, in io.Reader, args ...string) RunResult { - rootCmd := &cobra.Command{} - rootCmd.AddCommand(s.commands...) - - rootCmd.SetIn(in) - - var res RunResult - rootCmd.SetOutput(&res.Stdout) - rootCmd.SetErr(&res.Stderr) - - rootCmd.SetArgs(args) - - res.Err = rootCmd.ExecuteContext(ctx) - return res -} - -// MustRun calls s.Run, but also calls t.FailNow if RunResult.Err is not nil. -func (s *System) MustRun(t TestingT, args ...string) RunResult { - t.Helper() - - return s.MustRunC(t, context.Background(), args...) -} - -// MustRunC calls s.RunWithInput, but also calls t.FailNow if RunResult.Err is not nil. -func (s *System) MustRunC(t TestingT, ctx context.Context, args ...string) RunResult { - t.Helper() - - return s.MustRunWithInputC(t, ctx, bytes.NewReader(nil), args...) -} - -// MustRunWithInput calls s.RunWithInput, but also calls t.FailNow if RunResult.Err is not nil. -func (s *System) MustRunWithInput(t TestingT, in io.Reader, args ...string) RunResult { - t.Helper() - - return s.MustRunWithInputC(t, context.Background(), in, args...) -} - -// MustRunWithInputC calls s.RunWithInputC, but also calls t.FailNow if RunResult.Err is not nil. -func (s *System) MustRunWithInputC(t TestingT, ctx context.Context, in io.Reader, args ...string) RunResult { - t.Helper() - - res := s.RunWithInputC(ctx, in, args...) - if res.Err != nil { - t.Logf("Error executing %v: %v", args, res.Err) - t.Logf("Stdout: %q", res.Stdout.String()) - t.Logf("Stderr: %q", res.Stderr.String()) - t.FailNow() - } - - return res -} - -// TestingT is a subset of testing.TB, -// containing only what the (*System).Must methods use. -// -// This simplifies using other testing wrappers, -// such as testify suite, etc. -type TestingT interface { - Helper() - - Logf(format string, args ...any) - - FailNow() -} diff --git a/version/command.go b/version/command.go index d52a69668685..9514548f7a8a 100644 --- a/version/command.go +++ b/version/command.go @@ -2,7 +2,6 @@ package version import ( "encoding/json" - "fmt" "strings" "github.com/spf13/cobra" @@ -29,7 +28,7 @@ func NewVersionCommand() *cobra.Command { verInfo := NewInfo() if long, _ := cmd.Flags().GetBool(flagLong); !long { - fmt.Fprintln(cmd.OutOrStdout(), verInfo.Version) + cmd.Println(verInfo.Version) return nil } @@ -54,7 +53,7 @@ func NewVersionCommand() *cobra.Command { return err } - fmt.Fprintln(cmd.OutOrStdout(), string(bz)) + cmd.Println(string(bz)) return nil }, } diff --git a/version/version_test.go b/version/version_test.go index 48b4428bda0d..db32c6267fe8 100644 --- a/version/version_test.go +++ b/version/version_test.go @@ -5,14 +5,12 @@ import ( "encoding/json" "fmt" "runtime" - "strings" "testing" "github.com/stretchr/testify/require" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/testutil" - "github.com/cosmos/cosmos-sdk/testutil/cmdtest" "github.com/cosmos/cosmos-sdk/version" ) @@ -42,103 +40,6 @@ go version go1.14 linux/amd64` require.Equal(t, want, info.String()) } -func TestCLI(t *testing.T) { - setVersionPackageVars(t) - - sys := cmdtest.NewSystem() - sys.AddCommands(version.NewVersionCommand()) - - t.Run("no flags", func(t *testing.T) { - res := sys.MustRun(t, "version") - - // Only prints the version, with a newline, to stdout. - require.Equal(t, testVersion+"\n", res.Stdout.String()) - require.Empty(t, res.Stderr.String()) - }) - - t.Run("--long flag", func(t *testing.T) { - res := sys.MustRun(t, "version", "--long") - - out := res.Stdout.String() - lines := strings.Split(out, "\n") - require.Contains(t, lines, "name: testchain-app") - require.Contains(t, lines, "server_name: testchaind") - require.Contains(t, lines, `version: "3.14"`) - require.Contains(t, lines, "commit: abc123") - require.Contains(t, lines, "build_tags: mybuildtag") - - require.Empty(t, res.Stderr.String()) - }) - - t.Run("--output=json flag", func(t *testing.T) { - res := sys.MustRun(t, "version", "--output=json") - - var info version.Info - require.NoError(t, json.Unmarshal(res.Stdout.Bytes(), &info)) - - // Assert against a couple fields that are difficult to predict in test - // without copying and pasting code. - require.NotEmpty(t, info.GoVersion) - - // The SDK version appears to not be set during this test, so we'll ignore it here. - - // Now clear out the non-empty fields, so we can compare against a fixed value. - info.GoVersion = "" - - want := version.Info{ - Name: testName, - AppName: testAppName, - Version: testVersion, - GitCommit: testCommit, - BuildTags: testBuildTags, - } - require.Equal(t, want, info) - - require.Empty(t, res.Stderr.String()) - }) - - t.Run("positional args rejected", func(t *testing.T) { - res := sys.Run("version", "foo") - require.Error(t, res.Err) - }) -} - -const ( - testName = "testchain-app" - testAppName = "testchaind" - testVersion = "3.14" - testCommit = "abc123" - testBuildTags = "mybuildtag" -) - -// setVersionPackageVars temporarily overrides the package variables in the version package -// so that we can assert meaningful output. -func setVersionPackageVars(t *testing.T) { - t.Helper() - - var ( - origName = version.Name - origAppName = version.AppName - origVersion = version.Version - origCommit = version.Commit - origBuildTags = version.BuildTags - ) - - t.Cleanup(func() { - version.Name = origName - version.AppName = origAppName - version.Version = origVersion - version.Commit = origCommit - version.BuildTags = origBuildTags - }) - - version.Name = testName - version.AppName = testAppName - version.Version = testVersion - version.Commit = testCommit - version.BuildTags = testBuildTags -} - func Test_runVersionCmd(t *testing.T) { cmd := version.NewVersionCommand() _, mockOut := testutil.ApplyMockIO(cmd) From cef0f8497fe274c1dfab55762aa0c1591e733e76 Mon Sep 17 00:00:00 2001 From: Akhil Kumar P <36399231+akhilkumarpilli@users.noreply.github.com> Date: Wed, 11 Dec 2024 17:21:39 +0530 Subject: [PATCH 42/62] refactor!: remove testutil/network (#22392) Co-authored-by: Julien Robert --- CHANGELOG.md | 1 + client/grpc/cmtservice/status_test.go | 34 - server/grpc/server.go | 4 +- simapp/simd/cmd/testnet.go | 292 ++++-- simapp/test_helpers.go | 39 - simapp/testutil_network_test.go | 43 - .../auth/keeper/account_retriever_test.go | 73 +- tests/integration/auth/keeper/fixture_test.go | 19 +- tests/integration/distribution/cli_tx_test.go | 19 - tests/integration/genutil/init_test.go | 22 +- .../server/grpc/out_of_gas_test.go | 100 --- tests/integration/server/grpc/server_test.go | 291 ------ tests/integration/server/grpc_test.go | 321 +++++++ .../tx/benchmark/benchmarks_test.go | 191 ---- tests/systemtests/cometbft_client_test.go | 11 + testutil/cli/tx.go | 63 -- testutil/network/doc.go | 66 -- testutil/network/interface.go | 48 - testutil/network/network.go | 847 ------------------ testutil/network/util.go | 269 ------ testutil/network/validator.go | 91 -- 21 files changed, 654 insertions(+), 2190 deletions(-) delete mode 100644 client/grpc/cmtservice/status_test.go delete mode 100644 simapp/testutil_network_test.go delete mode 100644 tests/integration/server/grpc/out_of_gas_test.go delete mode 100644 tests/integration/server/grpc/server_test.go create mode 100644 tests/integration/server/grpc_test.go delete mode 100644 tests/integration/tx/benchmark/benchmarks_test.go delete mode 100644 testutil/cli/tx.go delete mode 100644 testutil/network/doc.go delete mode 100644 testutil/network/interface.go delete mode 100644 testutil/network/network.go delete mode 100644 testutil/network/util.go delete mode 100644 testutil/network/validator.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d8fdac92ef0..09bef4b4a38e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i ### API Breaking Changes +* (testutil) [#22392](https://github.com/cosmos/cosmos-sdk/pull/22392) Remove `testutil/network` package. Use the integration framework or systemtests framework instead. * (client) [#22775](https://github.com/cosmos/cosmos-sdk/pull/22775) Removed client prompt validations. ### Deprecated diff --git a/client/grpc/cmtservice/status_test.go b/client/grpc/cmtservice/status_test.go deleted file mode 100644 index d7bfa6bdc192..000000000000 --- a/client/grpc/cmtservice/status_test.go +++ /dev/null @@ -1,34 +0,0 @@ -package cmtservice_test - -import ( - "fmt" - "testing" - - "github.com/stretchr/testify/require" - - "cosmossdk.io/depinject" - - "github.com/cosmos/cosmos-sdk/server" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/cosmos/cosmos-sdk/testutil/network" -) - -func TestStatusCommand(t *testing.T) { - t.Skip() // Rewrite as system test - - cfg, err := network.DefaultConfigWithAppConfig(depinject.Configs() /* TODO, test skipped anyway */) - require.NoError(t, err) - - network, err := network.New(t, t.TempDir(), cfg) - require.NoError(t, err) - require.NoError(t, network.WaitForNextBlock()) - - val0 := network.GetValidators()[0] - cmd := server.StatusCommand() - - out, err := clitestutil.ExecTestCLICmd(val0.GetClientCtx(), cmd, []string{}) - require.NoError(t, err) - - // Make sure the output has the validator moniker. - require.Contains(t, out.String(), fmt.Sprintf("\"moniker\":\"%s\"", val0.GetMoniker())) -} diff --git a/server/grpc/server.go b/server/grpc/server.go index f04b7cd20e5b..ae4c376191d2 100644 --- a/server/grpc/server.go +++ b/server/grpc/server.go @@ -5,6 +5,7 @@ import ( "fmt" "net" + gogogrpcserver "github.com/cosmos/gogoproto/grpc" "google.golang.org/grpc" "cosmossdk.io/log" @@ -14,13 +15,12 @@ import ( "github.com/cosmos/cosmos-sdk/server/config" "github.com/cosmos/cosmos-sdk/server/grpc/gogoreflection" reflection "github.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1" - "github.com/cosmos/cosmos-sdk/server/types" _ "github.com/cosmos/cosmos-sdk/types/tx/amino" // Import amino.proto file for reflection ) // NewGRPCServer returns a correctly configured and initialized gRPC server. // Note, the caller is responsible for starting the server. See StartGRPCServer. -func NewGRPCServer(clientCtx client.Context, app types.Application, cfg config.GRPCConfig) (*grpc.Server, error) { +func NewGRPCServer(clientCtx client.Context, app interface{ RegisterGRPCServer(gogogrpcserver.Server) }, cfg config.GRPCConfig) (*grpc.Server, error) { maxSendMsgSize := cfg.MaxSendMsgSize if maxSendMsgSize == 0 { maxSendMsgSize = config.DefaultGRPCMaxSendMsgSize diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index e060976d1376..3a432efd4966 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -4,9 +4,15 @@ import ( "bufio" "encoding/json" "fmt" + "io" "net" + "net/url" "os" + "os/exec" + "os/signal" "path/filepath" + "strconv" + "strings" "time" cmtconfig "github.com/cometbft/cometbft/config" @@ -16,7 +22,6 @@ import ( "cosmossdk.io/math" "cosmossdk.io/math/unsafe" - "cosmossdk.io/simapp" banktypes "cosmossdk.io/x/bank/types" stakingtypes "cosmossdk.io/x/staking/types" @@ -29,7 +34,6 @@ import ( "github.com/cosmos/cosmos-sdk/server" srvconfig "github.com/cosmos/cosmos-sdk/server/config" "github.com/cosmos/cosmos-sdk/testutil" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/version" @@ -53,6 +57,15 @@ var ( flagStakingDenom = "staking-denom" flagCommitTimeout = "commit-timeout" flagSingleHost = "single-host" + + // default values + defaultRPCPort = 26657 + defaultAPIPort = 1317 + defaultGRPCPort = 9090 + defaultListenIPAddress = "127.0.0.1" + defaultStartingIPAddress = "192.168.0.1" + defaultNodeDirPrefix = "node" + defaultNodeDaemonHome = "simd" ) type initArgs struct { @@ -68,20 +81,15 @@ type initArgs struct { listenIPAddress string singleMachine bool bondTokenDenom string -} -type startArgs struct { - algo string - apiAddress string - chainID string - enableLogging bool - grpcAddress string - minGasPrices string - numValidators int - outputDir string - printMnemonic bool - rpcAddress string - timeoutCommit time.Duration + // start command arguments + apiListenAddress string + grpcListenAddress string + rpcPort int + apiPort int + grpcPort int + enableLogging bool + printMnemonic bool } func addTestnetFlagsToCmd(cmd *cobra.Command) { @@ -112,7 +120,7 @@ func NewTestnetCmd(mm *module.Manager) *cobra.Command { RunE: client.ValidateCmd, } - testnetCmd.AddCommand(testnetStartCmd()) + testnetCmd.AddCommand(testnetStartCmd(mm)) testnetCmd.AddCommand(testnetInitFilesCmd(mm)) return testnetCmd @@ -142,7 +150,13 @@ Example: config := client.GetConfigFromCmd(cmd) - args := initArgs{} + args := initArgs{ + rpcPort: defaultRPCPort, + apiPort: defaultAPIPort, + grpcPort: defaultGRPCPort, + apiListenAddress: defaultListenIPAddress, + grpcListenAddress: defaultListenIPAddress, + } args.outputDir, _ = cmd.Flags().GetString(flagOutputDir) args.keyringBackend, _ = cmd.Flags().GetString(flags.FlagKeyringBackend) args.chainID, _ = cmd.Flags().GetString(flags.FlagChainID) @@ -160,15 +174,19 @@ Example: return err } + if args.chainID == "" { + args.chainID = "chain-" + unsafe.Str(6) + } + return initTestnetFiles(clientCtx, cmd, config, mm, args) }, } addTestnetFlagsToCmd(cmd) - cmd.Flags().String(flagNodeDirPrefix, "node", "Prefix for the name of per-validator subdirectories (to be number-suffixed like node0, node1, ...)") - cmd.Flags().String(flagNodeDaemonHome, "simd", "Home directory of the node's daemon configuration") - cmd.Flags().String(flagStartingIPAddress, "192.168.0.1", "Starting IP address (192.168.0.1 results in persistent peers list ID0@192.168.0.1:46656, ID1@192.168.0.2:46656, ...)") - cmd.Flags().String(flagListenIPAddress, "127.0.0.1", "TCP or UNIX socket IP address for the RPC server to listen on") + cmd.Flags().String(flagNodeDirPrefix, defaultNodeDirPrefix, "Prefix for the name of per-validator subdirectories (to be number-suffixed like node0, node1, ...)") + cmd.Flags().String(flagNodeDaemonHome, defaultNodeDaemonHome, "Home directory of the node's daemon configuration") + cmd.Flags().String(flagStartingIPAddress, defaultStartingIPAddress, "Starting IP address (192.168.0.1 results in persistent peers list ID0@192.168.0.1:46656, ID1@192.168.0.2:46656, ...)") + cmd.Flags().String(flagListenIPAddress, defaultListenIPAddress, "TCP or UNIX socket IP address for the RPC server to listen on") cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|test)") cmd.Flags().Duration(flagCommitTimeout, 5*time.Second, "Time to wait after a block commit before starting on the new height") cmd.Flags().Bool(flagSingleHost, false, "Cluster runs on a single host machine with different ports") @@ -178,7 +196,7 @@ Example: } // testnetStartCmd returns a cmd to start multi validator in-process testnet -func testnetStartCmd() *cobra.Command { +func testnetStartCmd(mm *module.Manager) *cobra.Command { cmd := &cobra.Command{ Use: "start", Short: "Launch an in-process multi-validator testnet", @@ -190,19 +208,56 @@ Example: %s testnet --validator-count4 --output-dir ./.testnets `, version.AppName), RunE: func(cmd *cobra.Command, _ []string) (err error) { - args := startArgs{} + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + config := client.GetConfigFromCmd(cmd) + + args := initArgs{ + singleMachine: true, + bondTokenDenom: sdk.DefaultBondDenom, + nodeDaemonHome: defaultNodeDaemonHome, + nodeDirPrefix: defaultNodeDirPrefix, + keyringBackend: keyring.BackendTest, + } args.outputDir, _ = cmd.Flags().GetString(flagOutputDir) args.chainID, _ = cmd.Flags().GetString(flags.FlagChainID) args.minGasPrices, _ = cmd.Flags().GetString(server.FlagMinGasPrices) args.numValidators, _ = cmd.Flags().GetInt(flagNumValidators) args.algo, _ = cmd.Flags().GetString(flags.FlagKeyType) args.enableLogging, _ = cmd.Flags().GetBool(flagEnableLogging) - args.rpcAddress, _ = cmd.Flags().GetString(flagRPCAddress) - args.apiAddress, _ = cmd.Flags().GetString(flagAPIAddress) - args.grpcAddress, _ = cmd.Flags().GetString(flagGRPCAddress) + + rpcAddress, _ := cmd.Flags().GetString(flagRPCAddress) + args.listenIPAddress, args.rpcPort, err = parseURL(rpcAddress) + if err != nil { + return fmt.Errorf("invalid rpc address: %w", err) + } + + apiAddress, _ := cmd.Flags().GetString(flagAPIAddress) + args.apiListenAddress, args.apiPort, err = parseURL(apiAddress) + if err != nil { + return fmt.Errorf("invalid api address: %w", err) + } + + grpcAddress, _ := cmd.Flags().GetString(flagGRPCAddress) + // add scheme to avoid issues with parsing + if !strings.Contains(grpcAddress, "://") { + grpcAddress = "tcp://" + grpcAddress + } + args.grpcListenAddress, args.grpcPort, err = parseURL(grpcAddress) + if err != nil { + return fmt.Errorf("invalid grpc address: %w", err) + } + args.printMnemonic, _ = cmd.Flags().GetBool(flagPrintMnemonic) - return startTestnet(cmd, args) + if args.chainID == "" { + args.chainID = "chain-" + unsafe.Str(6) + } + + return startTestnet(clientCtx, cmd, config, mm, args) }, } @@ -215,6 +270,18 @@ Example: return cmd } +func parseURL(str string) (host string, port int, err error) { + u, err := url.Parse(str) + if err != nil { + return + } + + host = u.Hostname() + + port, err = strconv.Atoi(u.Port()) + return +} + const nodeDirPerm = 0o755 // initTestnetFiles initializes testnet files for a testnet to be run in a separate process @@ -225,15 +292,13 @@ func initTestnetFiles( mm *module.Manager, args initArgs, ) error { - if args.chainID == "" { - args.chainID = "chain-" + unsafe.Str(6) - } nodeIDs := make([]string, args.numValidators) valPubKeys := make([]cryptotypes.PubKey, args.numValidators) appConfig := srvconfig.DefaultConfig() appConfig.MinGasPrices = args.minGasPrices appConfig.API.Enable = true + appConfig.GRPC.Enable = true appConfig.Telemetry.Enabled = true appConfig.Telemetry.PrometheusRetentionTime = 60 appConfig.Telemetry.EnableHostnameLabel = false @@ -244,10 +309,10 @@ func initTestnetFiles( genBalances []banktypes.Balance genFiles []string ) - const ( - rpcPort = 26657 - apiPort = 1317 - grpcPort = 9090 + var ( + rpcPort = args.rpcPort + apiPort = args.apiPort + grpcPort = args.grpcPort ) p2pPortStart := 26656 @@ -261,12 +326,11 @@ func initTestnetFiles( nodeConfig.P2P.AddrBookStrict = false nodeConfig.P2P.PexReactor = false nodeConfig.P2P.AllowDuplicateIP = true - appConfig.API.Address = fmt.Sprintf("tcp://127.0.0.1:%d", apiPort+portOffset) - appConfig.GRPC.Address = fmt.Sprintf("127.0.0.1:%d", grpcPort+portOffset) + appConfig.API.Address = fmt.Sprintf("tcp://%s:%d", args.apiListenAddress, apiPort+portOffset) + appConfig.GRPC.Address = fmt.Sprintf("%s:%d", args.grpcListenAddress, grpcPort+portOffset) } - nodeDirName := fmt.Sprintf("%s%d", args.nodeDirPrefix, i) - nodeDir := filepath.Join(args.outputDir, nodeDirName, args.nodeDaemonHome) + nodeDirName, nodeDir := getNodeDir(args, i) gentxsDir := filepath.Join(args.outputDir, "gentxs") nodeConfig.SetRoot(nodeDir) @@ -317,6 +381,12 @@ func initTestnetFiles( return err } + // if PrintMnemonic is set to true, we print the first validator node's secret to the network's logger + // for debugging and manual testing + if args.printMnemonic && i == 0 { + printMnemonic(secret) + } + info := map[string]string{"secret": secret} cliPrint, err := json.Marshal(info) @@ -552,46 +622,132 @@ func writeFile(name, dir string, contents []byte) error { return os.WriteFile(file, contents, 0o600) } -// startTestnet starts an in-process testnet -func startTestnet(cmd *cobra.Command, args startArgs) error { - networkConfig := network.DefaultConfig(simapp.NewTestNetworkFixture) +// printMnemonic prints a provided mnemonic seed phrase on a network logger +// for debugging and manual testing +func printMnemonic(secret string) { + lines := []string{ + "THIS MNEMONIC IS FOR TESTING PURPOSES ONLY", + "DO NOT USE IN PRODUCTION", + "", + strings.Join(strings.Fields(secret)[0:8], " "), + strings.Join(strings.Fields(secret)[8:16], " "), + strings.Join(strings.Fields(secret)[16:24], " "), + } - // Default networkConfig.ChainID is random, and we should only override it if chainID provided - // is non-empty - if args.chainID != "" { - networkConfig.ChainID = args.chainID + lineLengths := make([]int, len(lines)) + for i, line := range lines { + lineLengths[i] = len(line) } - networkConfig.SigningAlgo = args.algo - networkConfig.MinGasPrices = args.minGasPrices - networkConfig.NumValidators = args.numValidators - networkConfig.EnableLogging = args.enableLogging - networkConfig.RPCAddress = args.rpcAddress - networkConfig.APIAddress = args.apiAddress - networkConfig.GRPCAddress = args.grpcAddress - networkConfig.PrintMnemonic = args.printMnemonic - networkConfig.TimeoutCommit = args.timeoutCommit - networkLogger := network.NewCLILogger(cmd) - - baseDir := fmt.Sprintf("%s/%s", args.outputDir, networkConfig.ChainID) - if _, err := os.Stat(baseDir); !os.IsNotExist(err) { - return fmt.Errorf( - "testnests directory already exists for chain-id '%s': %s, please remove or select a new --chain-id", - networkConfig.ChainID, baseDir) + + maxLineLength := 0 + for _, lineLen := range lineLengths { + if lineLen > maxLineLength { + maxLineLength = lineLen + } } - testnet, err := network.New(networkLogger, baseDir, networkConfig) + fmt.Printf("\n\n") + fmt.Println(strings.Repeat("+", maxLineLength+8)) + for _, line := range lines { + fmt.Printf("++ %s ++\n", centerText(line, maxLineLength)) + } + fmt.Println(strings.Repeat("+", maxLineLength+8)) + fmt.Printf("\n\n") +} + +// centerText centers text across a fixed width, filling either side with whitespace buffers +func centerText(text string, width int) string { + textLen := len(text) + leftBuffer := strings.Repeat(" ", (width-textLen)/2) + rightBuffer := strings.Repeat(" ", (width-textLen)/2+(width-textLen)%2) + + return fmt.Sprintf("%s%s%s", leftBuffer, text, rightBuffer) +} + +func getNodeDir(args initArgs, nodeID int) (nodeDirName, nodeDir string) { + nodeDirName = fmt.Sprintf("%s%d", args.nodeDirPrefix, nodeID) + nodeDir = filepath.Join(args.outputDir, nodeDirName, args.nodeDaemonHome) + return +} + +// startTestnet starts an in-process testnet +func startTestnet( + clientCtx client.Context, + cmd *cobra.Command, + nodeConfig *cmtconfig.Config, + mm *module.Manager, + args initArgs, +) error { + fmt.Printf(`Preparing test network with chain-id "%s"`, args.chainID) + + args.outputDir = fmt.Sprintf("%s/%s", args.outputDir, args.chainID) + err := initTestnetFiles(clientCtx, cmd, nodeConfig, mm, args) if err != nil { return err } - if _, err := testnet.WaitForHeight(1); err != nil { - return err + // slice to keep track of validator processes + var processes []*exec.Cmd + + // channel to signal shutdown + shutdownCh := make(chan struct{}) + + fmt.Println("Starting test network...") + // Start each validator in a separate process + for i := 0; i < args.numValidators; i++ { + _, nodeDir := getNodeDir(args, i) + + // run start command + cmdArgs := []string{"start", fmt.Sprintf("--%s=%s", flags.FlagHome, nodeDir)} + runCmd := exec.Command(os.Args[0], cmdArgs...) // spawn new process + + // Set stdout and stderr based on enableLogging flag + if args.enableLogging { + runCmd.Stdout = os.Stdout + runCmd.Stderr = os.Stderr + } else { + runCmd.Stdout = io.Discard // discard output when logging is disabled + runCmd.Stderr = io.Discard + } + + if err := runCmd.Start(); err != nil { + return fmt.Errorf("failed to start validator %d: %w", i, err) + } + fmt.Printf("Started Validator %d\n", i+1) + processes = append(processes, runCmd) // add to processes slice } - cmd.Println("press the Enter Key to terminate") - if _, err := fmt.Scanln(); err != nil { // wait for Enter Key - return err + + // goroutine to listen for Enter key press + go func() { + fmt.Println("Press the Enter Key to terminate all validator processes") + if _, err := fmt.Scanln(); err == nil { + close(shutdownCh) // Signal shutdown + } + }() + + // goroutine to listen for Ctrl+C (SIGINT) + sigCh := make(chan os.Signal, 1) + signal.Notify(sigCh, os.Interrupt) + go func() { + <-sigCh // Wait for Ctrl+C + fmt.Println("\nCtrl+C detected, terminating validator processes...") + close(shutdownCh) // Signal shutdown + }() + + // block until shutdown signal is received + <-shutdownCh + + // terminate all validator processes + fmt.Println("Shutting down validator processes...") + for i, p := range processes { + if err := p.Process.Kill(); err != nil { + fmt.Printf("Failed to terminate validator %d process: %v\n", i+1, err) + } else { + fmt.Printf("Validator %d terminated\n", i+1) + } } - testnet.Cleanup() + _ = os.RemoveAll(args.outputDir) // Clean up the output directory + fmt.Println("Finished cleaning up test network") return nil } diff --git a/simapp/test_helpers.go b/simapp/test_helpers.go index 7d3c5131466b..aceebaf59b7b 100644 --- a/simapp/test_helpers.go +++ b/simapp/test_helpers.go @@ -2,8 +2,6 @@ package simapp import ( "encoding/json" - "fmt" - "os" "testing" abci "github.com/cometbft/cometbft/api/cometbft/abci/v1" @@ -15,21 +13,16 @@ import ( coretesting "cosmossdk.io/core/testing" "cosmossdk.io/log" sdkmath "cosmossdk.io/math" - pruningtypes "cosmossdk.io/store/pruning/types" banktypes "cosmossdk.io/x/bank/types" minttypes "cosmossdk.io/x/mint/types" - bam "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" "github.com/cosmos/cosmos-sdk/server" servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/testutil/mock" - "github.com/cosmos/cosmos-sdk/testutil/network" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module/testutil" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) @@ -226,35 +219,3 @@ func initAccountWithCoins(app *SimApp, ctx sdk.Context, addr sdk.AccAddress, coi panic(err) } } - -// NewTestNetworkFixture returns a new simapp AppConstructor for network simulation tests -func NewTestNetworkFixture() network.TestFixture { - dir, err := os.MkdirTemp("", "simapp") - if err != nil { - panic(fmt.Sprintf("failed creating temporary directory: %v", err)) - } - defer os.RemoveAll(dir) - - app := NewSimApp(log.NewNopLogger(), coretesting.NewMemDB(), nil, true, simtestutil.NewAppOptionsWithFlagHome(dir)) - - appCtr := func(val network.ValidatorI) servertypes.Application { - return NewSimApp( - val.GetLogger(), coretesting.NewMemDB(), nil, true, - simtestutil.NewAppOptionsWithFlagHome(client.GetConfigFromViper(val.GetViper()).RootDir), - bam.SetPruning(pruningtypes.NewPruningOptionsFromString(val.GetAppConfig().Pruning)), - bam.SetMinGasPrices(val.GetAppConfig().MinGasPrices), - bam.SetChainID(val.GetViper().GetString(flags.FlagChainID)), - ) - } - - return network.TestFixture{ - AppConstructor: appCtr, - GenesisState: app.DefaultGenesis(), - EncodingConfig: testutil.TestEncodingConfig{ - InterfaceRegistry: app.InterfaceRegistry(), - Codec: app.AppCodec(), - TxConfig: app.TxConfig(), - Amino: app.LegacyAmino(), - }, - } -} diff --git a/simapp/testutil_network_test.go b/simapp/testutil_network_test.go deleted file mode 100644 index 6d551b1dfd47..000000000000 --- a/simapp/testutil_network_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package simapp_test - -import ( - "testing" - "time" - - "github.com/stretchr/testify/suite" - - "cosmossdk.io/simapp" - - "github.com/cosmos/cosmos-sdk/testutil/network" -) - -type IntegrationTestSuite struct { - suite.Suite - - network network.NetworkI -} - -func (s *IntegrationTestSuite) SetupSuite() { - s.T().Log("setting up integration test suite") - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), network.DefaultConfig(simapp.NewTestNetworkFixture)) - s.Require().NoError(err) - - h, err := s.network.WaitForHeight(1) - s.Require().NoError(err, "stalled at height %d", h) -} - -func (s *IntegrationTestSuite) TearDownSuite() { - s.T().Log("tearing down integration test suite") - s.network.Cleanup() -} - -func (s *IntegrationTestSuite) TestNetwork_Liveness() { - h, err := s.network.WaitForHeightWithTimeout(10, time.Minute) - s.Require().NoError(err, "expected to reach 10 blocks; got %d", h) -} - -func TestIntegrationTestSuite(t *testing.T) { - suite.Run(t, new(IntegrationTestSuite)) -} diff --git a/tests/integration/auth/keeper/account_retriever_test.go b/tests/integration/auth/keeper/account_retriever_test.go index 68481cdebc5c..823a2ade21a1 100644 --- a/tests/integration/auth/keeper/account_retriever_test.go +++ b/tests/integration/auth/keeper/account_retriever_test.go @@ -1,45 +1,86 @@ package keeper_test import ( + "context" "testing" "github.com/stretchr/testify/require" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" - authTest "github.com/cosmos/cosmos-sdk/tests/integration/auth/keeper" - "github.com/cosmos/cosmos-sdk/testutil/network" + "cosmossdk.io/math" + minttypes "cosmossdk.io/x/mint/types" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + srvconfig "github.com/cosmos/cosmos-sdk/server/config" + servergrpc "github.com/cosmos/cosmos-sdk/server/grpc" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/auth/keeper" "github.com/cosmos/cosmos-sdk/x/auth/types" ) func TestAccountRetriever(t *testing.T) { - cfg, err := network.DefaultConfigWithAppConfig(authTest.AppConfig) - require.NoError(t, err) - cfg.NumValidators = 1 + t.Skip() // TODO: https://github.com/cosmos/cosmos-sdk/issues/22825 - network, err := network.New(t, t.TempDir(), cfg) - require.NoError(t, err) - defer network.Cleanup() + f := initFixture(t, nil) + + grpcSrv := grpc.NewServer(grpc.ForceServerCodec(codec.NewProtoCodec(f.encodingCfg.InterfaceRegistry).GRPCCodec())) + + types.RegisterQueryServer(f.app.GRPCQueryRouter(), keeper.NewQueryServer(f.authKeeper)) + f.app.RegisterGRPCServer(grpcSrv) + + grpcCfg := srvconfig.DefaultConfig().GRPC - _, err = network.WaitForHeight(3) + go func() { + require.NoError(t, servergrpc.StartGRPCServer(context.Background(), f.app.Logger(), grpcCfg, grpcSrv)) + }() + + conn, err := grpc.NewClient( + grpcCfg.Address, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithDefaultCallOptions(grpc.ForceCodec(codec.NewProtoCodec(f.encodingCfg.InterfaceRegistry).GRPCCodec())), + ) require.NoError(t, err) - val := network.GetValidators()[0] - clientCtx := val.GetClientCtx() + defer conn.Close() + + pubkeys := simtestutil.CreateTestPubKeys(1) + addr := sdk.AccAddress(pubkeys[0].Address()) + + newAcc := types.BaseAccount{ + Address: addr.String(), + PubKey: nil, + AccountNumber: 2, + Sequence: 7, + } + + updatedAcc := f.authKeeper.NewAccount(f.ctx, &newAcc) + f.authKeeper.SetAccount(f.ctx, updatedAcc) + + amount := sdk.NewCoins(sdk.NewCoin("stake", math.NewInt(10000))) + require.NoError(t, f.bankKeeper.MintCoins(f.ctx, minttypes.ModuleName, amount)) + require.NoError(t, f.bankKeeper.SendCoinsFromModuleToAccount(f.ctx, minttypes.ModuleName, addr, amount)) + ar := types.AccountRetriever{} - clientCtx = clientCtx.WithHeight(2) + clientCtx := client.Context{}. + WithGRPCClient(conn). + WithAddressPrefix(sdk.Bech32MainPrefix) - acc, err := ar.GetAccount(clientCtx, val.GetAddress()) + acc, err := ar.GetAccount(clientCtx, addr) require.NoError(t, err) require.NotNil(t, acc) - acc, height, err := ar.GetAccountWithHeight(clientCtx, val.GetAddress()) + acc, height, err := ar.GetAccountWithHeight(clientCtx, addr) require.NoError(t, err) require.NotNil(t, acc) require.Equal(t, height, int64(2)) - require.NoError(t, ar.EnsureExists(clientCtx, val.GetAddress())) + require.NoError(t, ar.EnsureExists(clientCtx, addr)) - accNum, accSeq, err := ar.GetAccountNumberSequence(clientCtx, val.GetAddress()) + accNum, accSeq, err := ar.GetAccountNumberSequence(clientCtx, addr) require.NoError(t, err) require.Equal(t, accNum, uint64(0)) require.Equal(t, accSeq, uint64(1)) diff --git a/tests/integration/auth/keeper/fixture_test.go b/tests/integration/auth/keeper/fixture_test.go index d32d1d0787bf..d549bae86cd8 100644 --- a/tests/integration/auth/keeper/fixture_test.go +++ b/tests/integration/auth/keeper/fixture_test.go @@ -3,6 +3,8 @@ package keeper_test import ( "testing" + cmtabcitypes "github.com/cometbft/cometbft/api/cometbft/abci/v1" + "github.com/stretchr/testify/require" "gotest.tools/v3/assert" "cosmossdk.io/core/appmodule" @@ -35,7 +37,9 @@ import ( type fixture struct { app *integration.App - cdc codec.Codec + cdc codec.Codec + ctx sdk.Context + encodingCfg moduletestutil.TestEncodingConfig authKeeper authkeeper.AccountKeeper accountsKeeper accounts.Keeper @@ -126,11 +130,24 @@ func initFixture(t *testing.T, extraAccs map[string]accountstd.Interface) *fixtu banktypes.RegisterMsgServer(router, bankkeeper.NewMsgServerImpl(bankKeeper)) + // commit and finalize block + defer func() { + _, err := integrationApp.Commit() + if err != nil { + panic(err) + } + }() + height := integrationApp.LastBlockHeight() + 1 + _, err = integrationApp.FinalizeBlock(&cmtabcitypes.FinalizeBlockRequest{Height: height, DecidedLastCommit: cmtabcitypes.CommitInfo{Votes: []cmtabcitypes.VoteInfo{{}}}}) + require.NoError(t, err) + return &fixture{ app: integrationApp, cdc: cdc, + ctx: sdk.UnwrapSDKContext(integrationApp.Context()), accountsKeeper: accountsKeeper, authKeeper: authKeeper, bankKeeper: bankKeeper, + encodingCfg: encodingCfg, } } diff --git a/tests/integration/distribution/cli_tx_test.go b/tests/integration/distribution/cli_tx_test.go index 0eb26d978c2f..654feeea48ac 100644 --- a/tests/integration/distribution/cli_tx_test.go +++ b/tests/integration/distribution/cli_tx_test.go @@ -11,7 +11,6 @@ import ( sdkmath "cosmossdk.io/math" "cosmossdk.io/x/distribution/client/cli" - minttypes "cosmossdk.io/x/mint/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" @@ -20,7 +19,6 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/testutil" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" testutilmod "github.com/cosmos/cosmos-sdk/types/module/testutil" ) @@ -61,23 +59,6 @@ func (s *CLITestSuite) SetupSuite() { return s.baseCtx.WithClient(c) } s.clientCtx = ctxGen() - - cfg, err := network.DefaultConfigWithAppConfig(AppConfig) - s.Require().NoError(err) - - genesisState := cfg.GenesisState - var mintData minttypes.GenesisState - s.Require().NoError(cfg.Codec.UnmarshalJSON(genesisState[minttypes.ModuleName], &mintData)) - - inflation := sdkmath.LegacyMustNewDecFromStr("1.0") - mintData.Minter.Inflation = inflation - mintData.Params.InflationMin = inflation - mintData.Params.InflationMax = inflation - - mintDataBz, err := cfg.Codec.MarshalJSON(&mintData) - s.Require().NoError(err) - genesisState[minttypes.ModuleName] = mintDataBz - cfg.GenesisState = genesisState } func (s *CLITestSuite) TestTxWithdrawAllRewardsCmd() { diff --git a/tests/integration/genutil/init_test.go b/tests/integration/genutil/init_test.go index b49dbc6a7458..a1027a56fe1a 100644 --- a/tests/integration/genutil/init_test.go +++ b/tests/integration/genutil/init_test.go @@ -5,6 +5,7 @@ import ( "context" "fmt" "io" + "net" "os" "testing" "time" @@ -27,7 +28,6 @@ import ( servercmtlog "github.com/cosmos/cosmos-sdk/server/log" "github.com/cosmos/cosmos-sdk/server/mock" "github.com/cosmos/cosmos-sdk/testutil" - "github.com/cosmos/cosmos-sdk/testutil/network" genutilhelpers "github.com/cosmos/cosmos-sdk/testutil/x/genutil" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" @@ -220,7 +220,7 @@ func TestStartStandAlone(t *testing.T) { app, err := mock.NewApp(home, logger) require.NoError(t, err) - svrAddr, _, closeFn, err := network.FreeTCPAddr() + svrAddr, _, closeFn, err := freeTCPAddr() require.NoError(t, err) require.NoError(t, closeFn()) @@ -392,3 +392,21 @@ func writeAndTrackDefaultConfig(v *viper.Viper, home string) error { } return genutilhelpers.WriteAndTrackCometConfig(v, home, cfg) } + +// Get a free address for a test CometBFT server +// protocol is either tcp, http, etc +func freeTCPAddr() (addr, port string, closeFn func() error, err error) { + l, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + return "", "", nil, err + } + + closeFn = func() error { + return l.Close() + } + + portI := l.Addr().(*net.TCPAddr).Port + port = fmt.Sprintf("%d", portI) + addr = fmt.Sprintf("tcp://127.0.0.1:%s", port) + return +} diff --git a/tests/integration/server/grpc/out_of_gas_test.go b/tests/integration/server/grpc/out_of_gas_test.go deleted file mode 100644 index eabd41fc754d..000000000000 --- a/tests/integration/server/grpc/out_of_gas_test.go +++ /dev/null @@ -1,100 +0,0 @@ -package grpc_test - -import ( - "context" - "fmt" - "testing" - - "github.com/stretchr/testify/suite" - "google.golang.org/grpc" - "google.golang.org/grpc/metadata" - - _ "cosmossdk.io/x/accounts" - _ "cosmossdk.io/x/bank" - banktypes "cosmossdk.io/x/bank/types" - _ "cosmossdk.io/x/consensus" - _ "cosmossdk.io/x/staking" - - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/testutil/configurator" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/testdata" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - _ "github.com/cosmos/cosmos-sdk/x/auth" - _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" -) - -type IntegrationTestOutOfGasSuite struct { - suite.Suite - - cfg network.Config - network network.NetworkI - conn *grpc.ClientConn -} - -func (s *IntegrationTestOutOfGasSuite) SetupSuite() { - var err error - s.T().Log("setting up integration test suite") - - s.cfg, err = network.DefaultConfigWithAppConfig(configurator.NewAppConfig( - configurator.AccountsModule(), - configurator.AuthModule(), - configurator.BankModule(), - configurator.GenutilModule(), - configurator.StakingModule(), - configurator.ConsensusModule(), - configurator.TxModule(), - configurator.ValidateModule(), - ), baseapp.SetQueryGasLimit(10)) - s.NoError(err) - s.cfg.NumValidators = 1 - - s.network, err = network.New(s.T(), s.T().TempDir(), s.cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(2) - s.Require().NoError(err) - - val0 := s.network.GetValidators()[0] - s.conn, err = grpc.NewClient( - val0.GetAppConfig().GRPC.Address, - grpc.WithInsecure(), //nolint:staticcheck // ignore SA1019, we don't need to use a secure connection for tests - grpc.WithDefaultCallOptions(grpc.ForceCodec(codec.NewProtoCodec(s.cfg.InterfaceRegistry).GRPCCodec())), - ) - s.Require().NoError(err) -} - -func (s *IntegrationTestOutOfGasSuite) TearDownSuite() { - s.T().Log("tearing down integration test suite") - s.conn.Close() - s.network.Cleanup() -} - -func (s *IntegrationTestOutOfGasSuite) TestGRPCServer_TestService() { - // gRPC query to test service should work - testClient := testdata.NewQueryClient(s.conn) - testRes, err := testClient.Echo(context.Background(), &testdata.EchoRequest{Message: "hello"}) - s.Require().NoError(err) - s.Require().Equal("hello", testRes.Message) -} - -func (s *IntegrationTestOutOfGasSuite) TestGRPCServer_BankBalance_OutOfGas() { - val0 := s.network.GetValidators()[0] - - // gRPC query to bank service should work - denom := fmt.Sprintf("%stoken", val0.GetMoniker()) - bankClient := banktypes.NewQueryClient(s.conn) - var header metadata.MD - _, err := bankClient.Balance( - context.Background(), - &banktypes.QueryBalanceRequest{Address: val0.GetAddress().String(), Denom: denom}, - grpc.Header(&header), // Also fetch grpc header - ) - - s.Require().ErrorContains(err, sdkerrors.ErrOutOfGas.Error()) -} - -func TestIntegrationTestOutOfGasSuite(t *testing.T) { - suite.Run(t, new(IntegrationTestOutOfGasSuite)) -} diff --git a/tests/integration/server/grpc/server_test.go b/tests/integration/server/grpc/server_test.go deleted file mode 100644 index e8d6d180b435..000000000000 --- a/tests/integration/server/grpc/server_test.go +++ /dev/null @@ -1,291 +0,0 @@ -package grpc_test - -import ( - "context" - "fmt" - "testing" - "time" - - "github.com/jhump/protoreflect/grpcreflect" - "github.com/stretchr/testify/require" - "github.com/stretchr/testify/suite" - "google.golang.org/grpc" - "google.golang.org/grpc/metadata" - - _ "cosmossdk.io/x/accounts" - _ "cosmossdk.io/x/bank" - banktypes "cosmossdk.io/x/bank/types" - _ "cosmossdk.io/x/consensus" - _ "cosmossdk.io/x/staking" - stakingtypes "cosmossdk.io/x/staking/types" - - "github.com/cosmos/cosmos-sdk/client" - reflectionv1 "github.com/cosmos/cosmos-sdk/client/grpc/reflection" - clienttx "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/cosmos/cosmos-sdk/codec" - reflectionv2 "github.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1" - "github.com/cosmos/cosmos-sdk/testutil/configurator" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/testdata" - sdk "github.com/cosmos/cosmos-sdk/types" - grpctypes "github.com/cosmos/cosmos-sdk/types/grpc" - txtypes "github.com/cosmos/cosmos-sdk/types/tx" - "github.com/cosmos/cosmos-sdk/types/tx/signing" - _ "github.com/cosmos/cosmos-sdk/x/auth" - authclient "github.com/cosmos/cosmos-sdk/x/auth/client" - _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" -) - -type IntegrationTestSuite struct { - suite.Suite - - cfg network.Config - network network.NetworkI - conn *grpc.ClientConn -} - -func (s *IntegrationTestSuite) SetupSuite() { - var err error - s.T().Log("setting up integration test suite") - - s.cfg, err = network.DefaultConfigWithAppConfig(configurator.NewAppConfig( - configurator.AccountsModule(), - configurator.AuthModule(), - configurator.BankModule(), - configurator.GenutilModule(), - configurator.StakingModule(), - configurator.ConsensusModule(), - configurator.TxModule(), - configurator.ValidateModule(), - )) - s.NoError(err) - s.cfg.NumValidators = 1 - - s.network, err = network.New(s.T(), s.T().TempDir(), s.cfg) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(2) - s.Require().NoError(err) - - val0 := s.network.GetValidators()[0] - s.conn, err = grpc.NewClient( - val0.GetAppConfig().GRPC.Address, - grpc.WithInsecure(), //nolint:staticcheck // ignore SA1019, we don't need to use a secure connection for tests - grpc.WithDefaultCallOptions(grpc.ForceCodec(codec.NewProtoCodec(s.cfg.InterfaceRegistry).GRPCCodec())), - ) - s.Require().NoError(err) -} - -func (s *IntegrationTestSuite) TearDownSuite() { - s.T().Log("tearing down integration test suite") - s.conn.Close() - s.network.Cleanup() -} - -func (s *IntegrationTestSuite) TestGRPCServer_TestService() { - // gRPC query to test service should work - testClient := testdata.NewQueryClient(s.conn) - testRes, err := testClient.Echo(context.Background(), &testdata.EchoRequest{Message: "hello"}) - s.Require().NoError(err) - s.Require().Equal("hello", testRes.Message) -} - -func (s *IntegrationTestSuite) TestGRPCServer_BankBalance() { - val0 := s.network.GetValidators()[0] - - // gRPC query to bank service should work - denom := fmt.Sprintf("%stoken", val0.GetMoniker()) - bankClient := banktypes.NewQueryClient(s.conn) - var header metadata.MD - bankRes, err := bankClient.Balance( - context.Background(), - &banktypes.QueryBalanceRequest{Address: val0.GetAddress().String(), Denom: denom}, - grpc.Header(&header), // Also fetch grpc header - ) - s.Require().NoError(err) - s.Require().Equal( - sdk.NewCoin(denom, s.cfg.AccountTokens), - *bankRes.GetBalance(), - ) - blockHeight := header.Get(grpctypes.GRPCBlockHeightHeader) - s.Require().NotEmpty(blockHeight[0]) // Should contain the block height - - // Request metadata should work - _, err = bankClient.Balance( - metadata.AppendToOutgoingContext(context.Background(), grpctypes.GRPCBlockHeightHeader, "1"), // Add metadata to request - &banktypes.QueryBalanceRequest{Address: val0.GetAddress().String(), Denom: denom}, - grpc.Header(&header), - ) - s.Require().NoError(err) - blockHeight = header.Get(grpctypes.GRPCBlockHeightHeader) - s.Require().Equal([]string{"1"}, blockHeight) -} - -func (s *IntegrationTestSuite) TestGRPCServer_Reflection() { - // Test server reflection - ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) - defer cancel() - // NOTE(fdymylja): we use grpcreflect because it solves imports too - // so that we can always assert that given a reflection server it is - // possible to fully query all the methods, without having any context - // on the proto registry - rc := grpcreflect.NewClientAuto(ctx, s.conn) - - services, err := rc.ListServices() - s.Require().NoError(err) - s.Require().Greater(len(services), 0) - - for _, svc := range services { - file, err := rc.FileContainingSymbol(svc) - s.Require().NoError(err) - sd := file.FindSymbol(svc) - s.Require().NotNil(sd) - } -} - -func (s *IntegrationTestSuite) TestGRPCServer_InterfaceReflection() { - // this tests the application reflection capabilities and compatibility between v1 and v2 - ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) - defer cancel() - - clientV2 := reflectionv2.NewReflectionServiceClient(s.conn) - clientV1 := reflectionv1.NewReflectionServiceClient(s.conn) - codecDesc, err := clientV2.GetCodecDescriptor(ctx, nil) - s.Require().NoError(err) - - interfaces, err := clientV1.ListAllInterfaces(ctx, nil) - s.Require().NoError(err) - s.Require().Equal(len(codecDesc.Codec.Interfaces), len(interfaces.InterfaceNames)) - s.Require().Equal(len(s.cfg.InterfaceRegistry.ListAllInterfaces()), len(codecDesc.Codec.Interfaces)) - - for _, iface := range interfaces.InterfaceNames { - impls, err := clientV1.ListImplementations(ctx, &reflectionv1.ListImplementationsRequest{InterfaceName: iface}) - s.Require().NoError(err) - - s.Require().ElementsMatch(impls.ImplementationMessageNames, s.cfg.InterfaceRegistry.ListImplementations(iface)) - } -} - -func (s *IntegrationTestSuite) TestGRPCServer_GetTxsEvent() { - // Query the tx via gRPC without pagination. This used to panic, see - // https://github.com/cosmos/cosmos-sdk/issues/8038. - txServiceClient := txtypes.NewServiceClient(s.conn) - _, err := txServiceClient.GetTxsEvent( - context.Background(), - &txtypes.GetTxsEventRequest{ - Query: "message.action='send'", - }, - ) - s.Require().NoError(err) -} - -func (s *IntegrationTestSuite) TestGRPCServer_BroadcastTx() { - val0 := s.network.GetValidators()[0] - - txBuilder := s.mkTxBuilder() - - txBytes, err := val0.GetClientCtx().TxConfig.TxEncoder()(txBuilder.GetTx()) - s.Require().NoError(err) - - // Broadcast the tx via gRPC. - queryClient := txtypes.NewServiceClient(s.conn) - - grpcRes, err := queryClient.BroadcastTx( - context.Background(), - &txtypes.BroadcastTxRequest{ - Mode: txtypes.BroadcastMode_BROADCAST_MODE_SYNC, - TxBytes: txBytes, - }, - ) - s.Require().NoError(err) - s.Require().Equal(uint32(0), grpcRes.TxResponse.Code) -} - -// Test and enforce that we upfront reject any connections to baseapp containing -// invalid initial x-cosmos-block-height that aren't positive and in the range [0, max(int64)] -// See issue https://github.com/cosmos/cosmos-sdk/issues/7662. -func (s *IntegrationTestSuite) TestGRPCServerInvalidHeaderHeights() { - t := s.T() - - // We should reject connections with invalid block heights off the bat. - invalidHeightStrs := []struct { - value string - wantErr string - }{ - {"-1", "height < 0"}, - {"9223372036854775808", "value out of range"}, // > max(int64) by 1 - {"-10", "height < 0"}, - {"18446744073709551615", "value out of range"}, // max uint64, which is > max(int64) - {"-9223372036854775809", "value out of range"}, // Out of the range of for negative int64 - } - for _, tt := range invalidHeightStrs { - t.Run(tt.value, func(t *testing.T) { - testClient := testdata.NewQueryClient(s.conn) - ctx := metadata.AppendToOutgoingContext(context.Background(), grpctypes.GRPCBlockHeightHeader, tt.value) - testRes, err := testClient.Echo(ctx, &testdata.EchoRequest{Message: "hello"}) - require.Error(t, err) - require.Nil(t, testRes) - require.Contains(t, err.Error(), tt.wantErr) - }) - } -} - -// TestGRPCUnpacker - tests the grpc endpoint for Validator and using the interface registry unpack and extract the -// ConsAddr. (ref: https://github.com/cosmos/cosmos-sdk/issues/8045) -func (s *IntegrationTestSuite) TestGRPCUnpacker() { - ir := s.cfg.InterfaceRegistry - queryClient := stakingtypes.NewQueryClient(s.conn) - validator, err := queryClient.Validator(context.Background(), - &stakingtypes.QueryValidatorRequest{ValidatorAddr: s.network.GetValidators()[0].GetValAddress().String()}) - require.NoError(s.T(), err) - - // no unpacked interfaces yet, so ConsAddr will be nil - nilAddr, err := validator.Validator.GetConsAddr() - require.Error(s.T(), err) - require.Nil(s.T(), nilAddr) - - // unpack the interfaces and now ConsAddr is not nil - err = validator.Validator.UnpackInterfaces(ir) - require.NoError(s.T(), err) - addr, err := validator.Validator.GetConsAddr() - require.NotNil(s.T(), addr) - require.NoError(s.T(), err) -} - -// mkTxBuilder creates a TxBuilder containing a signed tx from validator 0. -func (s *IntegrationTestSuite) mkTxBuilder() client.TxBuilder { - val := s.network.GetValidators()[0] - s.Require().NoError(s.network.WaitForNextBlock()) - - // prepare txBuilder with msg - txBuilder := val.GetClientCtx().TxConfig.NewTxBuilder() - feeAmount := sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)} - gasLimit := testdata.NewTestGasLimit() - s.Require().NoError( - txBuilder.SetMsgs(&banktypes.MsgSend{ - FromAddress: val.GetAddress().String(), - ToAddress: val.GetAddress().String(), - Amount: sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)}, - }), - ) - txBuilder.SetFeeAmount(feeAmount) - txBuilder.SetGasLimit(gasLimit) - txBuilder.SetMemo("foobar") - - // setup txFactory - txFactory := clienttx.Factory{}. - WithChainID(val.GetClientCtx().ChainID). - WithKeybase(val.GetClientCtx().Keyring). - WithTxConfig(val.GetClientCtx().TxConfig). - WithSignMode(signing.SignMode_SIGN_MODE_DIRECT) - - // Sign Tx. - err := authclient.SignTx(txFactory, val.GetClientCtx(), val.GetMoniker(), txBuilder, false, true) - s.Require().NoError(err) - - return txBuilder -} - -func TestIntegrationTestSuite(t *testing.T) { - suite.Run(t, new(IntegrationTestSuite)) -} diff --git a/tests/integration/server/grpc_test.go b/tests/integration/server/grpc_test.go new file mode 100644 index 000000000000..571f3fafe7e3 --- /dev/null +++ b/tests/integration/server/grpc_test.go @@ -0,0 +1,321 @@ +package grpc_test + +import ( + "context" + "testing" + "time" + + "github.com/jhump/protoreflect/grpcreflect" + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + "go.uber.org/mock/gomock" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/metadata" + + "cosmossdk.io/core/appmodule" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/bank" + bankkeeper "cosmossdk.io/x/bank/keeper" + banktypes "cosmossdk.io/x/bank/types" + minttypes "cosmossdk.io/x/mint/types" + "cosmossdk.io/x/staking" + stakingkeeper "cosmossdk.io/x/staking/keeper" + stakingtypes "cosmossdk.io/x/staking/types" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + reflectionv1 "github.com/cosmos/cosmos-sdk/client/grpc/reflection" + "github.com/cosmos/cosmos-sdk/codec" + addresscodec "github.com/cosmos/cosmos-sdk/codec/address" + codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil" + "github.com/cosmos/cosmos-sdk/runtime" + srvconfig "github.com/cosmos/cosmos-sdk/server/config" + servergrpc "github.com/cosmos/cosmos-sdk/server/grpc" + reflectionv2 "github.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1" + "github.com/cosmos/cosmos-sdk/testutil/integration" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + "github.com/cosmos/cosmos-sdk/testutil/testdata" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + grpctypes "github.com/cosmos/cosmos-sdk/types/grpc" + moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" + "github.com/cosmos/cosmos-sdk/x/auth" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" + authtestutil "github.com/cosmos/cosmos-sdk/x/auth/testutil" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" +) + +type IntegrationTestSuite struct { + suite.Suite + + codec codec.Codec + conn *grpc.ClientConn + address sdk.AccAddress +} + +func (s *IntegrationTestSuite) SetupSuite() { + s.T().Log("setting up integration test suite") + + keys := storetypes.NewKVStoreKeys(authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey) + encodingCfg := moduletestutil.MakeTestEncodingConfig(codectestutil.CodecOptions{}, auth.AppModule{}, bank.AppModule{}) + s.codec = encodingCfg.Codec + + logger := log.NewTestLogger(s.T()) + authority := authtypes.NewModuleAddress("gov") + + // gomock initializations + ctrl := gomock.NewController(s.T()) + acctsModKeeper := authtestutil.NewMockAccountsModKeeper(ctrl) + accNum := uint64(0) + acctsModKeeper.EXPECT().NextAccountNumber(gomock.Any()).AnyTimes().DoAndReturn(func(ctx context.Context) (uint64, error) { + currentNum := accNum + accNum++ + return currentNum, nil + }) + + accountKeeper := authkeeper.NewAccountKeeper( + runtime.NewEnvironment(runtime.NewKVStoreService(keys[authtypes.StoreKey]), log.NewNopLogger()), + s.codec, + authtypes.ProtoBaseAccount, + acctsModKeeper, + map[string][]string{ + minttypes.ModuleName: {authtypes.Minter}, + stakingtypes.BondedPoolName: {authtypes.Burner, stakingtypes.ModuleName}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, stakingtypes.ModuleName}, + }, + addresscodec.NewBech32Codec(sdk.Bech32MainPrefix), + sdk.Bech32MainPrefix, + authority.String(), + ) + + blockedAddresses := map[string]bool{ + accountKeeper.GetAuthority(): false, + } + bankKeeper := bankkeeper.NewBaseKeeper( + runtime.NewEnvironment(runtime.NewKVStoreService(keys[banktypes.StoreKey]), log.NewNopLogger()), + s.codec, + accountKeeper, + blockedAddresses, + authority.String(), + ) + + stakingKeeper := stakingkeeper.NewKeeper(s.codec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, nil, authority.String(), encodingCfg.InterfaceRegistry.SigningContext().ValidatorAddressCodec(), addresscodec.NewBech32Codec("cosmosvaloper"), nil) + + authModule := auth.NewAppModule(s.codec, accountKeeper, acctsModKeeper, authsims.RandomGenesisAccounts, nil) + bankModule := bank.NewAppModule(s.codec, bankKeeper, accountKeeper) + stakingModule := staking.NewAppModule(s.codec, stakingKeeper) + + integrationApp := integration.NewIntegrationApp(logger, keys, s.codec, + encodingCfg.InterfaceRegistry.SigningContext().AddressCodec(), + encodingCfg.InterfaceRegistry.SigningContext().ValidatorAddressCodec(), + map[string]appmodule.AppModule{ + authtypes.ModuleName: authModule, + banktypes.ModuleName: bankModule, + stakingtypes.ModuleName: stakingModule, + }, + baseapp.NewMsgServiceRouter(), + baseapp.NewGRPCQueryRouter(), + baseapp.SetQueryGasLimit(50), + ) + + pubkeys := simtestutil.CreateTestPubKeys(2) + s.address = sdk.AccAddress(pubkeys[0].Address()) + addr2 := sdk.AccAddress(pubkeys[1].Address()) + + sdkCtx := sdk.UnwrapSDKContext(integrationApp.Context()) + + // mint some tokens + amount := sdk.NewCoins(sdk.NewInt64Coin("stake", 100)) + s.Require().NoError(bankKeeper.MintCoins(sdkCtx, minttypes.ModuleName, amount)) + s.Require().NoError(bankKeeper.SendCoinsFromModuleToAccount(sdkCtx, minttypes.ModuleName, addr2, amount)) + + // Register MsgServer and QueryServer + banktypes.RegisterMsgServer(integrationApp.MsgServiceRouter(), bankkeeper.NewMsgServerImpl(bankKeeper)) + banktypes.RegisterQueryServer(integrationApp.GRPCQueryRouter(), bankkeeper.NewQuerier(&bankKeeper)) + testdata.RegisterQueryServer(integrationApp.GRPCQueryRouter(), testdata.QueryImpl{}) + banktypes.RegisterInterfaces(encodingCfg.InterfaceRegistry) + stakingtypes.RegisterQueryServer(integrationApp.GRPCQueryRouter(), stakingkeeper.NewQuerier(stakingKeeper)) + + _, err := integrationApp.RunMsg( + &banktypes.MsgSend{ + FromAddress: addr2.String(), + ToAddress: s.address.String(), + Amount: sdk.NewCoins(sdk.NewInt64Coin("stake", 50)), + }, + integration.WithAutomaticFinalizeBlock(), + integration.WithAutomaticCommit(), + ) + s.Require().NoError(err) + s.Require().Equal(integrationApp.LastBlockHeight(), int64(2)) + + resp, err := bankKeeper.Balance(integrationApp.Context(), &banktypes.QueryBalanceRequest{Address: s.address.String(), Denom: "stake"}) + s.Require().NoError(err) + s.Require().Equal(int64(50), resp.Balance.Amount.Int64()) + + grpcCfg := srvconfig.DefaultConfig().GRPC + grpcSrv, err := servergrpc.NewGRPCServer((client.Context{}). + WithChainID(integrationApp.ChainID()). + WithInterfaceRegistry(encodingCfg.InterfaceRegistry). + WithTxConfig(encodingCfg.TxConfig), + integrationApp, + grpcCfg, + ) + s.Require().NoError(err) + + go func() { + err := servergrpc.StartGRPCServer( + integrationApp.Context(), + integrationApp.Logger(), + grpcCfg, + grpcSrv, + ) + s.Require().NoError(err) + defer grpcSrv.GracefulStop() + }() + + s.conn, err = grpc.NewClient( + grpcCfg.Address, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithDefaultCallOptions(grpc.ForceCodec(codec.NewProtoCodec(encodingCfg.InterfaceRegistry).GRPCCodec())), + ) + s.Require().NoError(err) +} + +func (s *IntegrationTestSuite) TearDownSuite() { + s.T().Log("tearing down integration test suite") + s.conn.Close() +} + +func (s *IntegrationTestSuite) TestGRPCServer_TestService() { + // gRPC query to test service should work + testClient := testdata.NewQueryClient(s.conn) + testRes, err := testClient.Echo( + context.Background(), + &testdata.EchoRequest{Message: "hello"}) + s.Require().NoError(err) + s.Require().Equal("hello", testRes.Message) +} + +func (s *IntegrationTestSuite) TestGRPCServer_BankBalance_OutOfGas() { + // gRPC query to bank service should work + bankClient := banktypes.NewQueryClient(s.conn) + + _, err := bankClient.Balance( + context.Background(), + &banktypes.QueryBalanceRequest{Address: s.address.String(), Denom: "stake"}, + ) + s.Require().ErrorContains(err, sdkerrors.ErrOutOfGas.Error()) +} + +// Test and enforce that we upfront reject any connections to baseapp containing +// invalid initial x-cosmos-block-height that aren't positive and in the range [0, max(int64)] +// See issue https://github.com/cosmos/cosmos-sdk/issues/7662. +func (s *IntegrationTestSuite) TestGRPCServerInvalidHeaderHeights() { + t := s.T() + + // We should reject connections with invalid block heights off the bat. + invalidHeightStrs := []struct { + value string + wantErr string + }{ + {"-1", "height < 0"}, + {"9223372036854775808", "value out of range"}, // > max(int64) by 1 + {"-10", "height < 0"}, + {"18446744073709551615", "value out of range"}, // max uint64, which is > max(int64) + {"-9223372036854775809", "value out of range"}, // Out of the range of for negative int64 + } + for _, tt := range invalidHeightStrs { + t.Run(tt.value, func(t *testing.T) { + testClient := testdata.NewQueryClient(s.conn) + ctx := metadata.AppendToOutgoingContext(context.Background(), grpctypes.GRPCBlockHeightHeader, tt.value) + testRes, err := testClient.Echo(ctx, &testdata.EchoRequest{Message: "hello"}) + require.Error(t, err) + require.Nil(t, testRes) + require.Contains(t, err.Error(), tt.wantErr) + }) + } +} + +func (s *IntegrationTestSuite) TestGRPCServer_Reflection() { + // Test server reflection + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + // NOTE(fdymylja): we use grpcreflect because it solves imports too + // so that we can always assert that given a reflection server it is + // possible to fully query all the methods, without having any context + // on the proto registry + rc := grpcreflect.NewClientAuto(ctx, s.conn) + + services, err := rc.ListServices() + s.Require().NoError(err) + s.Require().Greater(len(services), 0) + + for _, svc := range services { + file, err := rc.FileContainingSymbol(svc) + s.Require().NoError(err) + sd := file.FindSymbol(svc) + s.Require().NotNil(sd) + } +} + +func (s *IntegrationTestSuite) TestGRPCServer_InterfaceReflection() { + s.T().Skip() // TODO: fix this test at https://github.com/cosmos/cosmos-sdk/issues/22825 + + // this tests the application reflection capabilities and compatibility between v1 and v2 + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + + clientV2 := reflectionv2.NewReflectionServiceClient(s.conn) + clientV1 := reflectionv1.NewReflectionServiceClient(s.conn) + codecDesc, err := clientV2.GetCodecDescriptor(ctx, nil) + s.Require().NoError(err) + + interfaces, err := clientV1.ListAllInterfaces(ctx, nil) + s.Require().NoError(err) + s.Require().Equal(len(codecDesc.Codec.Interfaces), len(interfaces.InterfaceNames)) + s.Require().Equal(len(s.codec.InterfaceRegistry().ListAllInterfaces()), len(codecDesc.Codec.Interfaces)) + + for _, iface := range interfaces.InterfaceNames { + impls, err := clientV1.ListImplementations(ctx, &reflectionv1.ListImplementationsRequest{InterfaceName: iface}) + s.Require().NoError(err) + + s.Require().ElementsMatch(impls.ImplementationMessageNames, s.codec.InterfaceRegistry().ListImplementations(iface)) + } +} + +// TestGRPCUnpacker - tests the grpc endpoint for Validator and using the interface registry unpack and extract the +// ConsAddr. (ref: https://github.com/cosmos/cosmos-sdk/issues/8045) +func (s *IntegrationTestSuite) TestGRPCUnpacker() { + queryClient := stakingtypes.NewQueryClient(s.conn) + validators, err := queryClient.Validators(context.Background(), &stakingtypes.QueryValidatorsRequest{}) + require.NoError(s.T(), err) + + if len(validators.Validators) == 0 { + s.T().Skip("no validators found") + } + + validator, err := queryClient.Validator( + context.Background(), + &stakingtypes.QueryValidatorRequest{ValidatorAddr: validators.Validators[0].OperatorAddress}, + ) + require.NoError(s.T(), err) + + // no unpacked interfaces yet, so ConsAddr will be nil + nilAddr, err := validator.Validator.GetConsAddr() + require.Error(s.T(), err) + require.Nil(s.T(), nilAddr) + + // unpack the interfaces and now ConsAddr is not nil + err = validator.Validator.UnpackInterfaces(s.codec.InterfaceRegistry()) + require.NoError(s.T(), err) + addr, err := validator.Validator.GetConsAddr() + require.NotNil(s.T(), addr) + require.NoError(s.T(), err) +} + +func TestIntegrationTestSuite(t *testing.T) { + suite.Run(t, new(IntegrationTestSuite)) +} diff --git a/tests/integration/tx/benchmark/benchmarks_test.go b/tests/integration/tx/benchmark/benchmarks_test.go deleted file mode 100644 index 4d26bc3e3d53..000000000000 --- a/tests/integration/tx/benchmark/benchmarks_test.go +++ /dev/null @@ -1,191 +0,0 @@ -package benchmark_test - -import ( - "context" - "testing" - - "gotest.tools/v3/assert" - - sdkmath "cosmossdk.io/math" - "cosmossdk.io/simapp" - banktypes "cosmossdk.io/x/bank/types" - - "github.com/cosmos/cosmos-sdk/client" - clienttx "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/cosmos/cosmos-sdk/testutil/network" - "github.com/cosmos/cosmos-sdk/testutil/testdata" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/tx" - "github.com/cosmos/cosmos-sdk/types/tx/signing" - authclient "github.com/cosmos/cosmos-sdk/x/auth/client" -) - -type TxBenchmarkSuite struct { - cfg network.Config - network network.NetworkI - - txHeight int64 - queryClient tx.ServiceClient -} - -// BenchmarkTx is lifted from TestSuite from this package, with irrelevant state checks removed. -// -// Benchmark results: -// -// On a M1 macOS, on commit ab77fe20d3c00ef4cb73dfd0c803c4593a3c8233: -// -// BenchmarkTx-8 4108 268935 ns/op -// -// By comparison, the benchmark modified for v0.47.0: -// -// BenchmarkTx-8 3772 301750 ns/op -func BenchmarkTx(b *testing.B) { - s := NewTxBenchmarkSuite(b) - b.Cleanup(s.Close) - - val := s.network.GetValidators()[0] - txBuilder := mkTxBuilder(b, s) - // Convert the txBuilder to a tx.Tx. - protoTx, err := txBuilder.GetTx().(interface{ AsTx() (*tx.Tx, error) }).AsTx() - assert.NilError(b, err) - // Encode the txBuilder to txBytes. - txBytes, err := val.GetClientCtx().TxConfig.TxEncoder()(txBuilder.GetTx()) - assert.NilError(b, err) - - testCases := []struct { - name string - req *tx.SimulateRequest - }{ - {"valid request with proto tx (deprecated)", &tx.SimulateRequest{Tx: protoTx}}, - {"valid request with tx_bytes", &tx.SimulateRequest{TxBytes: txBytes}}, - } - - b.ResetTimer() - b.ReportAllocs() - for i := 0; i < b.N; i++ { - for _, tc := range testCases { - // Broadcast the tx via gRPC via the validator's clientCtx (which goes - // through Tendermint). - res, err := s.queryClient.Simulate(context.Background(), tc.req) - assert.NilError(b, err) - // Check the result and gas used are correct. - // - // The 10 events are: - // - Sending Fee to the pool (3 events): coin_spent, coin_received, transfer - // - tx.* events (3 events): tx.fee, tx.acc_seq, tx.signature - // - Sending Amount to recipient (3 events): coin_spent, coin_received, transfer and message.sender= - // - Msg events (1 event): message.module=bank, message.action=/cosmos.bank.v1beta1.MsgSend and message.sender= (all in one event) - assert.Equal(b, 10, len(res.GetResult().GetEvents())) - assert.Assert(b, res.GetGasInfo().GetGasUsed() > 0) // Gas used sometimes change, just check it's not empty. - } - } -} - -func NewTxBenchmarkSuite(tb testing.TB) *TxBenchmarkSuite { - tb.Helper() - - s := new(TxBenchmarkSuite) - - cfg := network.DefaultConfig(simapp.NewTestNetworkFixture) - cfg.NumValidators = 1 - s.cfg = cfg - - var err error - s.network, err = network.New(tb, tb.TempDir(), s.cfg) - assert.NilError(tb, err) - - val := s.network.GetValidators()[0] - assert.NilError(tb, s.network.WaitForNextBlock()) - - s.queryClient = tx.NewServiceClient(val.GetClientCtx()) - - msgSend := &banktypes.MsgSend{ - FromAddress: val.GetAddress().String(), - ToAddress: val.GetAddress().String(), - Amount: sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdkmath.NewInt(10))), - } - - // Create a new MsgSend tx from val to itself. - out, err := cli.SubmitTestTx( - val.GetClientCtx(), - msgSend, - val.GetAddress(), - cli.TestTxConfig{ - Memo: "foobar", - }, - ) - - assert.NilError(tb, err) - - var txRes sdk.TxResponse - assert.NilError(tb, val.GetClientCtx().Codec.UnmarshalJSON(out.Bytes(), &txRes)) - assert.Equal(tb, uint32(0), txRes.Code, txRes) - - msgSend1 := &banktypes.MsgSend{ - FromAddress: val.GetAddress().String(), - ToAddress: val.GetAddress().String(), - Amount: sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdkmath.NewInt(1))), - } - - out, err = cli.SubmitTestTx( - val.GetClientCtx(), - msgSend1, - val.GetAddress(), - cli.TestTxConfig{ - Offline: true, - AccNum: 0, - Seq: 2, - Memo: "foobar", - }, - ) - - assert.NilError(tb, err) - var tr sdk.TxResponse - assert.NilError(tb, val.GetClientCtx().Codec.UnmarshalJSON(out.Bytes(), &tr)) - assert.Equal(tb, uint32(0), tr.Code) - - resp, err := cli.GetTxResponse(s.network, val.GetClientCtx(), tr.TxHash) - assert.NilError(tb, err) - s.txHeight = resp.Height - return s -} - -func (s *TxBenchmarkSuite) Close() { - s.network.Cleanup() -} - -func mkTxBuilder(tb testing.TB, s *TxBenchmarkSuite) client.TxBuilder { - tb.Helper() - - val := s.network.GetValidators()[0] - assert.NilError(tb, s.network.WaitForNextBlock()) - - // prepare txBuilder with msg - txBuilder := val.GetClientCtx().TxConfig.NewTxBuilder() - feeAmount := sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)} - gasLimit := testdata.NewTestGasLimit() - assert.NilError(tb, - txBuilder.SetMsgs(&banktypes.MsgSend{ - FromAddress: val.GetAddress().String(), - ToAddress: val.GetAddress().String(), - Amount: sdk.Coins{sdk.NewInt64Coin(s.cfg.BondDenom, 10)}, - }), - ) - txBuilder.SetFeeAmount(feeAmount) - txBuilder.SetGasLimit(gasLimit) - txBuilder.SetMemo("foobar") - - // setup txFactory - txFactory := clienttx.Factory{}. - WithChainID(val.GetClientCtx().ChainID). - WithKeybase(val.GetClientCtx().Keyring). - WithTxConfig(val.GetClientCtx().TxConfig). - WithSignMode(signing.SignMode_SIGN_MODE_DIRECT) - - // Sign Tx. - err := authclient.SignTx(txFactory, val.GetClientCtx(), val.GetMoniker(), txBuilder, false, true) - assert.NilError(tb, err) - - return txBuilder -} diff --git a/tests/systemtests/cometbft_client_test.go b/tests/systemtests/cometbft_client_test.go index ae8ae2da9797..895a03a98c62 100644 --- a/tests/systemtests/cometbft_client_test.go +++ b/tests/systemtests/cometbft_client_test.go @@ -22,6 +22,17 @@ import ( qtypes "github.com/cosmos/cosmos-sdk/types/query" ) +func TestQueryStatus(t *testing.T) { + systest.Sut.ResetChain(t) + cli := systest.NewCLIWrapper(t, systest.Sut, systest.Verbose) + systest.Sut.StartChain(t) + + resp := cli.CustomQuery("status") + + // make sure the output has the validator moniker. + assert.Contains(t, resp, "\"moniker\":\"node0\"") +} + func TestQueryNodeInfo(t *testing.T) { systest.Sut.ResetChain(t) systest.Sut.StartChain(t) diff --git a/testutil/cli/tx.go b/testutil/cli/tx.go deleted file mode 100644 index 73f0f8867670..000000000000 --- a/testutil/cli/tx.go +++ /dev/null @@ -1,63 +0,0 @@ -package cli - -import ( - "fmt" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil/network" - sdk "github.com/cosmos/cosmos-sdk/types" - authcli "github.com/cosmos/cosmos-sdk/x/auth/client/cli" -) - -// CheckTxCode verifies that the transaction result returns a specific code -// Takes a network, wait for two blocks and fetch the transaction from its hash -func CheckTxCode(network network.NetworkI, clientCtx client.Context, txHash string, expectedCode uint32) error { - // wait for 2 blocks - for i := 0; i < 2; i++ { - if err := network.WaitForNextBlock(); err != nil { - return fmt.Errorf("failed to wait for next block: %w", err) - } - } - - cmd := authcli.QueryTxCmd() - out, err := ExecTestCLICmd(clientCtx, cmd, []string{txHash, fmt.Sprintf("--%s=json", flags.FlagOutput)}) - if err != nil { - return err - } - - var response sdk.TxResponse - if err := clientCtx.Codec.UnmarshalJSON(out.Bytes(), &response); err != nil { - return err - } - - if response.Code != expectedCode { - return fmt.Errorf("expected code %d, got %d", expectedCode, response.Code) - } - - return nil -} - -// GetTxResponse returns queries the transaction response of a transaction from its hash -// Takes a network, wait for two blocks and fetch the transaction from its hash -func GetTxResponse(network network.NetworkI, clientCtx client.Context, txHash string) (sdk.TxResponse, error) { - // wait for 2 blocks - for i := 0; i < 2; i++ { - if err := network.WaitForNextBlock(); err != nil { - return sdk.TxResponse{}, fmt.Errorf("failed to wait for next block: %w", err) - } - } - - cmd := authcli.QueryTxCmd() - out, err := ExecTestCLICmd(clientCtx, cmd, []string{txHash, fmt.Sprintf("--%s=json", flags.FlagOutput)}) - if err != nil { - return sdk.TxResponse{}, err - } - - var response sdk.TxResponse - if err := clientCtx.Codec.UnmarshalJSON(out.Bytes(), &response); err != nil { - return sdk.TxResponse{}, err - } - - return response, nil -} diff --git a/testutil/network/doc.go b/testutil/network/doc.go deleted file mode 100644 index bb92b93510cc..000000000000 --- a/testutil/network/doc.go +++ /dev/null @@ -1,66 +0,0 @@ -/* -Package network implements and exposes a fully operational in-process CometBFT -test network that consists of at least one or potentially many validators. This -test network can be used primarily for integration tests or unit test suites. - -The test network utilizes SimApp as the ABCI application and uses all the modules -defined in the Cosmos SDK. An in-process test network can be configured with any -number of validators as well as account funds and even custom genesis state. - -When creating a test network, a series of Validator objects are returned. Each -Validator object has useful information such as their address and public key. A -Validator will also provide its RPC, P2P, and API addresses that can be useful -for integration testing. In addition, a CometBFT local RPC client is also provided -which can be handy for making direct RPC calls to CometBFT. - -Note, due to limitations in concurrency and the design of the RPC layer in -CometBFT, only the first Validator object will have an RPC and API client -exposed. Due to this exact same limitation, only a single test network can exist -at a time. A caller must be certain it calls Cleanup after it no longer needs -the network. - -A typical testing flow might look like the following: - - type IntegrationTestSuite struct { - suite.Suite - - cfg network.Config - network *network.Network - } - - func (s *IntegrationTestSuite) SetupSuite() { - s.T().Log("setting up integration test suite") - - cfg := network.DefaultConfig() - cfg.NumValidators = 1 - s.cfg = cfg - - var err error - s.network, err = network.New(s.T(), s.T().TempDir(), cfg) - s.Require().NoError(err) - - s.Require().NoError(s.network.WaitForNextBlock()) - } - - func (s *IntegrationTestSuite) TearDownSuite() { - s.T().Log("tearing down integration test suite") - - // This is important and must be called to ensure other tests can create - // a network! - s.network.Cleanup() - } - - func (s *IntegrationTestSuite) TestQueryBalancesRequestHandlerFn() { - val := s.network.Validators[0] - baseURL := val.APIAddress - - // Use baseURL to make API HTTP requests or use val.RPCClient to make direct - // CometBFT RPC calls. - // ... - } - - func TestIntegrationTestSuite(t *testing.T) { - suite.Run(t, new(IntegrationTestSuite)) - } -*/ -package network diff --git a/testutil/network/interface.go b/testutil/network/interface.go deleted file mode 100644 index 37356ea525c8..000000000000 --- a/testutil/network/interface.go +++ /dev/null @@ -1,48 +0,0 @@ -package network - -import ( - "time" - - "github.com/spf13/viper" - - "cosmossdk.io/log" - - "github.com/cosmos/cosmos-sdk/client" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - srvconfig "github.com/cosmos/cosmos-sdk/server/config" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// NetworkI is an interface for a network of validators. -// It is used to abstract over the different network types (in-process, docker, etc.). -// if used there is a requirement to expose query and tx client for the nodes -type NetworkI interface { - // GetValidators returns the validators in the network - GetValidators() []ValidatorI - // WaitForNextBlock waits for the network to reach the next block - WaitForNextBlock() error - // WaitForHeight waits for the network to reach the given height - WaitForHeight(height int64) (int64, error) - // WaitForHeightWithTimeout waits for the network to reach the given height or times out - WaitForHeightWithTimeout(int64, time.Duration) (int64, error) - // RetryForBlocks retries the given function until it returns no error or the given number of blocks has passed - RetryForBlocks(retryFunc func() error, blocks int) error - // LatestHeight returns the latest height of the network - LatestHeight() (int64, error) - - Cleanup() -} - -// ValidatorI expose a validator's context and configuration -type ValidatorI interface { - GetViper() *viper.Viper - GetLogger() log.Logger - GetAppConfig() *srvconfig.Config - GetAddress() sdk.AccAddress - GetValAddress() sdk.ValAddress - GetClientCtx() client.Context - GetAPIAddress() string - GetRPCAddress() string - GetPubKey() cryptotypes.PubKey - GetMoniker() string -} diff --git a/testutil/network/network.go b/testutil/network/network.go deleted file mode 100644 index 994e7d5ef366..000000000000 --- a/testutil/network/network.go +++ /dev/null @@ -1,847 +0,0 @@ -package network - -import ( - "bufio" - "context" - "encoding/json" - "errors" - "fmt" - "net/url" - "os" - "os/signal" - "path/filepath" - "strings" - "sync" - "sync/atomic" - "syscall" - "testing" - "time" - - cmtcfg "github.com/cometbft/cometbft/config" - "github.com/spf13/cobra" - "github.com/spf13/viper" - - "cosmossdk.io/core/address" - "cosmossdk.io/core/registry" - coretesting "cosmossdk.io/core/testing" - "cosmossdk.io/depinject" - "cosmossdk.io/log" - sdkmath "cosmossdk.io/math" - "cosmossdk.io/math/unsafe" - pruningtypes "cosmossdk.io/store/pruning/types" - banktypes "cosmossdk.io/x/bank/types" - stakingtypes "cosmossdk.io/x/staking/types" - - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/cosmos/cosmos-sdk/codec" - addresscodec "github.com/cosmos/cosmos-sdk/codec/address" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/crypto/hd" - "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - "github.com/cosmos/cosmos-sdk/runtime" - srvconfig "github.com/cosmos/cosmos-sdk/server/config" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/testutil" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - "github.com/cosmos/cosmos-sdk/testutil/testdata" - sdk "github.com/cosmos/cosmos-sdk/types" - moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/genutil" -) - -// package-wide network lock to only allow one test network at a time -var ( - lock = new(sync.Mutex) - portPool = make(chan string, 200) -) - -func init() { - closeFns := []func() error{} - for i := 0; i < 200; i++ { - _, port, closeFn, err := FreeTCPAddr() - if err != nil { - panic(err) - } - - portPool <- port - closeFns = append(closeFns, closeFn) - } - - for _, closeFn := range closeFns { - err := closeFn() - if err != nil { - panic(err) - } - } -} - -// AppConstructor defines a function which accepts a network configuration and -// creates an ABCI Application to provide to CometBFT. -type ( - AppConstructor = func(val ValidatorI) servertypes.Application - TestFixtureFactory = func() TestFixture -) - -type TestFixture struct { - AppConstructor AppConstructor - GenesisState map[string]json.RawMessage - EncodingConfig moduletestutil.TestEncodingConfig -} - -// Config defines the necessary configuration used to bootstrap and start an -// in-process local testing network. -type Config struct { - Codec codec.Codec - LegacyAmino *codec.LegacyAmino // TODO: Remove! - InterfaceRegistry codectypes.InterfaceRegistry - - TxConfig client.TxConfig - AccountRetriever client.AccountRetriever - AppConstructor AppConstructor // the ABCI application constructor - GenesisState map[string]json.RawMessage // custom genesis state to provide - GenesisTime time.Time // the genesis time - TimeoutCommit time.Duration // the consensus commitment timeout - ChainID string // the network chain-id - NumValidators int // the total number of validators to create and bond - Mnemonics []string // custom user-provided validator operator mnemonics - BondDenom string // the staking bond denomination - MinGasPrices string // the minimum gas prices each validator will accept - AccountTokens sdkmath.Int // the amount of unique validator tokens (e.g. 1000node0) - StakingTokens sdkmath.Int // the amount of tokens each validator has available to stake - BondedTokens sdkmath.Int // the amount of tokens each validator stakes - PruningStrategy string // the pruning strategy each validator will have - EnableLogging bool // enable logging to STDOUT - CleanupDir bool // remove base temporary directory during cleanup - SigningAlgo string // signing algorithm for keys - KeyringOptions []keyring.Option // keyring configuration options - RPCAddress string // RPC listen address (including port) - APIAddress string // REST API listen address (including port) - GRPCAddress string // GRPC server listen address (including port) - PrintMnemonic bool // print the mnemonic of first validator as log output for testing - - // Address codecs - AddressCodec address.Codec // address codec - ValidatorAddressCodec address.ValidatorAddressCodec // validator address codec - ConsensusAddressCodec address.ConsensusAddressCodec // consensus address codec -} - -// DefaultConfig returns a sane default configuration suitable for nearly all -// testing requirements. -func DefaultConfig(factory TestFixtureFactory) Config { - fixture := factory() - - return Config{ - Codec: fixture.EncodingConfig.Codec, - TxConfig: fixture.EncodingConfig.TxConfig, - LegacyAmino: fixture.EncodingConfig.Amino, - InterfaceRegistry: fixture.EncodingConfig.InterfaceRegistry, - AccountRetriever: authtypes.AccountRetriever{}, - AppConstructor: fixture.AppConstructor, - GenesisState: fixture.GenesisState, - TimeoutCommit: 2 * time.Second, - ChainID: "chain-" + unsafe.Str(6), - NumValidators: 4, - BondDenom: sdk.DefaultBondDenom, - MinGasPrices: fmt.Sprintf("0.000006%s", sdk.DefaultBondDenom), - AccountTokens: sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction), - StakingTokens: sdk.TokensFromConsensusPower(500, sdk.DefaultPowerReduction), - BondedTokens: sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction), - PruningStrategy: pruningtypes.PruningOptionNothing, - CleanupDir: true, - SigningAlgo: string(hd.Secp256k1Type), - KeyringOptions: []keyring.Option{}, - PrintMnemonic: false, - AddressCodec: addresscodec.NewBech32Codec("cosmos"), - ValidatorAddressCodec: addresscodec.NewBech32Codec("cosmosvaloper"), - ConsensusAddressCodec: addresscodec.NewBech32Codec("cosmosvalcons"), - } -} - -func DefaultConfigWithAppConfig(appConfig depinject.Config, baseappOpts ...func(*baseapp.BaseApp)) (Config, error) { - var ( - appBuilder *runtime.AppBuilder - txConfig client.TxConfig - legacyAmino registry.AminoRegistrar - cdc codec.Codec - interfaceRegistry codectypes.InterfaceRegistry - addressCodec address.Codec - validatorAddressCodec address.ValidatorAddressCodec - consensusAddressCodec address.ConsensusAddressCodec - ) - - if err := depinject.Inject( - depinject.Configs( - appConfig, - depinject.Supply(log.NewNopLogger()), - ), - &appBuilder, - &txConfig, - &cdc, - &legacyAmino, - &interfaceRegistry, - &addressCodec, - &validatorAddressCodec, - &consensusAddressCodec, - ); err != nil { - return Config{}, err - } - - cfg := DefaultConfig(func() TestFixture { - return TestFixture{} - }) - cfg.Codec = cdc - cfg.TxConfig = txConfig - amino, ok := legacyAmino.(*codec.LegacyAmino) - if !ok { - return Config{}, errors.New("legacyAmino must be a *codec.LegacyAmino") - } - cfg.LegacyAmino = amino - cfg.InterfaceRegistry = interfaceRegistry - cfg.GenesisState = appBuilder.DefaultGenesis() - cfg.AppConstructor = func(val ValidatorI) servertypes.Application { - // we build a unique app instance for every validator here - var appBuilder *runtime.AppBuilder - if err := depinject.Inject( - depinject.Configs( - appConfig, - depinject.Supply( - val.GetLogger(), - simtestutil.NewAppOptionsWithFlagHome(val.GetViper().GetString(flags.FlagHome)), - ), - ), - &appBuilder); err != nil { - panic(err) - } - app := appBuilder.Build( - coretesting.NewMemDB(), - nil, - append(baseappOpts, - baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.GetAppConfig().Pruning)), - baseapp.SetMinGasPrices(val.GetAppConfig().MinGasPrices), - baseapp.SetChainID(cfg.ChainID), - )..., - ) - - testdata.RegisterQueryServer(app.GRPCQueryRouter(), testdata.QueryImpl{}) - - if err := app.Load(true); err != nil { - panic(err) - } - - return app - } - - cfg.AddressCodec = addressCodec - cfg.ValidatorAddressCodec = validatorAddressCodec - cfg.ConsensusAddressCodec = consensusAddressCodec - - return cfg, nil -} - -type ( - // Network defines a local in-process testing network using SimApp. It can be - // configured to start any number of validators, each with its own RPC and API - // clients. Typically, this test network would be used in client and integration - // testing where user input is expected. - // - // Note, due to CometBFT constraints in regards to RPC functionality, there - // may only be one test network running at a time. Thus, any caller must be - // sure to Cleanup after testing is finished in order to allow other tests - // to create networks. In addition, only the first validator will have a valid - // RPC and API server/client. - Network struct { - Logger Logger - BaseDir string - Validators []*Validator - - Config Config - } - - // Logger is a network logger interface that exposes testnet-level Log() methods for an in-process testing network - // This is not to be confused with logging that may happen at an individual node or validator level - Logger interface { - Log(args ...interface{}) - Logf(format string, args ...interface{}) - } -) - -var ( - _ Logger = (*testing.T)(nil) - _ Logger = (*CLILogger)(nil) -) - -// CLILogger wraps a cobra.Command and provides command logging methods. -type CLILogger struct { - cmd *cobra.Command -} - -// Log logs given args. -func (s CLILogger) Log(args ...interface{}) { - s.cmd.Println(args...) -} - -// Logf logs given args according to a format specifier. -func (s CLILogger) Logf(format string, args ...interface{}) { - s.cmd.Printf(format, args...) -} - -// NewCLILogger creates a new CLILogger. -func NewCLILogger(cmd *cobra.Command) CLILogger { - return CLILogger{cmd} -} - -// New creates a new Network for integration tests or in-process testnets run via the CLI -func New(l Logger, baseDir string, cfg Config) (NetworkI, error) { - // only one caller/test can create and use a network at a time - l.Log("acquiring test network lock") - lock.Lock() - - network := &Network{ - Logger: l, - BaseDir: baseDir, - Validators: make([]*Validator, cfg.NumValidators), - Config: cfg, - } - - l.Logf("preparing test network with chain-id \"%s\"\n", cfg.ChainID) - - monikers := make([]string, cfg.NumValidators) - nodeIDs := make([]string, cfg.NumValidators) - valPubKeys := make([]cryptotypes.PubKey, cfg.NumValidators) - cmtConfigs := make([]*cmtcfg.Config, cfg.NumValidators) - - var ( - genAccounts []authtypes.GenesisAccount - genBalances []banktypes.Balance - genFiles []string - ) - - buf := bufio.NewReader(os.Stdin) - - // generate private keys, node IDs, and initial transactions - for i := 0; i < cfg.NumValidators; i++ { - appCfg := srvconfig.DefaultConfig() - appCfg.Pruning = cfg.PruningStrategy - appCfg.MinGasPrices = cfg.MinGasPrices - appCfg.API.Enable = true - appCfg.API.Swagger = false - appCfg.Telemetry.Enabled = false - - viper := viper.New() - // Create default cometbft config for each validator - cmtCfg := client.GetConfigFromViper(viper) - - cmtCfg.Consensus.TimeoutCommit = cfg.TimeoutCommit - - // Only allow the first validator to expose an RPC, API and gRPC - // server/client due to CometBFT in-process constraints. - apiAddr := "" - cmtCfg.RPC.ListenAddress = "" - appCfg.GRPC.Enable = false - apiListenAddr := "" - if i == 0 { - if cfg.APIAddress != "" { - apiListenAddr = cfg.APIAddress - } else { - if len(portPool) == 0 { - return nil, errors.New("failed to get port for API server") - } - port := <-portPool - apiListenAddr = fmt.Sprintf("tcp://127.0.0.1:%s", port) - } - - appCfg.API.Address = apiListenAddr - apiURL, err := url.Parse(apiListenAddr) - if err != nil { - return nil, err - } - apiAddr = fmt.Sprintf("http://%s:%s", apiURL.Hostname(), apiURL.Port()) - - if cfg.RPCAddress != "" { - cmtCfg.RPC.ListenAddress = cfg.RPCAddress - } else { - if len(portPool) == 0 { - return nil, errors.New("failed to get port for RPC server") - } - port := <-portPool - cmtCfg.RPC.ListenAddress = fmt.Sprintf("tcp://127.0.0.1:%s", port) - } - - if cfg.GRPCAddress != "" { - appCfg.GRPC.Address = cfg.GRPCAddress - } else { - if len(portPool) == 0 { - return nil, errors.New("failed to get port for GRPC server") - } - port := <-portPool - appCfg.GRPC.Address = fmt.Sprintf("127.0.0.1:%s", port) - } - appCfg.GRPC.Enable = true - } - - logger := log.NewNopLogger() - if cfg.EnableLogging { - logger = log.NewLogger(os.Stdout) // TODO(mr): enable selection of log destination. - } - - nodeDirName := fmt.Sprintf("node%d", i) - nodeDir := filepath.Join(network.BaseDir, nodeDirName, "simd") - clientDir := filepath.Join(network.BaseDir, nodeDirName, "simcli") - gentxsDir := filepath.Join(network.BaseDir, "gentxs") - - err := os.MkdirAll(filepath.Join(nodeDir, "config"), 0o755) - if err != nil { - return nil, err - } - - err = os.MkdirAll(clientDir, 0o755) - if err != nil { - return nil, err - } - - cmtCfg.SetRoot(nodeDir) - cmtCfg.Moniker = nodeDirName - monikers[i] = nodeDirName - - if len(portPool) == 0 { - return nil, errors.New("failed to get port for Proxy server") - } - port := <-portPool - proxyAddr := fmt.Sprintf("tcp://127.0.0.1:%s", port) - cmtCfg.ProxyApp = proxyAddr - - if len(portPool) == 0 { - return nil, errors.New("failed to get port for Proxy server") - } - port = <-portPool - p2pAddr := fmt.Sprintf("tcp://127.0.0.1:%s", port) - cmtCfg.P2P.ListenAddress = p2pAddr - cmtCfg.P2P.AddrBookStrict = false - cmtCfg.P2P.AllowDuplicateIP = true - - cmtConfigs[i] = cmtCfg - - var mnemonic string - if i < len(cfg.Mnemonics) { - mnemonic = cfg.Mnemonics[i] - } - - nodeID, pubKey, err := genutil.InitializeNodeValidatorFilesFromMnemonic(cmtCfg, mnemonic, ed25519.PrivKeyName) - if err != nil { - return nil, err - } - - nodeIDs[i] = nodeID - valPubKeys[i] = pubKey - - kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, clientDir, buf, cfg.Codec, cfg.KeyringOptions...) - if err != nil { - return nil, err - } - - keyringAlgos, _ := kb.SupportedAlgorithms() - algo, err := keyring.NewSigningAlgoFromString(cfg.SigningAlgo, keyringAlgos) - if err != nil { - return nil, err - } - - addr, secret, err := testutil.GenerateSaveCoinKey(kb, nodeDirName, mnemonic, true, algo, sdk.GetFullBIP44Path()) - if err != nil { - return nil, err - } - - // if PrintMnemonic is set to true, we print the first validator node's secret to the network's logger - // for debugging and manual testing - if cfg.PrintMnemonic && i == 0 { - printMnemonic(l, secret) - } - - info := map[string]string{"secret": secret} - infoBz, err := json.Marshal(info) - if err != nil { - return nil, err - } - - // save private key seed words - err = writeFile(fmt.Sprintf("%v.json", "key_seed"), clientDir, infoBz) - if err != nil { - return nil, err - } - - balances := sdk.NewCoins( - sdk.NewCoin(fmt.Sprintf("%stoken", nodeDirName), cfg.AccountTokens), - sdk.NewCoin(cfg.BondDenom, cfg.StakingTokens), - ) - - genFiles = append(genFiles, cmtCfg.GenesisFile()) - genBalances = append(genBalances, banktypes.Balance{Address: addr.String(), Coins: balances.Sort()}) - genAccounts = append(genAccounts, authtypes.NewBaseAccount(addr, nil, 0, 0)) - - commission, err := sdkmath.LegacyNewDecFromStr("0.5") - if err != nil { - return nil, err - } - - createValMsg, err := stakingtypes.NewMsgCreateValidator( - sdk.ValAddress(addr).String(), - valPubKeys[i], - sdk.NewCoin(cfg.BondDenom, cfg.BondedTokens), - stakingtypes.NewDescription(nodeDirName, "", "", "", "", &stakingtypes.Metadata{}), - stakingtypes.NewCommissionRates(commission, sdkmath.LegacyOneDec(), sdkmath.LegacyOneDec()), - sdkmath.OneInt(), - ) - if err != nil { - return nil, err - } - - p2pURL, err := url.Parse(p2pAddr) - if err != nil { - return nil, err - } - - memo := fmt.Sprintf("%s@%s:%s", nodeIDs[i], p2pURL.Hostname(), p2pURL.Port()) - fee := sdk.NewCoins(sdk.NewCoin(fmt.Sprintf("%stoken", nodeDirName), sdkmath.NewInt(0))) - txBuilder := cfg.TxConfig.NewTxBuilder() - err = txBuilder.SetMsgs(createValMsg) - if err != nil { - return nil, err - } - txBuilder.SetFeeAmount(fee) // Arbitrary fee - txBuilder.SetGasLimit(1000000) // Need at least 100386 - txBuilder.SetMemo(memo) - - txFactory := tx.Factory{} - txFactory = txFactory. - WithChainID(cfg.ChainID). - WithMemo(memo). - WithKeybase(kb). - WithTxConfig(cfg.TxConfig) - - clientCtx := client.Context{}. - WithKeyringDir(clientDir). - WithKeyring(kb). - WithHomeDir(cmtCfg.RootDir). - WithChainID(cfg.ChainID). - WithInterfaceRegistry(cfg.InterfaceRegistry). - WithCodec(cfg.Codec). - WithLegacyAmino(cfg.LegacyAmino). - WithTxConfig(cfg.TxConfig). - WithAccountRetriever(cfg.AccountRetriever). - WithAddressCodec(cfg.AddressCodec). - WithValidatorAddressCodec(cfg.ValidatorAddressCodec). - WithConsensusAddressCodec(cfg.ConsensusAddressCodec). - WithNodeURI(cmtCfg.RPC.ListenAddress). - WithCmdContext(context.TODO()) - - if err := tx.Sign(clientCtx, txFactory, nodeDirName, txBuilder, true); err != nil { - return nil, err - } - - txBz, err := cfg.TxConfig.TxJSONEncoder()(txBuilder.GetTx()) - if err != nil { - return nil, err - } - err = writeFile(fmt.Sprintf("%v.json", nodeDirName), gentxsDir, txBz) - if err != nil { - return nil, err - } - err = srvconfig.WriteConfigFile(filepath.Join(nodeDir, "config", "app.toml"), appCfg) - if err != nil { - return nil, err - } - - // Provide ChainID here since we can't modify it in the Comet config. - viper.Set(flags.FlagChainID, cfg.ChainID) - - network.Validators[i] = &Validator{ - AppConfig: appCfg, - clientCtx: clientCtx, - viper: viper, - logger: logger, - dir: filepath.Join(network.BaseDir, nodeDirName), - nodeID: nodeID, - pubKey: pubKey, - moniker: nodeDirName, - rPCAddress: cmtCfg.RPC.ListenAddress, - p2PAddress: cmtCfg.P2P.ListenAddress, - aPIAddress: apiAddr, - address: addr, - valAddress: sdk.ValAddress(addr), - } - } - - err := initGenFiles(cfg, genAccounts, genBalances, genFiles) - if err != nil { - return nil, err - } - err = collectGenFiles(cfg, network.Validators, cmtConfigs, network.BaseDir) - if err != nil { - return nil, err - } - - l.Log("starting test network...") - for idx, v := range network.Validators { - if err := startInProcess(cfg, v); err != nil { - return nil, err - } - l.Log("started validator", idx) - } - - height, err := network.LatestHeight() - if err != nil { - return nil, err - } - - l.Log("started test network at height:", height) - - // Ensure we cleanup in case any test was abruptly halted (e.g. SIGINT) as any - // defer in a test would not be called. - trapSignal(network.Cleanup) - - return network, nil -} - -// trapSignal traps SIGINT and SIGTERM and calls os.Exit once a signal is received. -func trapSignal(cleanupFunc func()) { - sigs := make(chan os.Signal, 1) - signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) - - go func() { - sig := <-sigs - - if cleanupFunc != nil { - cleanupFunc() - } - exitCode := 128 - - switch sig { - case syscall.SIGINT: - exitCode += int(syscall.SIGINT) - case syscall.SIGTERM: - exitCode += int(syscall.SIGTERM) - } - - os.Exit(exitCode) - }() -} - -// LatestHeight returns the latest height of the network or an error if the -// query fails or no validators exist. -func (n *Network) LatestHeight() (int64, error) { - if len(n.Validators) == 0 { - return 0, errors.New("no validators available") - } - - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - - timeout := time.NewTimer(time.Second * 5) - defer timeout.Stop() - - var latestHeight atomic.Int64 - val := n.Validators[0] - queryClient := cmtservice.NewServiceClient(val.clientCtx) - - for { - select { - case <-timeout.C: - return latestHeight.Load(), errors.New("timeout exceeded waiting for block") - case <-ticker.C: - done := make(chan struct{}) - go func() { - res, err := queryClient.GetLatestBlock(context.Background(), &cmtservice.GetLatestBlockRequest{}) - if err == nil && res != nil { - latestHeight.Store(res.SdkBlock.Header.Height) - } - done <- struct{}{} - }() - select { - case <-timeout.C: - return latestHeight.Load(), errors.New("timeout exceeded waiting for block") - case <-done: - if latestHeight.Load() != 0 { - return latestHeight.Load(), nil - } - } - } - } -} - -// WaitForHeight performs a blocking check where it waits for a block to be -// committed after a given block. If that height is not reached within a timeout, -// an error is returned. Regardless, the latest height queried is returned. -func (n *Network) WaitForHeight(h int64) (int64, error) { - return n.WaitForHeightWithTimeout(h, 10*time.Second) -} - -func (n *Network) GetValidators() []ValidatorI { - var vals []ValidatorI - for _, val := range n.Validators { - vals = append(vals, val) - } - return vals -} - -// WaitForHeightWithTimeout is the same as WaitForHeight except the caller can -// provide a custom timeout. -func (n *Network) WaitForHeightWithTimeout(h int64, t time.Duration) (int64, error) { - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - - timeout := time.NewTimer(t) - defer timeout.Stop() - - if len(n.Validators) == 0 { - return 0, errors.New("no validators available") - } - - var latestHeight int64 - val := n.Validators[0] - queryClient := cmtservice.NewServiceClient(val.clientCtx) - - for { - select { - case <-timeout.C: - return latestHeight, errors.New("timeout exceeded waiting for block") - case <-ticker.C: - - res, err := queryClient.GetLatestBlock(context.Background(), &cmtservice.GetLatestBlockRequest{}) - if err == nil && res != nil { - latestHeight = res.GetSdkBlock().Header.Height - if latestHeight >= h { - return latestHeight, nil - } - } - } - } -} - -// RetryForBlocks will wait for the next block and execute the function provided. -// It will do this until the function returns a nil error or until the number of -// blocks has been reached. -func (n *Network) RetryForBlocks(retryFunc func() error, blocks int) error { - for i := 0; i < blocks; i++ { - _ = n.WaitForNextBlock() - err := retryFunc() - if err == nil { - return nil - } - // we've reached the last block to wait, return the error - if i == blocks-1 { - return err - } - } - return nil -} - -// WaitForNextBlock waits for the next block to be committed, returning an error -// upon failure. -func (n *Network) WaitForNextBlock() error { - lastBlock, err := n.LatestHeight() - if err != nil { - return err - } - - _, err = n.WaitForHeight(lastBlock + 1) - if err != nil { - return err - } - - return err -} - -// Cleanup removes the root testing (temporary) directory and stops both the -// CometBFT and API services. It allows other callers to create and start -// test networks. This method must be called when a test is finished, typically -// in a defer. -func (n *Network) Cleanup() { - defer func() { - lock.Unlock() - n.Logger.Log("released test network lock") - }() - - n.Logger.Log("cleaning up test network...") - - for _, v := range n.Validators { - // cancel the validator's context which will signal to the gRPC and API - // goroutines that they should gracefully exit. - v.cancelFn() - - if err := v.errGroup.Wait(); err != nil { - n.Logger.Log("unexpected error waiting for validator gRPC and API processes to exit", "err", err) - } - - if v.tmNode != nil && v.tmNode.IsRunning() { - if err := v.tmNode.Stop(); err != nil { - n.Logger.Log("failed to stop validator CometBFT node", "err", err) - } - } - - if v.grpcWeb != nil { - _ = v.grpcWeb.Close() - } - - if v.app != nil { - if err := v.app.Close(); err != nil { - n.Logger.Log("failed to stop validator ABCI application", "err", err) - } - } - } - - time.Sleep(100 * time.Millisecond) - - if n.Config.CleanupDir { - _ = os.RemoveAll(n.BaseDir) - } - - n.Logger.Log("finished cleaning up test network") -} - -// printMnemonic prints a provided mnemonic seed phrase on a network logger -// for debugging and manual testing -func printMnemonic(l Logger, secret string) { - lines := []string{ - "THIS MNEMONIC IS FOR TESTING PURPOSES ONLY", - "DO NOT USE IN PRODUCTION", - "", - strings.Join(strings.Fields(secret)[0:8], " "), - strings.Join(strings.Fields(secret)[8:16], " "), - strings.Join(strings.Fields(secret)[16:24], " "), - } - - lineLengths := make([]int, len(lines)) - for i, line := range lines { - lineLengths[i] = len(line) - } - - maxLineLength := 0 - for _, lineLen := range lineLengths { - if lineLen > maxLineLength { - maxLineLength = lineLen - } - } - - l.Log("\n") - l.Log(strings.Repeat("+", maxLineLength+8)) - for _, line := range lines { - l.Logf("++ %s ++\n", centerText(line, maxLineLength)) - } - l.Log(strings.Repeat("+", maxLineLength+8)) - l.Log("\n") -} - -// centerText centers text across a fixed width, filling either side with whitespace buffers -func centerText(text string, width int) string { - textLen := len(text) - leftBuffer := strings.Repeat(" ", (width-textLen)/2) - rightBuffer := strings.Repeat(" ", (width-textLen)/2+(width-textLen)%2) - - return fmt.Sprintf("%s%s%s", leftBuffer, text, rightBuffer) -} diff --git a/testutil/network/util.go b/testutil/network/util.go deleted file mode 100644 index 08ee1b0c5d99..000000000000 --- a/testutil/network/util.go +++ /dev/null @@ -1,269 +0,0 @@ -package network - -import ( - "context" - "encoding/json" - "fmt" - "net" - "os" - "path/filepath" - - cmtcfg "github.com/cometbft/cometbft/config" - cmtcrypto "github.com/cometbft/cometbft/crypto" - "github.com/cometbft/cometbft/crypto/ed25519" - "github.com/cometbft/cometbft/node" - "github.com/cometbft/cometbft/p2p" - pvm "github.com/cometbft/cometbft/privval" - "github.com/cometbft/cometbft/proxy" - "github.com/cometbft/cometbft/rpc/client/local" - cmttime "github.com/cometbft/cometbft/types/time" - "golang.org/x/sync/errgroup" - - "cosmossdk.io/log" - banktypes "cosmossdk.io/x/bank/types" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/server" - "github.com/cosmos/cosmos-sdk/server/api" - servergrpc "github.com/cosmos/cosmos-sdk/server/grpc" - servercmtlog "github.com/cosmos/cosmos-sdk/server/log" - "github.com/cosmos/cosmos-sdk/testutil" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" -) - -func startInProcess(cfg Config, val *Validator) error { - logger := val.GetLogger() - cmtCfg := client.GetConfigFromViper(val.GetViper()) - cmtCfg.Instrumentation.Prometheus = false - - if err := val.AppConfig.ValidateBasic(); err != nil { - return err - } - - nodeKey, err := p2p.LoadOrGenNodeKey(cmtCfg.NodeKeyFile()) - if err != nil { - return err - } - - app := cfg.AppConstructor(val) - val.app = app - - appGenesisProvider := func() (node.ChecksummedGenesisDoc, error) { - appGenesis, err := genutiltypes.AppGenesisFromFile(cmtCfg.GenesisFile()) - if err != nil { - return node.ChecksummedGenesisDoc{ - Sha256Checksum: []byte{}, - }, err - } - gen, err := appGenesis.ToGenesisDoc() - if err != nil { - return node.ChecksummedGenesisDoc{ - Sha256Checksum: []byte{}, - }, err - } - return node.ChecksummedGenesisDoc{GenesisDoc: gen, Sha256Checksum: make([]byte, 0)}, nil - } - - cmtApp := server.NewCometABCIWrapper(app) - pv, err := pvm.LoadOrGenFilePV(cmtCfg.PrivValidatorKeyFile(), cmtCfg.PrivValidatorStateFile(), func() (cmtcrypto.PrivKey, error) { - return ed25519.GenPrivKey(), nil - }) - if err != nil { - return err - } - - tmNode, err := node.NewNode( //resleak:notresource - context.TODO(), - cmtCfg, - pv, - nodeKey, - proxy.NewLocalClientCreator(cmtApp), - appGenesisProvider, - cmtcfg.DefaultDBProvider, - node.DefaultMetricsProvider(cmtCfg.Instrumentation), - servercmtlog.CometLoggerWrapper{Logger: logger.With("module", val.moniker)}, - ) - if err != nil { - return err - } - - if err := tmNode.Start(); err != nil { - return err - } - val.tmNode = tmNode - - if val.rPCAddress != "" { - val.rPCClient = local.New(tmNode) - } - - // We'll need a RPC client if the validator exposes a gRPC or REST endpoint. - if val.aPIAddress != "" || val.AppConfig.GRPC.Enable { - val.clientCtx = val.clientCtx. - WithClient(val.rPCClient) - - app.RegisterTxService(val.clientCtx) - app.RegisterTendermintService(val.clientCtx) - app.RegisterNodeService(val.clientCtx, *val.AppConfig) - } - - ctx := context.Background() - ctx, val.cancelFn = context.WithCancel(ctx) - val.errGroup, ctx = errgroup.WithContext(ctx) - - grpcCfg := val.AppConfig.GRPC - - if grpcCfg.Enable { - grpcSrv, err := servergrpc.NewGRPCServer(val.clientCtx, app, grpcCfg) - if err != nil { - return err - } - - // Start the gRPC server in a goroutine. Note, the provided ctx will ensure - // that the server is gracefully shut down. - val.errGroup.Go(func() error { - return servergrpc.StartGRPCServer(ctx, logger.With(log.ModuleKey, "grpc-server"), grpcCfg, grpcSrv) - }) - - val.grpc = grpcSrv - } - - if val.aPIAddress != "" { - apiSrv := api.New(val.clientCtx, logger.With(log.ModuleKey, "api-server"), val.grpc) - app.RegisterAPIRoutes(apiSrv, val.AppConfig.API) - - val.errGroup.Go(func() error { - return apiSrv.Start(ctx, *val.AppConfig) - }) - - val.api = apiSrv - } - - return nil -} - -func collectGenFiles(cfg Config, vals []*Validator, cmtConfigs []*cmtcfg.Config, outputDir string) error { - genTime := cfg.GenesisTime - if genTime.IsZero() { - genTime = cmttime.Now() - } - - for i := 0; i < cfg.NumValidators; i++ { - cmtCfg := cmtConfigs[i] - - nodeDir := filepath.Join(outputDir, vals[i].moniker, "simd") - gentxsDir := filepath.Join(outputDir, "gentxs") - - cmtCfg.Moniker = vals[i].moniker - cmtCfg.SetRoot(nodeDir) - - initCfg := genutiltypes.NewInitConfig(cfg.ChainID, gentxsDir, vals[i].nodeID, vals[i].pubKey) - - genFile := cmtCfg.GenesisFile() - appGenesis, err := genutiltypes.AppGenesisFromFile(genFile) - if err != nil { - return err - } - - appState, err := genutil.GenAppStateFromConfig(cfg.Codec, cfg.TxConfig, - cmtCfg, initCfg, appGenesis, genutiltypes.DefaultMessageValidator, - cfg.ValidatorAddressCodec, cfg.AddressCodec) - if err != nil { - return err - } - - // overwrite each validator's genesis file to have a canonical genesis time - if err := genutil.ExportGenesisFileWithTime(genFile, cfg.ChainID, nil, appState, genTime); err != nil { - return err - } - - v := vals[i].GetViper() - v.Set(flags.FlagHome, nodeDir) - v.SetConfigType("toml") - v.SetConfigName("config") - v.AddConfigPath(filepath.Join(nodeDir, "config")) - err = v.ReadInConfig() - if err != nil { - return err - } - } - - return nil -} - -func initGenFiles(cfg Config, genAccounts []authtypes.GenesisAccount, genBalances []banktypes.Balance, genFiles []string) error { - // set the accounts in the genesis state - var authGenState authtypes.GenesisState - cfg.Codec.MustUnmarshalJSON(cfg.GenesisState[testutil.AuthModuleName], &authGenState) - - accounts, err := authtypes.PackAccounts(genAccounts) - if err != nil { - return err - } - - authGenState.Accounts = append(authGenState.Accounts, accounts...) - cfg.GenesisState[testutil.AuthModuleName] = cfg.Codec.MustMarshalJSON(&authGenState) - - // set the balances in the genesis state - var bankGenState banktypes.GenesisState - cfg.Codec.MustUnmarshalJSON(cfg.GenesisState[testutil.BankModuleName], &bankGenState) - - bankGenState.Balances = append(bankGenState.Balances, genBalances...) - cfg.GenesisState[testutil.BankModuleName] = cfg.Codec.MustMarshalJSON(&bankGenState) - - appGenStateJSON, err := json.MarshalIndent(cfg.GenesisState, "", " ") - if err != nil { - return err - } - - appGenesis := genutiltypes.AppGenesis{ - ChainID: cfg.ChainID, - AppState: appGenStateJSON, - Consensus: &genutiltypes.ConsensusGenesis{ - Validators: nil, - }, - } - - // generate empty genesis files for each validator and save - for i := 0; i < cfg.NumValidators; i++ { - if err := appGenesis.SaveAs(genFiles[i]); err != nil { - return err - } - } - - return nil -} - -func writeFile(name, dir string, contents []byte) error { - file := filepath.Join(dir, name) - - if err := os.MkdirAll(dir, 0o755); err != nil { - return fmt.Errorf("could not create directory %q: %w", dir, err) - } - - if err := os.WriteFile(file, contents, 0o600); err != nil { - return err - } - - return nil -} - -// Get a free address for a test CometBFT server -// protocol is either tcp, http, etc -func FreeTCPAddr() (addr, port string, closeFn func() error, err error) { - l, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - return "", "", nil, err - } - - closeFn = func() error { - return l.Close() - } - - portI := l.Addr().(*net.TCPAddr).Port - port = fmt.Sprintf("%d", portI) - addr = fmt.Sprintf("tcp://127.0.0.1:%s", port) - return -} diff --git a/testutil/network/validator.go b/testutil/network/validator.go deleted file mode 100644 index d3ba6b40fad5..000000000000 --- a/testutil/network/validator.go +++ /dev/null @@ -1,91 +0,0 @@ -package network - -import ( - "context" - "net/http" - - "github.com/cometbft/cometbft/node" - cmtclient "github.com/cometbft/cometbft/rpc/client" - "github.com/spf13/viper" - "golang.org/x/sync/errgroup" - "google.golang.org/grpc" - - "cosmossdk.io/log" - - "github.com/cosmos/cosmos-sdk/client" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - "github.com/cosmos/cosmos-sdk/server/api" - srvconfig "github.com/cosmos/cosmos-sdk/server/config" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// Validator defines an in-process CometBFT validator node. Through this object, -// a client can make RPC and API calls and interact with any client command -// or handler. -type Validator struct { - AppConfig *srvconfig.Config - clientCtx client.Context - viper *viper.Viper - logger log.Logger - dir string - nodeID string - pubKey cryptotypes.PubKey - moniker string - aPIAddress string - rPCAddress string - p2PAddress string - address sdk.AccAddress - valAddress sdk.ValAddress - rPCClient cmtclient.Client - - app servertypes.Application - tmNode *node.Node - api *api.Server - grpc *grpc.Server - grpcWeb *http.Server - errGroup *errgroup.Group - cancelFn context.CancelFunc -} - -var _ ValidatorI = &Validator{} - -func (v *Validator) GetViper() *viper.Viper { - return v.viper -} - -func (v *Validator) GetLogger() log.Logger { - return v.logger -} - -func (v *Validator) GetClientCtx() client.Context { - return v.clientCtx -} - -func (v *Validator) GetAppConfig() *srvconfig.Config { - return v.AppConfig -} - -func (v *Validator) GetAddress() sdk.AccAddress { - return v.address -} - -func (v *Validator) GetValAddress() sdk.ValAddress { - return v.valAddress -} - -func (v *Validator) GetAPIAddress() string { - return v.aPIAddress -} - -func (v *Validator) GetRPCAddress() string { - return v.rPCAddress -} - -func (v *Validator) GetPubKey() cryptotypes.PubKey { - return v.pubKey -} - -func (v *Validator) GetMoniker() string { - return v.moniker -} From 899099f1d6edba0f1253cf78f54139369de8cd46 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 06:31:14 -0800 Subject: [PATCH 43/62] chore: fix spelling errors (#22829) Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> Co-authored-by: Julien Robert --- .github/workflows/misspell.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/misspell.yml b/.github/workflows/misspell.yml index 641ee2d356a4..5b3129caf977 100644 --- a/.github/workflows/misspell.yml +++ b/.github/workflows/misspell.yml @@ -19,7 +19,7 @@ jobs: continue-on-error: true run: | sudo apt-get install codespell -y - codespell -w --skip="*.pulsar.go,*.pb.go,*.pb.gw.go,*.cosmos_orm.go,*.json,*.git,*.js,crypto/keys,fuzz,*.h,proto/tendermint,*.bin,go.sum,go.mod" --ignore-words=.github/.codespellignore + codespell -w --skip="*.pulsar.go,*.pb.go,*.pb.gw.go,*.cosmos_orm.go,*.json,*.git,*.js,crypto/keys,fuzz,*.h,proto/tendermint,*.bin,go.sum,go.mod,.github" --ignore-words=.github/.codespellignore - uses: peter-evans/create-pull-request@v7 if: github.event_name != 'pull_request' with: From a38a6a2c8bc8284a3e827f25c47efbcab55f70e6 Mon Sep 17 00:00:00 2001 From: Hieu Vu <72878483+hieuvubk@users.noreply.github.com> Date: Wed, 11 Dec 2024 22:49:53 +0700 Subject: [PATCH 44/62] refactor(server/v2/cometbft): Handle non-module service queries (#22803) Co-authored-by: Julien Robert --- server/v2/cometbft/abci.go | 67 +++----- server/v2/cometbft/grpc.go | 286 ++++++++++++++++++++++++++++++- server/v2/cometbft/server.go | 4 + simapp/v2/simdv2/cmd/commands.go | 1 + 4 files changed, 306 insertions(+), 52 deletions(-) diff --git a/server/v2/cometbft/abci.go b/server/v2/cometbft/abci.go index 1a3f870b266e..0114d9335676 100644 --- a/server/v2/cometbft/abci.go +++ b/server/v2/cometbft/abci.go @@ -15,6 +15,7 @@ import ( "google.golang.org/protobuf/reflect/protoregistry" "cosmossdk.io/collections" + addresscodec "cosmossdk.io/core/address" appmodulev2 "cosmossdk.io/core/appmodule/v2" "cosmossdk.io/core/comet" corecontext "cosmossdk.io/core/context" @@ -36,9 +37,6 @@ import ( consensustypes "cosmossdk.io/x/consensus/types" "github.com/cosmos/cosmos-sdk/codec" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - txtypes "github.com/cosmos/cosmos-sdk/types/tx" ) const ( @@ -86,8 +84,10 @@ type consensus[T transaction.Tx] struct { addrPeerFilter types.PeerFilter // filter peers by address and port idPeerFilter types.PeerFilter // filter peers by node ID - queryHandlersMap map[string]appmodulev2.Handler - getProtoRegistry func() (*protoregistry.Files, error) + queryHandlersMap map[string]appmodulev2.Handler + getProtoRegistry func() (*protoregistry.Files, error) + consensusAddressCodec addresscodec.Codec + cfgMap server.ConfigMap } // CheckTx implements types.Application. @@ -184,6 +184,16 @@ func (c *consensus[T]) Query(ctx context.Context, req *abciproto.QueryRequest) ( return resp, err } + // when a client did not provide a query height, manually inject the latest + // for modules queries, AppManager does it automatically + if req.Height == 0 { + latestVersion, err := c.store.GetLatestVersion() + if err != nil { + return nil, err + } + req.Height = int64(latestVersion) + } + // this error most probably means that we can't handle it with a proto message, so // it must be an app/p2p/store query path := splitABCIQueryPath(req.Path) @@ -238,48 +248,15 @@ func (c *consensus[T]) maybeRunGRPCQuery(ctx context.Context, req *abci.QueryReq handlerFullName = string(md.Input().FullName()) } - // special case for simulation as it is an external gRPC registered on the grpc server component + // special case for non-module services as they are external gRPC registered on the grpc server component // and not on the app itself, so it won't pass the router afterwards. - if req.Path == "/cosmos.tx.v1beta1.Service/Simulate" { - simulateRequest := &txtypes.SimulateRequest{} - err = gogoproto.Unmarshal(req.Data, simulateRequest) - if err != nil { - return nil, true, fmt.Errorf("unable to decode gRPC request with path %s from ABCI.Query: %w", req.Path, err) - } - tx, err := c.txCodec.Decode(simulateRequest.TxBytes) - if err != nil { - return nil, true, fmt.Errorf("failed to decode tx: %w", err) - } - - txResult, _, err := c.app.Simulate(ctx, tx) - if err != nil { - return nil, true, fmt.Errorf("failed with gas used: '%d': %w", txResult.GasUsed, err) - } - - msgResponses := make([]*codectypes.Any, 0, len(txResult.Resp)) - // pack the messages into Any - for _, msg := range txResult.Resp { - anyMsg, err := codectypes.NewAnyWithValue(msg) - if err != nil { - return nil, true, fmt.Errorf("failed to pack message response: %w", err) - } - - msgResponses = append(msgResponses, anyMsg) - } - - resp := &txtypes.SimulateResponse{ - GasInfo: &sdk.GasInfo{ - GasUsed: txResult.GasUsed, - GasWanted: txResult.GasWanted, - }, - Result: &sdk.Result{ - MsgResponses: msgResponses, - }, - } - - res, err := queryResponse(resp, req.Height) - return res, true, err + externalResp, err := c.maybeHandleExternalServices(ctx, req) + if err != nil { + return nil, true, err + } else if externalResp != nil { + resp, err = queryResponse(externalResp, req.Height) + return resp, true, err } handler, found := c.queryHandlersMap[handlerFullName] diff --git a/server/v2/cometbft/grpc.go b/server/v2/cometbft/grpc.go index 170475246d35..cfc682e47f31 100644 --- a/server/v2/cometbft/grpc.go +++ b/server/v2/cometbft/grpc.go @@ -2,6 +2,7 @@ package cometbft import ( "context" + "errors" "fmt" "strings" @@ -17,13 +18,19 @@ import ( "cosmossdk.io/core/server" corestore "cosmossdk.io/core/store" "cosmossdk.io/core/transaction" + "cosmossdk.io/log" storeserver "cosmossdk.io/server/v2/store" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" + "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/std" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" txtypes "github.com/cosmos/cosmos-sdk/types/tx" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" @@ -46,7 +53,7 @@ func gRPCServiceRegistrar[T transaction.Tx]( ) func(srv *grpc.Server) error { return func(srv *grpc.Server) error { cmtservice.RegisterServiceServer(srv, cmtservice.NewQueryServer(clientCtx.Client, consensus.Query, clientCtx.ConsensusAddressCodec)) - txtypes.RegisterServiceServer(srv, txServer[T]{clientCtx, txCodec, app}) + txtypes.RegisterServiceServer(srv, txServer[T]{clientCtx, txCodec, app, consensus}) nodeservice.RegisterServiceServer(srv, nodeServer[T]{cfg, cometBFTAppConfig, consensus}) return nil @@ -57,6 +64,7 @@ type txServer[T transaction.Tx] struct { clientCtx client.Context txCodec transaction.Codec[T] app appSimulator[T] + consensus abci.Application } // BroadcastTx implements tx.ServiceServer. @@ -65,8 +73,84 @@ func (t txServer[T]) BroadcastTx(ctx context.Context, req *txtypes.BroadcastTxRe } // GetBlockWithTxs implements tx.ServiceServer. -func (t txServer[T]) GetBlockWithTxs(context.Context, *txtypes.GetBlockWithTxsRequest) (*txtypes.GetBlockWithTxsResponse, error) { - return nil, status.Error(codes.Unimplemented, "not implemented") +func (t txServer[T]) GetBlockWithTxs(ctx context.Context, req *txtypes.GetBlockWithTxsRequest) (*txtypes.GetBlockWithTxsResponse, error) { + logger := log.NewNopLogger() + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be nil") + } + + resp, err := t.consensus.Info(ctx, &abci.InfoRequest{}) + if err != nil { + return nil, err + } + currentHeight := resp.LastBlockHeight + + if req.Height < 1 || req.Height > currentHeight { + return nil, sdkerrors.ErrInvalidHeight.Wrapf("requested height %d but height must not be less than 1 "+ + "or greater than the current height %d", req.Height, currentHeight) + } + + node, err := t.clientCtx.GetNode() + if err != nil { + return nil, err + } + + blockID, block, err := cmtservice.GetProtoBlock(ctx, node, &req.Height) + if err != nil { + return nil, err + } + + var offset, limit uint64 + if req.Pagination != nil { + offset = req.Pagination.Offset + limit = req.Pagination.Limit + } else { + offset = 0 + limit = query.DefaultLimit + } + + blockTxs := block.Data.Txs + blockTxsLn := uint64(len(blockTxs)) + txs := make([]*txtypes.Tx, 0, limit) + if offset >= blockTxsLn && blockTxsLn != 0 { + return nil, sdkerrors.ErrInvalidRequest.Wrapf("out of range: cannot paginate %d txs with offset %d and limit %d", blockTxsLn, offset, limit) + } + decodeTxAt := func(i uint64) error { + tx := blockTxs[i] + txb, err := t.clientCtx.TxConfig.TxDecoder()(tx) + fmt.Println("TxDecoder", txb, err) + if err != nil { + return err + } + p, err := txb.(interface{ AsTx() (*txtypes.Tx, error) }).AsTx() + if err != nil { + return err + } + txs = append(txs, p) + return nil + } + if req.Pagination != nil && req.Pagination.Reverse { + for i, count := offset, uint64(0); i > 0 && count != limit; i, count = i-1, count+1 { + if err = decodeTxAt(i); err != nil { + logger.Error("failed to decode tx", "error", err) + } + } + } else { + for i, count := offset, uint64(0); i < blockTxsLn && count != limit; i, count = i+1, count+1 { + if err = decodeTxAt(i); err != nil { + logger.Error("failed to decode tx", "error", err) + } + } + } + + return &txtypes.GetBlockWithTxsResponse{ + Txs: txs, + BlockId: &blockID, + Block: block, + Pagination: &query.PageResponse{ + Total: blockTxsLn, + }, + }, nil } // GetTx implements tx.ServiceServer. @@ -100,8 +184,33 @@ func (t txServer[T]) GetTx(ctx context.Context, req *txtypes.GetTxRequest) (*txt } // GetTxsEvent implements tx.ServiceServer. -func (t txServer[T]) GetTxsEvent(context.Context, *txtypes.GetTxsEventRequest) (*txtypes.GetTxsEventResponse, error) { - return nil, status.Error(codes.Unimplemented, "not implemented") +func (t txServer[T]) GetTxsEvent(ctx context.Context, req *txtypes.GetTxsEventRequest) (*txtypes.GetTxsEventResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be nil") + } + + orderBy := parseOrderBy(req.OrderBy) + + result, err := authtx.QueryTxsByEvents(t.clientCtx, int(req.Page), int(req.Limit), req.Query, orderBy) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + txsList := make([]*txtypes.Tx, len(result.Txs)) + for i, tx := range result.Txs { + protoTx, ok := tx.Tx.GetCachedValue().(*txtypes.Tx) + if !ok { + return nil, status.Errorf(codes.Internal, "getting cached value failed expected %T, got %T", txtypes.Tx{}, tx.Tx.GetCachedValue()) + } + + txsList[i] = protoTx + } + + return &txtypes.GetTxsEventResponse{ + Txs: txsList, + TxResponses: result.Txs, + Total: result.TotalCount, + }, nil } // Simulate implements tx.ServiceServer. @@ -159,8 +268,23 @@ func (t txServer[T]) Simulate(ctx context.Context, req *txtypes.SimulateRequest) } // TxDecode implements tx.ServiceServer. -func (t txServer[T]) TxDecode(context.Context, *txtypes.TxDecodeRequest) (*txtypes.TxDecodeResponse, error) { - return nil, status.Error(codes.Unimplemented, "not implemented") +func (t txServer[T]) TxDecode(ctx context.Context, req *txtypes.TxDecodeRequest) (*txtypes.TxDecodeResponse, error) { + if req.TxBytes == nil { + return nil, status.Error(codes.InvalidArgument, "invalid empty tx bytes") + } + + txb, err := t.clientCtx.TxConfig.TxDecoder()(req.TxBytes) + if err != nil { + return nil, err + } + + tx, err := txb.(interface{ AsTx() (*txtypes.Tx, error) }).AsTx() // TODO: maybe we can break the Tx interface to add this also + if err != nil { + return nil, err + } + return &txtypes.TxDecodeResponse{ + Tx: tx, + }, nil } // TxDecodeAmino implements tx.ServiceServer. @@ -325,3 +449,151 @@ var CometBFTAutoCLIDescriptor = &autocliv1.ServiceCommandDescriptor{ }, }, } + +func parseOrderBy(orderBy txtypes.OrderBy) string { + switch orderBy { + case txtypes.OrderBy_ORDER_BY_ASC: + return "asc" + case txtypes.OrderBy_ORDER_BY_DESC: + return "desc" + default: + return "" // Defaults to CometBFT's default, which is `asc` now. + } +} + +func (c *consensus[T]) maybeHandleExternalServices(ctx context.Context, req *abci.QueryRequest) (transaction.Msg, error) { + // Handle comet service + if strings.HasPrefix(req.Path, "/cosmos.base.tendermint.v1beta1.Service") { + rpcClient, _ := rpchttp.New(c.cfg.ConfigTomlConfig.RPC.ListenAddress) + + cometQServer := cmtservice.NewQueryServer(rpcClient, c.Query, c.consensusAddressCodec) + paths := strings.Split(req.Path, "/") + if len(paths) <= 2 { + return nil, fmt.Errorf("invalid request path: %s", req.Path) + } + + var resp transaction.Msg + var err error + switch paths[2] { + case "GetNodeInfo": + resp, err = handleExternalService(ctx, req, cometQServer.GetNodeInfo) + case "GetSyncing": + resp, err = handleExternalService(ctx, req, cometQServer.GetSyncing) + case "GetLatestBlock": + resp, err = handleExternalService(ctx, req, cometQServer.GetLatestBlock) + case "GetBlockByHeight": + resp, err = handleExternalService(ctx, req, cometQServer.GetBlockByHeight) + case "GetLatestValidatorSet": + resp, err = handleExternalService(ctx, req, cometQServer.GetLatestValidatorSet) + case "GetValidatorSetByHeight": + resp, err = handleExternalService(ctx, req, cometQServer.GetValidatorSetByHeight) + case "ABCIQuery": + resp, err = handleExternalService(ctx, req, cometQServer.ABCIQuery) + } + + return resp, err + } + + // Handle node service + if strings.HasPrefix(req.Path, "/cosmos.base.node.v1beta1.Service") { + nodeQService := nodeServer[T]{c.cfgMap, c.cfg.AppTomlConfig, c} + paths := strings.Split(req.Path, "/") + if len(paths) <= 2 { + return nil, fmt.Errorf("invalid request path: %s", req.Path) + } + + var resp transaction.Msg + var err error + switch paths[2] { + case "Config": + resp, err = handleExternalService(ctx, req, nodeQService.Config) + case "Status": + resp, err = handleExternalService(ctx, req, nodeQService.Status) + } + + return resp, err + } + + // Handle tx service + if strings.HasPrefix(req.Path, "/cosmos.tx.v1beta1.Service") { + // init simple client context + amino := codec.NewLegacyAmino() + std.RegisterLegacyAminoCodec(amino) + txConfig := authtx.NewTxConfig( + c.appCodec, + c.appCodec.InterfaceRegistry().SigningContext().AddressCodec(), + c.appCodec.InterfaceRegistry().SigningContext().ValidatorAddressCodec(), + authtx.DefaultSignModes, + ) + rpcClient, _ := client.NewClientFromNode(c.cfg.AppTomlConfig.Address) + + clientCtx := client.Context{}. + WithLegacyAmino(amino). + WithCodec(c.appCodec). + WithTxConfig(txConfig). + WithNodeURI(c.cfg.AppTomlConfig.Address). + WithClient(rpcClient) + + txService := txServer[T]{ + clientCtx: clientCtx, + txCodec: c.txCodec, + app: c.app, + consensus: c, + } + paths := strings.Split(req.Path, "/") + if len(paths) <= 2 { + return nil, fmt.Errorf("invalid request path: %s", req.Path) + } + + var resp transaction.Msg + var err error + switch paths[2] { + case "Simulate": + resp, err = handleExternalService(ctx, req, txService.Simulate) + case "GetTx": + resp, err = handleExternalService(ctx, req, txService.GetTx) + case "BroadcastTx": + return nil, errors.New("can't route a broadcast tx message") + case "GetTxsEvent": + resp, err = handleExternalService(ctx, req, txService.GetTxsEvent) + case "GetBlockWithTxs": + resp, err = handleExternalService(ctx, req, txService.GetBlockWithTxs) + case "TxDecode": + resp, err = handleExternalService(ctx, req, txService.TxDecode) + case "TxEncode": + resp, err = handleExternalService(ctx, req, txService.TxEncode) + case "TxEncodeAmino": + resp, err = handleExternalService(ctx, req, txService.TxEncodeAmino) + case "TxDecodeAmino": + resp, err = handleExternalService(ctx, req, txService.TxDecodeAmino) + } + + return resp, err + } + + return nil, nil +} + +func handleExternalService[T any, PT interface { + *T + proto.Message +}, + U any, UT interface { + *U + proto.Message + }]( + ctx context.Context, + rawReq *abciproto.QueryRequest, + handler func(ctx context.Context, msg PT) (UT, error), +) (transaction.Msg, error) { + req := PT(new(T)) + err := proto.Unmarshal(rawReq.Data, req) + if err != nil { + return nil, err + } + typedResp, err := handler(ctx, req) + if err != nil { + return nil, err + } + return typedResp, nil +} diff --git a/server/v2/cometbft/server.go b/server/v2/cometbft/server.go index 51c24285e440..8789b7830f94 100644 --- a/server/v2/cometbft/server.go +++ b/server/v2/cometbft/server.go @@ -23,6 +23,7 @@ import ( "github.com/spf13/pflag" "google.golang.org/grpc" + addresscodec "cosmossdk.io/core/address" appmodulev2 "cosmossdk.io/core/appmodule/v2" "cosmossdk.io/core/server" "cosmossdk.io/core/transaction" @@ -72,6 +73,7 @@ func New[T transaction.Tx]( app appmanager.AppManager[T], appCodec codec.Codec, txCodec transaction.Codec[T], + consensusAddressCodec addresscodec.Codec, queryHandlers map[string]appmodulev2.Handler, decoderResolver decoding.DecoderResolver, serverOptions ServerOptions[T], @@ -189,6 +191,8 @@ func New[T transaction.Tx]( getProtoRegistry: sync.OnceValues(gogoproto.MergedRegistry), addrPeerFilter: srv.serverOptions.AddrPeerFilter, idPeerFilter: srv.serverOptions.IdPeerFilter, + cfgMap: cfg, + consensusAddressCodec: consensusAddressCodec, } c.optimisticExec = oe.NewOptimisticExecution( diff --git a/simapp/v2/simdv2/cmd/commands.go b/simapp/v2/simdv2/cmd/commands.go index 28586e32c2de..4b8cb10ab0cd 100644 --- a/simapp/v2/simdv2/cmd/commands.go +++ b/simapp/v2/simdv2/cmd/commands.go @@ -117,6 +117,7 @@ func InitRootCmd[T transaction.Tx]( simApp.App.AppManager, simApp.AppCodec(), &client.DefaultTxDecoder[T]{TxConfig: deps.TxConfig}, + deps.ClientContext.ConsensusAddressCodec, simApp.App.QueryHandlers(), simApp.App.SchemaDecoderResolver(), initCometOptions[T](), From f2663280c41366cb87a02037eac4df232235f727 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 11 Dec 2024 21:36:48 +0100 Subject: [PATCH 45/62] test(systemtest): fix cometbft client (#22835) --- store/v2/root/store.go | 24 ++++++----------------- tests/systemtests/cometbft_client_test.go | 11 +++++++++-- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/store/v2/root/store.go b/store/v2/root/store.go index 6faa51602c5b..ab22d3f90117 100644 --- a/store/v2/root/store.go +++ b/store/v2/root/store.go @@ -8,8 +8,6 @@ import ( "sync" "time" - "golang.org/x/sync/errgroup" - corelog "cosmossdk.io/core/log" corestore "cosmossdk.io/core/store" "cosmossdk.io/store/v2" @@ -305,24 +303,14 @@ func (s *Store) Commit(cs *corestore.Changeset) ([]byte, error) { // background pruning process (iavl v1 for example) which must be paused during the commit s.pruningManager.PausePruning() - eg := new(errgroup.Group) - - // commit SC async var cInfo *proof.CommitInfo - eg.Go(func() error { - if err := s.stateCommitment.WriteChangeset(cs); err != nil { - return fmt.Errorf("failed to write batch to SC store: %w", err) - } - var scErr error - cInfo, scErr = s.stateCommitment.Commit(cs.Version) - if scErr != nil { - return fmt.Errorf("failed to commit SC store: %w", scErr) - } - return nil - }) + if err := s.stateCommitment.WriteChangeset(cs); err != nil { + return nil, fmt.Errorf("failed to write batch to SC store: %w", err) + } - if err := eg.Wait(); err != nil { - return nil, err + cInfo, err := s.stateCommitment.Commit(cs.Version) + if err != nil { + return nil, fmt.Errorf("failed to commit SC store: %w", err) } if cInfo.Version != cs.Version { diff --git a/tests/systemtests/cometbft_client_test.go b/tests/systemtests/cometbft_client_test.go index 895a03a98c62..dbaa3e6d14ee 100644 --- a/tests/systemtests/cometbft_client_test.go +++ b/tests/systemtests/cometbft_client_test.go @@ -27,7 +27,12 @@ func TestQueryStatus(t *testing.T) { cli := systest.NewCLIWrapper(t, systest.Sut, systest.Verbose) systest.Sut.StartChain(t) - resp := cli.CustomQuery("status") + var resp string + if systest.IsV2() { + resp = cli.CustomQuery("comet", "status") + } else { + resp = cli.CustomQuery("status") + } // make sure the output has the validator moniker. assert.Contains(t, resp, "\"moniker\":\"node0\"") @@ -223,7 +228,7 @@ func TestValidatorSetByHeight(t *testing.T) { } } -func TestValidatorSetByHeight_GRPCRestGateway(t *testing.T) { +func TestValidatorSetByHeight_GRPCGateway(t *testing.T) { systest.Sut.ResetChain(t) systest.Sut.StartChain(t) @@ -257,7 +262,9 @@ func TestValidatorSetByHeight_GRPCRestGateway(t *testing.T) { } func TestABCIQuery(t *testing.T) { + systest.Sut.ResetChain(t) systest.Sut.StartChain(t) + _ = systest.Sut.AwaitNextBlock(t, time.Second*3) qc := cmtservice.NewServiceClient(systest.Sut.RPCClient(t)) cdc := codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) From 0895a2ff64fcba9270ddf2f8c52e4ee65a3d1848 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 07:33:57 +0100 Subject: [PATCH 46/62] build(deps): Bump golang.org/x/crypto from 0.30.0 to 0.31.0 (#22841) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- client/v2/go.mod | 2 +- client/v2/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- indexer/postgres/tests/go.mod | 8 ++++---- indexer/postgres/tests/go.sum | 16 ++++++++-------- runtime/v2/go.mod | 2 +- runtime/v2/go.sum | 4 ++-- server/v2/cometbft/go.mod | 2 +- server/v2/cometbft/go.sum | 4 ++-- server/v2/go.mod | 2 +- server/v2/go.sum | 4 ++-- simapp/go.mod | 2 +- simapp/go.sum | 4 ++-- simapp/v2/go.mod | 2 +- simapp/v2/go.sum | 4 ++-- store/go.mod | 2 +- store/go.sum | 4 ++-- store/v2/go.mod | 2 +- store/v2/go.sum | 4 ++-- systemtests/go.mod | 2 +- systemtests/go.sum | 4 ++-- tests/go.mod | 2 +- tests/go.sum | 4 ++-- tests/systemtests/go.mod | 2 +- tests/systemtests/go.sum | 4 ++-- tools/confix/go.mod | 2 +- tools/confix/go.sum | 4 ++-- tools/cosmovisor/go.mod | 2 +- tools/cosmovisor/go.sum | 4 ++-- tools/hubl/go.mod | 2 +- tools/hubl/go.sum | 4 ++-- x/accounts/defaults/base/go.mod | 2 +- x/accounts/defaults/base/go.sum | 4 ++-- x/accounts/defaults/lockup/go.mod | 2 +- x/accounts/defaults/lockup/go.sum | 4 ++-- x/accounts/defaults/multisig/go.mod | 2 +- x/accounts/defaults/multisig/go.sum | 4 ++-- x/accounts/go.mod | 2 +- x/accounts/go.sum | 4 ++-- x/authz/go.mod | 2 +- x/authz/go.sum | 4 ++-- x/bank/go.mod | 2 +- x/bank/go.sum | 4 ++-- x/circuit/go.mod | 2 +- x/circuit/go.sum | 4 ++-- x/consensus/go.mod | 2 +- x/consensus/go.sum | 4 ++-- x/distribution/go.mod | 2 +- x/distribution/go.sum | 4 ++-- x/epochs/go.mod | 2 +- x/epochs/go.sum | 4 ++-- x/evidence/go.mod | 2 +- x/evidence/go.sum | 4 ++-- x/feegrant/go.mod | 2 +- x/feegrant/go.sum | 4 ++-- x/gov/go.mod | 2 +- x/gov/go.sum | 4 ++-- x/group/go.mod | 2 +- x/group/go.sum | 4 ++-- x/mint/go.mod | 2 +- x/mint/go.sum | 4 ++-- x/nft/go.mod | 2 +- x/nft/go.sum | 4 ++-- x/params/go.mod | 2 +- x/params/go.sum | 4 ++-- x/protocolpool/go.mod | 2 +- x/protocolpool/go.sum | 4 ++-- x/slashing/go.mod | 2 +- x/slashing/go.sum | 4 ++-- x/staking/go.mod | 2 +- x/staking/go.sum | 4 ++-- x/upgrade/go.mod | 2 +- x/upgrade/go.sum | 4 ++-- 74 files changed, 120 insertions(+), 120 deletions(-) diff --git a/client/v2/go.mod b/client/v2/go.mod index 825387886272..d8f11caa90e8 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -159,7 +159,7 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/client/v2/go.sum b/client/v2/go.sum index fb5e79737848..cab87eb6ce50 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -529,8 +529,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/go.mod b/go.mod index c3f2c23d2d68..e16aa028cbb0 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,7 @@ require ( github.com/tendermint/go-amino v0.16.0 gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b go.uber.org/mock v0.5.0 - golang.org/x/crypto v0.30.0 + golang.org/x/crypto v0.31.0 golang.org/x/sync v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 google.golang.org/grpc v1.68.1 diff --git a/go.sum b/go.sum index 11cb61f2946c..a37cf7692720 100644 --- a/go.sum +++ b/go.sum @@ -520,8 +520,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/indexer/postgres/tests/go.mod b/indexer/postgres/tests/go.mod index e7be9b754596..3509757ae5c3 100644 --- a/indexer/postgres/tests/go.mod +++ b/indexer/postgres/tests/go.mod @@ -25,10 +25,10 @@ require ( github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/tidwall/btree v1.7.0 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect - golang.org/x/crypto v0.29.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect pgregory.net/rapid v1.1.0 // indirect ) diff --git a/indexer/postgres/tests/go.sum b/indexer/postgres/tests/go.sum index af43f0ab89ae..c498953ee244 100644 --- a/indexer/postgres/tests/go.sum +++ b/indexer/postgres/tests/go.sum @@ -39,14 +39,14 @@ github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofm github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/runtime/v2/go.mod b/runtime/v2/go.mod index 737cd6df463c..9ae7daa99adc 100644 --- a/runtime/v2/go.mod +++ b/runtime/v2/go.mod @@ -82,7 +82,7 @@ require ( github.com/tidwall/btree v1.7.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect diff --git a/runtime/v2/go.sum b/runtime/v2/go.sum index ddcc16a920e9..2e17566a674f 100644 --- a/runtime/v2/go.sum +++ b/runtime/v2/go.sum @@ -264,8 +264,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod index c56dc2632748..35b554c5dd70 100644 --- a/server/v2/cometbft/go.mod +++ b/server/v2/cometbft/go.mod @@ -171,7 +171,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/server/v2/cometbft/go.sum b/server/v2/cometbft/go.sum index 4e5abbdb1361..0b1efec574b0 100644 --- a/server/v2/cometbft/go.sum +++ b/server/v2/cometbft/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/server/v2/go.mod b/server/v2/go.mod index 44720598a398..83fb2fad7572 100644 --- a/server/v2/go.mod +++ b/server/v2/go.mod @@ -103,7 +103,7 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/server/v2/go.sum b/server/v2/go.sum index d0c8c97f62af..ae4ec07e681d 100644 --- a/server/v2/go.sum +++ b/server/v2/go.sum @@ -357,8 +357,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= diff --git a/simapp/go.mod b/simapp/go.mod index 834a72990b14..03905a478ffd 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -218,7 +218,7 @@ require ( go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index 569212c600c8..049c0844fe5c 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -879,8 +879,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index 48cc9a8c688c..ca71cd874905 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -224,7 +224,7 @@ require ( go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/simapp/v2/go.sum b/simapp/v2/go.sum index f5942e3dc1ca..78c20177325a 100644 --- a/simapp/v2/go.sum +++ b/simapp/v2/go.sum @@ -881,8 +881,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/store/go.mod b/store/go.mod index 7aa1ec2f3bd9..a99a7991690f 100644 --- a/store/go.mod +++ b/store/go.mod @@ -56,7 +56,7 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sys v0.28.0 // indirect diff --git a/store/go.sum b/store/go.sum index 6a7b5bfdc034..5d6537f9d189 100644 --- a/store/go.sum +++ b/store/go.sum @@ -236,8 +236,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/store/v2/go.mod b/store/v2/go.mod index 42778f347ca4..1333e44fe054 100644 --- a/store/v2/go.mod +++ b/store/v2/go.mod @@ -68,7 +68,7 @@ require ( github.com/tidwall/btree v1.7.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.29.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect diff --git a/store/v2/go.sum b/store/v2/go.sum index ec5654d0a6a9..44e84f3edfe9 100644 --- a/store/v2/go.sum +++ b/store/v2/go.sum @@ -267,8 +267,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/systemtests/go.mod b/systemtests/go.mod index 426fb0cb79f8..9e6a46461706 100644 --- a/systemtests/go.mod +++ b/systemtests/go.mod @@ -148,7 +148,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect diff --git a/systemtests/go.sum b/systemtests/go.sum index 5e7a4fead4a1..fe1ffbe02a9b 100644 --- a/systemtests/go.sum +++ b/systemtests/go.sum @@ -767,8 +767,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/tests/go.mod b/tests/go.mod index 237b4a86b6d5..18cc7999b3f8 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -220,7 +220,7 @@ require ( go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index eaaf0ff61562..02d8cb80dd8a 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -868,8 +868,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/tests/systemtests/go.mod b/tests/systemtests/go.mod index 6ffc4a0b9f5f..0a56f317aedf 100644 --- a/tests/systemtests/go.mod +++ b/tests/systemtests/go.mod @@ -148,7 +148,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect diff --git a/tests/systemtests/go.sum b/tests/systemtests/go.sum index 71d65c5309e4..2192c5c4cfbe 100644 --- a/tests/systemtests/go.sum +++ b/tests/systemtests/go.sum @@ -769,8 +769,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/tools/confix/go.mod b/tools/confix/go.mod index 3ef1a1ae75a1..7ed3d6815705 100644 --- a/tools/confix/go.mod +++ b/tools/confix/go.mod @@ -145,7 +145,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect diff --git a/tools/confix/go.sum b/tools/confix/go.sum index e376dd5cbfe9..11d2536db9bb 100644 --- a/tools/confix/go.sum +++ b/tools/confix/go.sum @@ -761,8 +761,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index 03a5f5e9cb21..f5c2dce34512 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -168,7 +168,7 @@ require ( go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index 59616136fc43..2e56948e4141 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -1029,8 +1029,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= diff --git a/tools/hubl/go.mod b/tools/hubl/go.mod index c9cac4374ec4..0268b07802f1 100644 --- a/tools/hubl/go.mod +++ b/tools/hubl/go.mod @@ -146,7 +146,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect diff --git a/tools/hubl/go.sum b/tools/hubl/go.sum index a8e60902dd54..66a6d2a94a51 100644 --- a/tools/hubl/go.sum +++ b/tools/hubl/go.sum @@ -760,8 +760,8 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= diff --git a/x/accounts/defaults/base/go.mod b/x/accounts/defaults/base/go.mod index a8da52908215..feed3a590818 100644 --- a/x/accounts/defaults/base/go.mod +++ b/x/accounts/defaults/base/go.mod @@ -150,7 +150,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/accounts/defaults/base/go.sum b/x/accounts/defaults/base/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/accounts/defaults/base/go.sum +++ b/x/accounts/defaults/base/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/accounts/defaults/lockup/go.mod b/x/accounts/defaults/lockup/go.mod index f0f6a45f0a67..4b19f63b71b9 100644 --- a/x/accounts/defaults/lockup/go.mod +++ b/x/accounts/defaults/lockup/go.mod @@ -132,7 +132,7 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect diff --git a/x/accounts/defaults/lockup/go.sum b/x/accounts/defaults/lockup/go.sum index f74d909c24fe..a0f7571bfdf0 100644 --- a/x/accounts/defaults/lockup/go.sum +++ b/x/accounts/defaults/lockup/go.sum @@ -459,8 +459,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/accounts/defaults/multisig/go.mod b/x/accounts/defaults/multisig/go.mod index 57ac772cb992..6d5cd7032831 100644 --- a/x/accounts/defaults/multisig/go.mod +++ b/x/accounts/defaults/multisig/go.mod @@ -150,7 +150,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/accounts/defaults/multisig/go.sum b/x/accounts/defaults/multisig/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/accounts/defaults/multisig/go.sum +++ b/x/accounts/defaults/multisig/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 2b6db6fdead5..979881134832 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -154,7 +154,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/accounts/go.sum b/x/accounts/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/authz/go.mod b/x/authz/go.mod index 4f8ff62e894b..34ee6b1dc573 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -140,7 +140,7 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/authz/go.sum b/x/authz/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/bank/go.mod b/x/bank/go.mod index 9e154f61e7f8..f3d760d2b467 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -138,7 +138,7 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/bank/go.sum b/x/bank/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index d90b82643b80..aeb6ad27f4bd 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -151,7 +151,7 @@ require ( go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/consensus/go.mod b/x/consensus/go.mod index fb571f0c7994..a2373a1457a0 100644 --- a/x/consensus/go.mod +++ b/x/consensus/go.mod @@ -150,7 +150,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/consensus/go.sum b/x/consensus/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/consensus/go.sum +++ b/x/consensus/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 68335d480916..df9f15966f0f 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -151,7 +151,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/distribution/go.sum b/x/distribution/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/epochs/go.mod b/x/epochs/go.mod index 4d447185d811..a5c5550b6b06 100644 --- a/x/epochs/go.mod +++ b/x/epochs/go.mod @@ -141,7 +141,7 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/epochs/go.sum b/x/epochs/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/epochs/go.sum +++ b/x/epochs/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index 74f1bd3ce5f5..9f1d2cc5320e 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -152,7 +152,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index c80b0ec793a9..3ddbe159f5fc 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -161,7 +161,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index fb5e79737848..cab87eb6ce50 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -529,8 +529,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/gov/go.mod b/x/gov/go.mod index f35867bb0486..32370184dc70 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -148,7 +148,7 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/gov/go.sum b/x/gov/go.sum index 756769fda547..91bba53c7596 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -527,8 +527,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/group/go.mod b/x/group/go.mod index 059b237bc831..e98a8303edf0 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -163,7 +163,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/group/go.sum b/x/group/go.sum index 34eed35f6f2d..e8a6c34456de 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -529,8 +529,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/mint/go.mod b/x/mint/go.mod index 5bf737906076..1e45be39dcaf 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -141,7 +141,7 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/mint/go.sum b/x/mint/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/nft/go.mod b/x/nft/go.mod index 5711ddd069fc..49e414d92dfc 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -151,7 +151,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/params/go.mod b/x/params/go.mod index 4436abc529ce..441a3bacee75 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -144,7 +144,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/params/go.sum b/x/params/go.sum index 9e9e58566093..478ae2178cbc 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -493,8 +493,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index 144789471f38..cd83d91dd5ec 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -152,7 +152,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index 352c037c0698..7c585c7256e7 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -154,7 +154,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index 69db19b23e3a..95c1c2a1d400 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -521,8 +521,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/staking/go.mod b/x/staking/go.mod index 3f4729b8f315..86f7782d7e4a 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -131,7 +131,7 @@ require ( gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect diff --git a/x/staking/go.sum b/x/staking/go.sum index 87c9104950d3..2d766fa25a67 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -519,8 +519,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index fa3d43e9a917..806ee5187027 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -182,7 +182,7 @@ require ( go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect - golang.org/x/crypto v0.30.0 // indirect + golang.org/x/crypto v0.31.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/net v0.32.0 // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index 1e8da62b2ab5..e74582d9001c 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -860,8 +860,8 @@ 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= From a068405339edcdd69a82706953151e2d95d51723 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 08:59:32 +0100 Subject: [PATCH 47/62] build(deps): Bump cosmossdk.io/schema from 0.3.0 to 0.4.0 in /core (#22842) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- collections/go.mod | 2 +- collections/go.sum | 4 ++-- collections/protocodec/go.mod | 2 +- collections/protocodec/go.sum | 4 ++-- core/go.mod | 2 +- core/go.sum | 4 ++-- core/testing/go.mod | 2 +- core/testing/go.sum | 4 ++-- orm/go.mod | 2 +- orm/go.sum | 4 ++-- server/v2/appmanager/go.mod | 2 +- server/v2/appmanager/go.sum | 4 ++-- store/go.mod | 2 +- store/go.sum | 4 ++-- store/v2/go.mod | 2 +- store/v2/go.sum | 4 ++-- 16 files changed, 24 insertions(+), 24 deletions(-) diff --git a/collections/go.mod b/collections/go.mod index 9ea5cd3f6acf..495e7bc56c1e 100644 --- a/collections/go.mod +++ b/collections/go.mod @@ -5,7 +5,7 @@ go 1.23.2 require ( cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20240923163230-04da382a9f29 - cosmossdk.io/schema v0.3.0 + cosmossdk.io/schema v0.4.0 github.com/cosmos/gogoproto v1.7.0 github.com/stretchr/testify v1.10.0 github.com/tidwall/btree v1.7.0 diff --git a/collections/go.sum b/collections/go.sum index 7cd741b3ec8e..2a21c292a2dd 100644 --- a/collections/go.sum +++ b/collections/go.sum @@ -2,8 +2,8 @@ cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= cosmossdk.io/core/testing v0.0.0-20240923163230-04da382a9f29 h1:NxxUo0GMJUbIuVg0R70e3cbn9eFTEuMr7ev1AFvypdY= cosmossdk.io/core/testing v0.0.0-20240923163230-04da382a9f29/go.mod h1:8s2tPeJtSiQuoyPmr2Ag7meikonISO4Fv4MoO8+ORrs= -cosmossdk.io/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= diff --git a/collections/protocodec/go.mod b/collections/protocodec/go.mod index d8a68f2a0e61..1304acfdb67c 100644 --- a/collections/protocodec/go.mod +++ b/collections/protocodec/go.mod @@ -12,7 +12,7 @@ require ( ) require ( - cosmossdk.io/schema v0.3.0 // indirect + cosmossdk.io/schema v0.4.0 // indirect github.com/DataDog/zstd v1.5.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect diff --git a/collections/protocodec/go.sum b/collections/protocodec/go.sum index 812e888b95f6..e3a0e442e022 100644 --- a/collections/protocodec/go.sum +++ b/collections/protocodec/go.sum @@ -2,8 +2,8 @@ cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= -cosmossdk.io/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= diff --git a/core/go.mod b/core/go.mod index 61b97a200010..60836afa1915 100644 --- a/core/go.mod +++ b/core/go.mod @@ -5,7 +5,7 @@ module cosmossdk.io/core go 1.23 -require cosmossdk.io/schema v0.3.0 +require cosmossdk.io/schema v0.4.0 // Version tagged too early and incompatible with v0.50 (latest at the time of tagging) retract v0.12.0 diff --git a/core/go.sum b/core/go.sum index 18e538dae2df..ae96fb574023 100644 --- a/core/go.sum +++ b/core/go.sum @@ -1,2 +1,2 @@ -cosmossdk.io/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= diff --git a/core/testing/go.mod b/core/testing/go.mod index f56f270179ac..a9d0ddad934a 100644 --- a/core/testing/go.mod +++ b/core/testing/go.mod @@ -8,4 +8,4 @@ require ( go.uber.org/mock v0.5.0 ) -require cosmossdk.io/schema v0.3.0 // indirect +require cosmossdk.io/schema v0.4.0 // indirect diff --git a/core/testing/go.sum b/core/testing/go.sum index e8f68cbcedee..bceb89d5bd80 100644 --- a/core/testing/go.sum +++ b/core/testing/go.sum @@ -1,7 +1,7 @@ cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= -cosmossdk.io/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= diff --git a/orm/go.mod b/orm/go.mod index 9c9aa58b41dc..66316aaa894f 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -23,7 +23,7 @@ require ( ) require ( - cosmossdk.io/schema v0.3.0 // indirect + cosmossdk.io/schema v0.4.0 // indirect github.com/DataDog/zstd v1.4.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect diff --git a/orm/go.sum b/orm/go.sum index bf6d73412bbe..a44735986c2c 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -8,8 +8,8 @@ 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/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= diff --git a/server/v2/appmanager/go.mod b/server/v2/appmanager/go.mod index b608c98d6ff1..4ad6cbe16d2f 100644 --- a/server/v2/appmanager/go.mod +++ b/server/v2/appmanager/go.mod @@ -4,4 +4,4 @@ go 1.23 require cosmossdk.io/core v1.0.0-alpha.6 -require cosmossdk.io/schema v0.3.0 // indirect +require cosmossdk.io/schema v0.4.0 // indirect diff --git a/server/v2/appmanager/go.sum b/server/v2/appmanager/go.sum index ad224fe28ab7..f22974966a9f 100644 --- a/server/v2/appmanager/go.sum +++ b/server/v2/appmanager/go.sum @@ -1,4 +1,4 @@ cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= -cosmossdk.io/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= diff --git a/store/go.mod b/store/go.mod index a99a7991690f..138329403a2b 100644 --- a/store/go.mod +++ b/store/go.mod @@ -27,7 +27,7 @@ require ( ) require ( - cosmossdk.io/schema v0.3.0 // indirect + cosmossdk.io/schema v0.4.0 // indirect github.com/bytedance/sonic v1.12.4 // indirect github.com/bytedance/sonic/loader v0.2.1 // indirect github.com/cloudwego/base64x v0.1.4 // indirect diff --git a/store/go.sum b/store/go.sum index 5d6537f9d189..17775804cc6e 100644 --- a/store/go.sum +++ b/store/go.sum @@ -8,8 +8,8 @@ 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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= -cosmossdk.io/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= diff --git a/store/v2/go.mod b/store/v2/go.mod index 1333e44fe054..902b061e856f 100644 --- a/store/v2/go.mod +++ b/store/v2/go.mod @@ -24,7 +24,7 @@ require ( ) require ( - cosmossdk.io/schema v0.3.0 // indirect + cosmossdk.io/schema v0.4.0 // indirect github.com/DataDog/zstd v1.5.5 // indirect github.com/aybabtme/uniplot v0.0.0-20151203143629-039c559e5e7e // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/store/v2/go.sum b/store/v2/go.sum index 44e84f3edfe9..ef45ceecc104 100644 --- a/store/v2/go.sum +++ b/store/v2/go.sum @@ -4,8 +4,8 @@ cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 h1:IQNdY2kB+k+1OM2DvqF cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5/go.mod h1:0CuYKkFHxc1vw2JC+t21THBCALJVROrWVR/3PQ1urpc= cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= -cosmossdk.io/schema v0.3.0 h1:01lcaM4trhzZ1HQTfTV8z6Ma1GziOZ/YmdzBN3F720c= -cosmossdk.io/schema v0.3.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= From e6948eeda8770e280001b079639fb80d59436778 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 12 Dec 2024 11:42:57 +0100 Subject: [PATCH 48/62] fix(stf,server/v2/cometbft): fix default events + improve codec handling (#22837) --- server/v2/cometbft/abci.go | 23 +++++++---------- server/v2/cometbft/abci_test.go | 16 ++++++------ server/v2/cometbft/grpc.go | 41 +++++++++++++++--------------- server/v2/cometbft/query.go | 2 +- server/v2/cometbft/server.go | 23 +++++++++++------ server/v2/stf/stf.go | 43 ++++++++++++++++++++++++++++++++ server/v2/stf/stf_test.go | 23 +++++++++++++---- simapp/v2/simdv2/cmd/commands.go | 9 ++++--- tests/systemtests/tx_test.go | 2 +- 9 files changed, 123 insertions(+), 59 deletions(-) diff --git a/server/v2/cometbft/abci.go b/server/v2/cometbft/abci.go index 0114d9335676..f97d6fa43b36 100644 --- a/server/v2/cometbft/abci.go +++ b/server/v2/cometbft/abci.go @@ -15,7 +15,6 @@ import ( "google.golang.org/protobuf/reflect/protoregistry" "cosmossdk.io/collections" - addresscodec "cosmossdk.io/core/address" appmodulev2 "cosmossdk.io/core/appmodule/v2" "cosmossdk.io/core/comet" corecontext "cosmossdk.io/core/context" @@ -35,8 +34,6 @@ import ( "cosmossdk.io/server/v2/streaming" "cosmossdk.io/store/v2/snapshots" consensustypes "cosmossdk.io/x/consensus/types" - - "github.com/cosmos/cosmos-sdk/codec" ) const ( @@ -52,13 +49,12 @@ type consensus[T transaction.Tx] struct { logger log.Logger appName, version string app appmanager.AppManager[T] - appCodec codec.Codec - txCodec transaction.Codec[T] store types.Store listener *appdata.Listener snapshotManager *snapshots.Manager streamingManager streaming.Manager mempool mempool.Mempool[T] + appCodecs AppCodecs[T] cfg Config chainID string @@ -84,16 +80,15 @@ type consensus[T transaction.Tx] struct { addrPeerFilter types.PeerFilter // filter peers by address and port idPeerFilter types.PeerFilter // filter peers by node ID - queryHandlersMap map[string]appmodulev2.Handler - getProtoRegistry func() (*protoregistry.Files, error) - consensusAddressCodec addresscodec.Codec - cfgMap server.ConfigMap + queryHandlersMap map[string]appmodulev2.Handler + getProtoRegistry func() (*protoregistry.Files, error) + cfgMap server.ConfigMap } // CheckTx implements types.Application. // It is called by cometbft to verify transaction validity func (c *consensus[T]) CheckTx(ctx context.Context, req *abciproto.CheckTxRequest) (*abciproto.CheckTxResponse, error) { - decodedTx, err := c.txCodec.Decode(req.Tx) + decodedTx, err := c.appCodecs.TxCodec.Decode(req.Tx) if err != nil { return nil, err } @@ -325,7 +320,7 @@ func (c *consensus[T]) InitChain(ctx context.Context, req *abciproto.InitChainRe ctx, br, req.AppStateBytes, - c.txCodec) + c.appCodecs.TxCodec) if err != nil { return nil, fmt.Errorf("genesis state init failure: %w", err) } @@ -392,7 +387,7 @@ func (c *consensus[T]) PrepareProposal( LastCommit: toCoreExtendedCommitInfo(req.LocalLastCommit), }) - txs, err := c.prepareProposalHandler(ciCtx, c.app, c.txCodec, req) + txs, err := c.prepareProposalHandler(ciCtx, c.app, c.appCodecs.TxCodec, req) if err != nil { return nil, err } @@ -438,7 +433,7 @@ func (c *consensus[T]) ProcessProposal( LastCommit: toCoreCommitInfo(req.ProposedLastCommit), }) - err := c.processProposalHandler(ciCtx, c.app, c.txCodec, req) + err := c.processProposalHandler(ciCtx, c.app, c.appCodecs.TxCodec, req) if err != nil { c.logger.Error("failed to process proposal", "height", req.Height, "time", req.Time, "hash", fmt.Sprintf("%X", req.Hash), "err", err) return &abciproto.ProcessProposalResponse{ @@ -567,7 +562,7 @@ func (c *consensus[T]) internalFinalizeBlock( // TODO(tip): can we expect some txs to not decode? if so, what we do in this case? this does not seem to be the case, // considering that prepare and process always decode txs, assuming they're the ones providing txs we should never // have a tx that fails decoding. - decodedTxs, err := decodeTxs(c.logger, req.Txs, c.txCodec) + decodedTxs, err := decodeTxs(c.logger, req.Txs, c.appCodecs.TxCodec) if err != nil { return nil, nil, nil, err } diff --git a/server/v2/cometbft/abci_test.go b/server/v2/cometbft/abci_test.go index 17ff917c6511..b35c71a7c240 100644 --- a/server/v2/cometbft/abci_test.go +++ b/server/v2/cometbft/abci_test.go @@ -886,13 +886,15 @@ func setUpConsensus(t *testing.T, gasLimit uint64, mempool mempool.Mempool[mock. } return &consensus[mock.Tx]{ - logger: log.NewNopLogger(), - appName: "testing-app", - app: am, - mempool: mempool, - store: mockStore, - cfg: Config{AppTomlConfig: DefaultAppTomlConfig()}, - txCodec: mock.TxCodec{}, + logger: log.NewNopLogger(), + appName: "testing-app", + app: am, + mempool: mempool, + store: mockStore, + cfg: Config{AppTomlConfig: DefaultAppTomlConfig()}, + appCodecs: AppCodecs[mock.Tx]{ + TxCodec: mock.TxCodec{}, + }, chainID: "test", getProtoRegistry: sync.OnceValues(gogoproto.MergedRegistry), queryHandlersMap: queryHandler, diff --git a/server/v2/cometbft/grpc.go b/server/v2/cometbft/grpc.go index cfc682e47f31..1f59a4771cf1 100644 --- a/server/v2/cometbft/grpc.go +++ b/server/v2/cometbft/grpc.go @@ -27,7 +27,6 @@ import ( nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/std" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/query" @@ -117,12 +116,13 @@ func (t txServer[T]) GetBlockWithTxs(ctx context.Context, req *txtypes.GetBlockW } decodeTxAt := func(i uint64) error { tx := blockTxs[i] - txb, err := t.clientCtx.TxConfig.TxDecoder()(tx) - fmt.Println("TxDecoder", txb, err) + txb, err := t.txCodec.Decode(tx) if err != nil { return err } - p, err := txb.(interface{ AsTx() (*txtypes.Tx, error) }).AsTx() + + // txServer works only with sdk.Tx + p, err := any(txb).(interface{ AsTx() (*txtypes.Tx, error) }).AsTx() if err != nil { return err } @@ -256,6 +256,11 @@ func (t txServer[T]) Simulate(ctx context.Context, req *txtypes.SimulateRequest) msgResponses = append(msgResponses, anyMsg) } + event, err := intoABCIEvents(txResult.Events, map[string]struct{}{}, false) + if err != nil { + return nil, status.Errorf(codes.Unknown, "failed to convert events: %v", err) + } + return &txtypes.SimulateResponse{ GasInfo: &sdk.GasInfo{ GasUsed: txResult.GasUsed, @@ -263,6 +268,7 @@ func (t txServer[T]) Simulate(ctx context.Context, req *txtypes.SimulateRequest) }, Result: &sdk.Result{ MsgResponses: msgResponses, + Events: event, }, }, nil } @@ -273,15 +279,17 @@ func (t txServer[T]) TxDecode(ctx context.Context, req *txtypes.TxDecodeRequest) return nil, status.Error(codes.InvalidArgument, "invalid empty tx bytes") } - txb, err := t.clientCtx.TxConfig.TxDecoder()(req.TxBytes) + txb, err := t.txCodec.Decode(req.TxBytes) if err != nil { return nil, err } - tx, err := txb.(interface{ AsTx() (*txtypes.Tx, error) }).AsTx() // TODO: maybe we can break the Tx interface to add this also + // txServer works only with sdk.Tx + tx, err := any(txb).(interface{ AsTx() (*txtypes.Tx, error) }).AsTx() if err != nil { return nil, err } + return &txtypes.TxDecodeResponse{ Tx: tx, }, nil @@ -350,7 +358,7 @@ func (t txServer[T]) TxEncodeAmino(_ context.Context, req *txtypes.TxEncodeAmino var stdTx legacytx.StdTx err := t.clientCtx.LegacyAmino.UnmarshalJSON([]byte(req.AminoJson), &stdTx) if err != nil { - return nil, err + return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("invalid request %s", err)) } encodedBytes, err := t.clientCtx.LegacyAmino.Marshal(stdTx) @@ -466,7 +474,7 @@ func (c *consensus[T]) maybeHandleExternalServices(ctx context.Context, req *abc if strings.HasPrefix(req.Path, "/cosmos.base.tendermint.v1beta1.Service") { rpcClient, _ := rpchttp.New(c.cfg.ConfigTomlConfig.RPC.ListenAddress) - cometQServer := cmtservice.NewQueryServer(rpcClient, c.Query, c.consensusAddressCodec) + cometQServer := cmtservice.NewQueryServer(rpcClient, c.Query, c.appCodecs.ConsensusAddressCodec) paths := strings.Split(req.Path, "/") if len(paths) <= 2 { return nil, fmt.Errorf("invalid request path: %s", req.Path) @@ -516,27 +524,18 @@ func (c *consensus[T]) maybeHandleExternalServices(ctx context.Context, req *abc // Handle tx service if strings.HasPrefix(req.Path, "/cosmos.tx.v1beta1.Service") { - // init simple client context - amino := codec.NewLegacyAmino() - std.RegisterLegacyAminoCodec(amino) - txConfig := authtx.NewTxConfig( - c.appCodec, - c.appCodec.InterfaceRegistry().SigningContext().AddressCodec(), - c.appCodec.InterfaceRegistry().SigningContext().ValidatorAddressCodec(), - authtx.DefaultSignModes, - ) rpcClient, _ := client.NewClientFromNode(c.cfg.AppTomlConfig.Address) + // init simple client context clientCtx := client.Context{}. - WithLegacyAmino(amino). - WithCodec(c.appCodec). - WithTxConfig(txConfig). + WithLegacyAmino(c.appCodecs.LegacyAmino.(*codec.LegacyAmino)). + WithCodec(c.appCodecs.AppCodec). WithNodeURI(c.cfg.AppTomlConfig.Address). WithClient(rpcClient) txService := txServer[T]{ clientCtx: clientCtx, - txCodec: c.txCodec, + txCodec: c.appCodecs.TxCodec, app: c.app, consensus: c, } diff --git a/server/v2/cometbft/query.go b/server/v2/cometbft/query.go index bf6bcfe02eb6..0bdb9e40f060 100644 --- a/server/v2/cometbft/query.go +++ b/server/v2/cometbft/query.go @@ -51,7 +51,7 @@ func (c *consensus[T]) handleQueryApp(ctx context.Context, path []string, req *a switch path[1] { case "simulate": - tx, err := c.txCodec.Decode(req.Data) + tx, err := c.appCodecs.TxCodec.Decode(req.Data) if err != nil { return nil, errorsmod.Wrap(err, "failed to decode tx") } diff --git a/server/v2/cometbft/server.go b/server/v2/cometbft/server.go index 8789b7830f94..1182924a4f19 100644 --- a/server/v2/cometbft/server.go +++ b/server/v2/cometbft/server.go @@ -25,6 +25,7 @@ import ( addresscodec "cosmossdk.io/core/address" appmodulev2 "cosmossdk.io/core/appmodule/v2" + "cosmossdk.io/core/registry" "cosmossdk.io/core/server" "cosmossdk.io/core/transaction" "cosmossdk.io/log" @@ -66,14 +67,24 @@ type CometBFTServer[T transaction.Tx] struct { store types.Store } +// AppCodecs contains all codecs that the CometBFT server requires +// provided by the application. They are extracted in struct to not be API +// breaking once amino is completely deprecated or new codecs should be added. +type AppCodecs[T transaction.Tx] struct { + TxCodec transaction.Codec[T] + + // The following codecs are only required for the gRPC services + AppCodec codec.Codec + LegacyAmino registry.AminoRegistrar + ConsensusAddressCodec addresscodec.Codec +} + func New[T transaction.Tx]( logger log.Logger, appName string, store types.Store, app appmanager.AppManager[T], - appCodec codec.Codec, - txCodec transaction.Codec[T], - consensusAddressCodec addresscodec.Codec, + appCodecs AppCodecs[T], queryHandlers map[string]appmodulev2.Handler, decoderResolver decoding.DecoderResolver, serverOptions ServerOptions[T], @@ -84,7 +95,7 @@ func New[T transaction.Tx]( serverOptions: serverOptions, cfgOptions: cfgOptions, app: app, - txCodec: txCodec, + txCodec: appCodecs.TxCodec, store: store, } srv.logger = logger.With(log.ModuleKey, srv.Name()) @@ -172,8 +183,7 @@ func New[T transaction.Tx]( cfg: srv.config, store: store, logger: logger, - txCodec: txCodec, - appCodec: appCodec, + appCodecs: appCodecs, listener: listener, snapshotManager: snapshotManager, streamingManager: srv.serverOptions.StreamingManager, @@ -192,7 +202,6 @@ func New[T transaction.Tx]( addrPeerFilter: srv.serverOptions.AddrPeerFilter, idPeerFilter: srv.serverOptions.IdPeerFilter, cfgMap: cfg, - consensusAddressCodec: consensusAddressCodec, } c.optimisticExec = oe.NewOptimisticExecution( diff --git a/server/v2/stf/stf.go b/server/v2/stf/stf.go index 4411a0f5fe40..4b85c5ffe499 100644 --- a/server/v2/stf/stf.go +++ b/server/v2/stf/stf.go @@ -2,8 +2,10 @@ package stf import ( "context" + "encoding/json" "errors" "fmt" + "strings" appmodulev2 "cosmossdk.io/core/appmodule/v2" corecontext "cosmossdk.io/core/context" @@ -358,12 +360,53 @@ func (s STF[T]) runTxMsgs( e.EventIndex = int32(j + 1) events = append(events, e) } + + // add message event + events = append(events, createMessageEvent(msg, int32(i+1), int32(len(execCtx.events)+1))) } consumed := execCtx.meter.Limit() - execCtx.meter.Remaining() return msgResps, consumed, events, nil } +// Create a message event, with two kv: action, the type url of the message +// and module, the module of the message. +func createMessageEvent(msg transaction.Msg, msgIndex, eventIndex int32) event.Event { + // Assumes that module name is the second element of the msg type URL + // e.g. "cosmos.bank.v1beta1.MsgSend" => "bank" + // It returns an empty string if the input is not a valid type URL + getModuleNameFromTypeURL := func(input string) string { + moduleName := strings.Split(input, ".") + if len(moduleName) > 1 { + return moduleName[1] + } + + return "" + } + + return event.Event{ + MsgIndex: msgIndex, + EventIndex: eventIndex, + Type: "message", + Attributes: func() ([]appdata.EventAttribute, error) { + typeURL := msgTypeURL(msg) + return []appdata.EventAttribute{ + {Key: "action", Value: "/" + typeURL}, + {Key: "module", Value: getModuleNameFromTypeURL(typeURL)}, + }, nil + }, + Data: func() (json.RawMessage, error) { + typeURL := msgTypeURL(msg) + attrs := []appdata.EventAttribute{ + {Key: "action", Value: "/" + typeURL}, + {Key: "module", Value: getModuleNameFromTypeURL(typeURL)}, + } + + return json.Marshal(attrs) + }, + } +} + // preBlock executes the pre block logic. func (s STF[T]) preBlock( ctx *executionContext, diff --git a/server/v2/stf/stf_test.go b/server/v2/stf/stf_test.go index b4c84a62ff9a..04ae8bf5859b 100644 --- a/server/v2/stf/stf_test.go +++ b/server/v2/stf/stf_test.go @@ -225,8 +225,8 @@ func TestSTF(t *testing.T) { } // check TxEvents events := txResult.Events - if len(events) != 6 { - t.Fatalf("Expected 6 TxEvents, got %d", len(events)) + if len(events) != 7 { + t.Fatalf("Expected 7 TxEvents, got %d", len(events)) } for i, event := range events { if event.BlockStage != appdata.TxProcessingStage { @@ -235,7 +235,8 @@ func TestSTF(t *testing.T) { if event.TxIndex != 1 { t.Errorf("Expected TxIndex 1, got %d", event.TxIndex) } - if event.EventIndex != int32(i%2+1) { + if event.EventIndex != int32(i%2+1) && + (event.Type == "message" && event.EventIndex != 3) { // special case for message event type as it happens in the msg handling flow t.Errorf("Expected EventIndex %d, got %d", i%2+1, event.EventIndex) } @@ -247,7 +248,7 @@ func TestSTF(t *testing.T) { t.Errorf("Expected 1 or 2 attributes, got %d", len(attrs)) } - if len(attrs) == 2 { + if len(attrs) == 2 && event.Type != "message" { if attrs[1].Key != "index" || attrs[1].Value != "2" { t.Errorf("Expected attribute key 'index' and value '2', got key '%s' and value '%s'", attrs[1].Key, attrs[1].Value) } @@ -273,7 +274,19 @@ func TestSTF(t *testing.T) { if attrs[0].Key != "msg" || attrs[0].Value != "&BoolValue{Value:true,XXX_unrecognized:[],}" { t.Errorf("Expected msg attribute with value '&BoolValue{Value:true,XXX_unrecognized:[],}', got '%s'", attrs[0].Value) } - case 4, 5: + case 4: + if event.Type != "message" { + t.Errorf("Expected event type 'message', got %s", event.Type) + } + + if event.MsgIndex != 1 { + t.Errorf("Expected MsgIndex 1, got %d", event.MsgIndex) + } + + if attrs[0].Key != "action" || attrs[0].Value != "/google.protobuf.BoolValue" { + t.Errorf("Expected msg attribute with value '/google.protobuf.BoolValue', got '%s'", attrs[0].Value) + } + case 5, 6: if event.Type != "post-tx-exec" { t.Errorf("Expected event type 'post-tx-exec', got %s", event.Type) } diff --git a/simapp/v2/simdv2/cmd/commands.go b/simapp/v2/simdv2/cmd/commands.go index 4b8cb10ab0cd..2a7634ffea98 100644 --- a/simapp/v2/simdv2/cmd/commands.go +++ b/simapp/v2/simdv2/cmd/commands.go @@ -115,9 +115,12 @@ func InitRootCmd[T transaction.Tx]( simApp.Name(), simApp.Store(), simApp.App.AppManager, - simApp.AppCodec(), - &client.DefaultTxDecoder[T]{TxConfig: deps.TxConfig}, - deps.ClientContext.ConsensusAddressCodec, + cometbft.AppCodecs[T]{ + AppCodec: simApp.AppCodec(), + TxCodec: &client.DefaultTxDecoder[T]{TxConfig: deps.TxConfig}, + LegacyAmino: deps.ClientContext.LegacyAmino, + ConsensusAddressCodec: deps.ClientContext.ConsensusAddressCodec, + }, simApp.App.QueryHandlers(), simApp.App.SchemaDecoderResolver(), initCometOptions[T](), diff --git a/tests/systemtests/tx_test.go b/tests/systemtests/tx_test.go index 84a0c9fc20c2..a1c13201f1b9 100644 --- a/tests/systemtests/tx_test.go +++ b/tests/systemtests/tx_test.go @@ -122,7 +122,7 @@ func TestSimulateTx_GRPC(t *testing.T) { require.NoError(t, err) // Check the result and gas used are correct. // - // The 12 events are: + // The 10 events are: // - Sending Fee to the pool: coin_spent, coin_received and transfer // - tx.* events: tx.fee, tx.acc_seq, tx.signature // - Sending Amount to recipient: coin_spent, coin_received and transfer From 02fe18c7dcf11f10a22ee2717797c0eae798e8fd Mon Sep 17 00:00:00 2001 From: Robert Zaremba Date: Thu, 12 Dec 2024 14:39:18 +0100 Subject: [PATCH 49/62] build(deps): fix x/protocolpool version in x/feegrant (#22840) --- x/feegrant/go.mod | 1 + x/feegrant/go.sum | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 3ddbe159f5fc..8b317e029a0c 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -187,6 +187,7 @@ replace ( cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/gov => ../gov + cosmossdk.io/x/protocolpool => ../protocolpool cosmossdk.io/x/staking => ../staking cosmossdk.io/x/tx => ../tx ) diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index cab87eb6ce50..91bba53c7596 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -20,8 +20,6 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= -cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= From 14c841c86ee5f2e48042afed34f1b6b82e95c042 Mon Sep 17 00:00:00 2001 From: Matt Kocubinski Date: Thu, 12 Dec 2024 09:33:23 -0600 Subject: [PATCH 50/62] feat(tools/benchmark): introduce benchmark module (#22778) --- .github/dependabot.yml | 9 + .github/pr_labeler.yml | 1 + .github/workflows/test.yml | 31 + .../benchmark/module/v1/module.pulsar.go | 1609 +++++++++++++++++ api/cosmos/benchmark/v1/benchmark.pulsar.go | 928 ++++++++++ api/cosmos/benchmark/v1/tx.pulsar.go | 1256 +++++++++++++ api/cosmos/benchmark/v1/tx_grpc.pb.go | 127 ++ go.work.example | 1 + runtime/module.go | 9 + scripts/build/build.mk | 5 + scripts/init-simapp-v2.sh | 1 + server/v2/cometbft/grpc.go | 2 +- simapp/app.go | 3 +- simapp/app_config.go | 4 +- simapp/app_test.go | 10 + simapp/benchmark.go | 39 + simapp/go.mod | 2 + simapp/simd/cmd/testnet.go | 3 +- simapp/v2/app.go | 3 +- simapp/v2/app_config.go | 6 +- simapp/v2/benchmark.go | 39 + simapp/v2/go.mod | 2 + tests/go.mod | 2 + tools/benchmark/CHANGELOG.md | 30 + tools/benchmark/README.md | 24 + tools/benchmark/benchmark.pb.go | 545 ++++++ tools/benchmark/client/cli/tx.go | 186 ++ tools/benchmark/generator/gen.go | 381 ++++ tools/benchmark/generator/gen_test.go | 138 ++ tools/benchmark/go.mod | 158 ++ tools/benchmark/go.sum | 622 +++++++ tools/benchmark/module/depinject.go | 69 + tools/benchmark/module/keeper.go | 119 ++ tools/benchmark/module/module.go | 107 ++ tools/benchmark/proto/buf.gen.gogo.yaml | 8 + tools/benchmark/proto/buf.gen.pulsar.yaml | 19 + tools/benchmark/proto/buf.lock | 38 + tools/benchmark/proto/buf.yaml | 19 + .../cosmos/benchmark/module/v1/module.proto | 43 + .../proto/cosmos/benchmark/v1/benchmark.proto | 17 + .../proto/cosmos/benchmark/v1/tx.proto | 33 + tools/benchmark/sonar-project.properties | 16 + tools/benchmark/tx.pb.go | 670 +++++++ 43 files changed, 7325 insertions(+), 9 deletions(-) create mode 100644 api/cosmos/benchmark/module/v1/module.pulsar.go create mode 100644 api/cosmos/benchmark/v1/benchmark.pulsar.go create mode 100644 api/cosmos/benchmark/v1/tx.pulsar.go create mode 100644 api/cosmos/benchmark/v1/tx_grpc.pb.go create mode 100644 simapp/benchmark.go create mode 100644 simapp/v2/benchmark.go create mode 100644 tools/benchmark/CHANGELOG.md create mode 100644 tools/benchmark/README.md create mode 100644 tools/benchmark/benchmark.pb.go create mode 100644 tools/benchmark/client/cli/tx.go create mode 100644 tools/benchmark/generator/gen.go create mode 100644 tools/benchmark/generator/gen_test.go create mode 100644 tools/benchmark/go.mod create mode 100644 tools/benchmark/go.sum create mode 100644 tools/benchmark/module/depinject.go create mode 100644 tools/benchmark/module/keeper.go create mode 100644 tools/benchmark/module/module.go create mode 100644 tools/benchmark/proto/buf.gen.gogo.yaml create mode 100644 tools/benchmark/proto/buf.gen.pulsar.yaml create mode 100644 tools/benchmark/proto/buf.lock create mode 100644 tools/benchmark/proto/buf.yaml create mode 100644 tools/benchmark/proto/cosmos/benchmark/module/v1/module.proto create mode 100644 tools/benchmark/proto/cosmos/benchmark/v1/benchmark.proto create mode 100644 tools/benchmark/proto/cosmos/benchmark/v1/tx.proto create mode 100644 tools/benchmark/sonar-project.properties create mode 100644 tools/benchmark/tx.pb.go diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f8033e258c15..cd97261d4e15 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -332,6 +332,15 @@ updates: labels: - "A:automerge" - dependencies + - package-ecosystem: gomod + directory: "/tools/benchmark" + schedule: + interval: weekly + day: wednesday + time: "03:25" + labels: + - "A:automerge" + - dependencies # Dependencies should be up to date on release branch - package-ecosystem: gomod diff --git a/.github/pr_labeler.yml b/.github/pr_labeler.yml index 8855dc2efff3..ae243fdddb2a 100644 --- a/.github/pr_labeler.yml +++ b/.github/pr_labeler.yml @@ -14,6 +14,7 @@ - x/simulation/**/* - x/*/simulation/**/* - simsx/**/* + - tools/benchmark/**/* "C:Store": - store/**/* "C:collections": diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 19f27d25d952..ba729ff56a25 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1536,3 +1536,34 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: x/consensus/ + + test-tools-benchmark: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: "1.23.2" + check-latest: true + cache: true + cache-dependency-path: tools/benchmark/go.sum + - uses: technote-space/get-diff-action@v6.1.2 + id: git_diff + with: + PATTERNS: | + tools/benchmark/**/*.go + tools/benchmark/go.mod + tools/benchmark/go.sum + - name: tests + if: env.GIT_DIFF + run: | + cd tools/benchmark + go test -mod=readonly -timeout 30m -coverprofile=coverage.out -covermode=atomic -tags='norace' ./... + - name: sonarcloud + if: ${{ env.GIT_DIFF && !github.event.pull_request.draft && env.SONAR_TOKEN != null }} + uses: SonarSource/sonarcloud-github-action@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + projectBaseDir: tools/benchmark/ diff --git a/api/cosmos/benchmark/module/v1/module.pulsar.go b/api/cosmos/benchmark/module/v1/module.pulsar.go new file mode 100644 index 000000000000..6026b5d30281 --- /dev/null +++ b/api/cosmos/benchmark/module/v1/module.pulsar.go @@ -0,0 +1,1609 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package modulev1 + +import ( + _ "cosmossdk.io/api/cosmos/app/v1alpha1" + binary "encoding/binary" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + math "math" + reflect "reflect" + sync "sync" +) + +var ( + md_Module protoreflect.MessageDescriptor + fd_Module_genesis_params protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_benchmark_module_v1_module_proto_init() + md_Module = File_cosmos_benchmark_module_v1_module_proto.Messages().ByName("Module") + fd_Module_genesis_params = md_Module.Fields().ByName("genesis_params") +} + +var _ protoreflect.Message = (*fastReflection_Module)(nil) + +type fastReflection_Module Module + +func (x *Module) ProtoReflect() protoreflect.Message { + return (*fastReflection_Module)(x) +} + +func (x *Module) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_benchmark_module_v1_module_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Module_messageType fastReflection_Module_messageType +var _ protoreflect.MessageType = fastReflection_Module_messageType{} + +type fastReflection_Module_messageType struct{} + +func (x fastReflection_Module_messageType) Zero() protoreflect.Message { + return (*fastReflection_Module)(nil) +} +func (x fastReflection_Module_messageType) New() protoreflect.Message { + return new(fastReflection_Module) +} +func (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Module) Type() protoreflect.MessageType { + return _fastReflection_Module_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Module) New() protoreflect.Message { + return new(fastReflection_Module) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Module) Interface() protoreflect.ProtoMessage { + return (*Module)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.GenesisParams != nil { + value := protoreflect.ValueOfMessage(x.GenesisParams.ProtoReflect()) + if !f(fd_Module_genesis_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.Module.genesis_params": + return x.GenesisParams != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.Module")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.Module.genesis_params": + x.GenesisParams = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.Module")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.benchmark.module.v1.Module.genesis_params": + value := x.GenesisParams + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.Module")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.Module does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.Module.genesis_params": + x.GenesisParams = value.Message().Interface().(*GeneratorParams) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.Module")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.Module.genesis_params": + if x.GenesisParams == nil { + x.GenesisParams = new(GeneratorParams) + } + return protoreflect.ValueOfMessage(x.GenesisParams.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.Module")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.Module.genesis_params": + m := new(GeneratorParams) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.Module")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.benchmark.module.v1.Module", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Module) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Module) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.GenesisParams != nil { + l = options.Size(x.GenesisParams) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.GenesisParams != nil { + encoded, err := options.Marshal(x.GenesisParams) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GenesisParams", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.GenesisParams == nil { + x.GenesisParams = &GeneratorParams{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.GenesisParams); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_GeneratorParams protoreflect.MessageDescriptor + fd_GeneratorParams_seed protoreflect.FieldDescriptor + fd_GeneratorParams_bucket_count protoreflect.FieldDescriptor + fd_GeneratorParams_key_mean protoreflect.FieldDescriptor + fd_GeneratorParams_key_std_dev protoreflect.FieldDescriptor + fd_GeneratorParams_value_mean protoreflect.FieldDescriptor + fd_GeneratorParams_value_std_dev protoreflect.FieldDescriptor + fd_GeneratorParams_genesis_count protoreflect.FieldDescriptor + fd_GeneratorParams_insert_weight protoreflect.FieldDescriptor + fd_GeneratorParams_update_weight protoreflect.FieldDescriptor + fd_GeneratorParams_get_weight protoreflect.FieldDescriptor + fd_GeneratorParams_delete_weight protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_benchmark_module_v1_module_proto_init() + md_GeneratorParams = File_cosmos_benchmark_module_v1_module_proto.Messages().ByName("GeneratorParams") + fd_GeneratorParams_seed = md_GeneratorParams.Fields().ByName("seed") + fd_GeneratorParams_bucket_count = md_GeneratorParams.Fields().ByName("bucket_count") + fd_GeneratorParams_key_mean = md_GeneratorParams.Fields().ByName("key_mean") + fd_GeneratorParams_key_std_dev = md_GeneratorParams.Fields().ByName("key_std_dev") + fd_GeneratorParams_value_mean = md_GeneratorParams.Fields().ByName("value_mean") + fd_GeneratorParams_value_std_dev = md_GeneratorParams.Fields().ByName("value_std_dev") + fd_GeneratorParams_genesis_count = md_GeneratorParams.Fields().ByName("genesis_count") + fd_GeneratorParams_insert_weight = md_GeneratorParams.Fields().ByName("insert_weight") + fd_GeneratorParams_update_weight = md_GeneratorParams.Fields().ByName("update_weight") + fd_GeneratorParams_get_weight = md_GeneratorParams.Fields().ByName("get_weight") + fd_GeneratorParams_delete_weight = md_GeneratorParams.Fields().ByName("delete_weight") +} + +var _ protoreflect.Message = (*fastReflection_GeneratorParams)(nil) + +type fastReflection_GeneratorParams GeneratorParams + +func (x *GeneratorParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_GeneratorParams)(x) +} + +func (x *GeneratorParams) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_benchmark_module_v1_module_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GeneratorParams_messageType fastReflection_GeneratorParams_messageType +var _ protoreflect.MessageType = fastReflection_GeneratorParams_messageType{} + +type fastReflection_GeneratorParams_messageType struct{} + +func (x fastReflection_GeneratorParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_GeneratorParams)(nil) +} +func (x fastReflection_GeneratorParams_messageType) New() protoreflect.Message { + return new(fastReflection_GeneratorParams) +} +func (x fastReflection_GeneratorParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GeneratorParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GeneratorParams) Descriptor() protoreflect.MessageDescriptor { + return md_GeneratorParams +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GeneratorParams) Type() protoreflect.MessageType { + return _fastReflection_GeneratorParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GeneratorParams) New() protoreflect.Message { + return new(fastReflection_GeneratorParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GeneratorParams) Interface() protoreflect.ProtoMessage { + return (*GeneratorParams)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GeneratorParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Seed != uint64(0) { + value := protoreflect.ValueOfUint64(x.Seed) + if !f(fd_GeneratorParams_seed, value) { + return + } + } + if x.BucketCount != uint64(0) { + value := protoreflect.ValueOfUint64(x.BucketCount) + if !f(fd_GeneratorParams_bucket_count, value) { + return + } + } + if x.KeyMean != uint64(0) { + value := protoreflect.ValueOfUint64(x.KeyMean) + if !f(fd_GeneratorParams_key_mean, value) { + return + } + } + if x.KeyStdDev != uint64(0) { + value := protoreflect.ValueOfUint64(x.KeyStdDev) + if !f(fd_GeneratorParams_key_std_dev, value) { + return + } + } + if x.ValueMean != uint64(0) { + value := protoreflect.ValueOfUint64(x.ValueMean) + if !f(fd_GeneratorParams_value_mean, value) { + return + } + } + if x.ValueStdDev != uint64(0) { + value := protoreflect.ValueOfUint64(x.ValueStdDev) + if !f(fd_GeneratorParams_value_std_dev, value) { + return + } + } + if x.GenesisCount != uint64(0) { + value := protoreflect.ValueOfUint64(x.GenesisCount) + if !f(fd_GeneratorParams_genesis_count, value) { + return + } + } + if x.InsertWeight != float32(0) || math.Signbit(float64(x.InsertWeight)) { + value := protoreflect.ValueOfFloat32(x.InsertWeight) + if !f(fd_GeneratorParams_insert_weight, value) { + return + } + } + if x.UpdateWeight != float32(0) || math.Signbit(float64(x.UpdateWeight)) { + value := protoreflect.ValueOfFloat32(x.UpdateWeight) + if !f(fd_GeneratorParams_update_weight, value) { + return + } + } + if x.GetWeight != float32(0) || math.Signbit(float64(x.GetWeight)) { + value := protoreflect.ValueOfFloat32(x.GetWeight) + if !f(fd_GeneratorParams_get_weight, value) { + return + } + } + if x.DeleteWeight != float32(0) || math.Signbit(float64(x.DeleteWeight)) { + value := protoreflect.ValueOfFloat32(x.DeleteWeight) + if !f(fd_GeneratorParams_delete_weight, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GeneratorParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.GeneratorParams.seed": + return x.Seed != uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.bucket_count": + return x.BucketCount != uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.key_mean": + return x.KeyMean != uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.key_std_dev": + return x.KeyStdDev != uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.value_mean": + return x.ValueMean != uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.value_std_dev": + return x.ValueStdDev != uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.genesis_count": + return x.GenesisCount != uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.insert_weight": + return x.InsertWeight != float32(0) || math.Signbit(float64(x.InsertWeight)) + case "cosmos.benchmark.module.v1.GeneratorParams.update_weight": + return x.UpdateWeight != float32(0) || math.Signbit(float64(x.UpdateWeight)) + case "cosmos.benchmark.module.v1.GeneratorParams.get_weight": + return x.GetWeight != float32(0) || math.Signbit(float64(x.GetWeight)) + case "cosmos.benchmark.module.v1.GeneratorParams.delete_weight": + return x.DeleteWeight != float32(0) || math.Signbit(float64(x.DeleteWeight)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.GeneratorParams")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.GeneratorParams does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GeneratorParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.GeneratorParams.seed": + x.Seed = uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.bucket_count": + x.BucketCount = uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.key_mean": + x.KeyMean = uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.key_std_dev": + x.KeyStdDev = uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.value_mean": + x.ValueMean = uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.value_std_dev": + x.ValueStdDev = uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.genesis_count": + x.GenesisCount = uint64(0) + case "cosmos.benchmark.module.v1.GeneratorParams.insert_weight": + x.InsertWeight = float32(0) + case "cosmos.benchmark.module.v1.GeneratorParams.update_weight": + x.UpdateWeight = float32(0) + case "cosmos.benchmark.module.v1.GeneratorParams.get_weight": + x.GetWeight = float32(0) + case "cosmos.benchmark.module.v1.GeneratorParams.delete_weight": + x.DeleteWeight = float32(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.GeneratorParams")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.GeneratorParams does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GeneratorParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.benchmark.module.v1.GeneratorParams.seed": + value := x.Seed + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.module.v1.GeneratorParams.bucket_count": + value := x.BucketCount + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.module.v1.GeneratorParams.key_mean": + value := x.KeyMean + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.module.v1.GeneratorParams.key_std_dev": + value := x.KeyStdDev + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.module.v1.GeneratorParams.value_mean": + value := x.ValueMean + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.module.v1.GeneratorParams.value_std_dev": + value := x.ValueStdDev + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.module.v1.GeneratorParams.genesis_count": + value := x.GenesisCount + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.module.v1.GeneratorParams.insert_weight": + value := x.InsertWeight + return protoreflect.ValueOfFloat32(value) + case "cosmos.benchmark.module.v1.GeneratorParams.update_weight": + value := x.UpdateWeight + return protoreflect.ValueOfFloat32(value) + case "cosmos.benchmark.module.v1.GeneratorParams.get_weight": + value := x.GetWeight + return protoreflect.ValueOfFloat32(value) + case "cosmos.benchmark.module.v1.GeneratorParams.delete_weight": + value := x.DeleteWeight + return protoreflect.ValueOfFloat32(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.GeneratorParams")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.GeneratorParams does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GeneratorParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.GeneratorParams.seed": + x.Seed = value.Uint() + case "cosmos.benchmark.module.v1.GeneratorParams.bucket_count": + x.BucketCount = value.Uint() + case "cosmos.benchmark.module.v1.GeneratorParams.key_mean": + x.KeyMean = value.Uint() + case "cosmos.benchmark.module.v1.GeneratorParams.key_std_dev": + x.KeyStdDev = value.Uint() + case "cosmos.benchmark.module.v1.GeneratorParams.value_mean": + x.ValueMean = value.Uint() + case "cosmos.benchmark.module.v1.GeneratorParams.value_std_dev": + x.ValueStdDev = value.Uint() + case "cosmos.benchmark.module.v1.GeneratorParams.genesis_count": + x.GenesisCount = value.Uint() + case "cosmos.benchmark.module.v1.GeneratorParams.insert_weight": + x.InsertWeight = float32(value.Float()) + case "cosmos.benchmark.module.v1.GeneratorParams.update_weight": + x.UpdateWeight = float32(value.Float()) + case "cosmos.benchmark.module.v1.GeneratorParams.get_weight": + x.GetWeight = float32(value.Float()) + case "cosmos.benchmark.module.v1.GeneratorParams.delete_weight": + x.DeleteWeight = float32(value.Float()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.GeneratorParams")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.GeneratorParams does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GeneratorParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.GeneratorParams.seed": + panic(fmt.Errorf("field seed of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.bucket_count": + panic(fmt.Errorf("field bucket_count of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.key_mean": + panic(fmt.Errorf("field key_mean of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.key_std_dev": + panic(fmt.Errorf("field key_std_dev of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.value_mean": + panic(fmt.Errorf("field value_mean of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.value_std_dev": + panic(fmt.Errorf("field value_std_dev of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.genesis_count": + panic(fmt.Errorf("field genesis_count of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.insert_weight": + panic(fmt.Errorf("field insert_weight of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.update_weight": + panic(fmt.Errorf("field update_weight of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.get_weight": + panic(fmt.Errorf("field get_weight of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + case "cosmos.benchmark.module.v1.GeneratorParams.delete_weight": + panic(fmt.Errorf("field delete_weight of message cosmos.benchmark.module.v1.GeneratorParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.GeneratorParams")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.GeneratorParams does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GeneratorParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.module.v1.GeneratorParams.seed": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.bucket_count": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.key_mean": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.key_std_dev": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.value_mean": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.value_std_dev": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.genesis_count": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.insert_weight": + return protoreflect.ValueOfFloat32(float32(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.update_weight": + return protoreflect.ValueOfFloat32(float32(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.get_weight": + return protoreflect.ValueOfFloat32(float32(0)) + case "cosmos.benchmark.module.v1.GeneratorParams.delete_weight": + return protoreflect.ValueOfFloat32(float32(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.module.v1.GeneratorParams")) + } + panic(fmt.Errorf("message cosmos.benchmark.module.v1.GeneratorParams does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GeneratorParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.benchmark.module.v1.GeneratorParams", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GeneratorParams) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GeneratorParams) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GeneratorParams) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GeneratorParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GeneratorParams) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Seed != 0 { + n += 1 + runtime.Sov(uint64(x.Seed)) + } + if x.BucketCount != 0 { + n += 1 + runtime.Sov(uint64(x.BucketCount)) + } + if x.KeyMean != 0 { + n += 1 + runtime.Sov(uint64(x.KeyMean)) + } + if x.KeyStdDev != 0 { + n += 1 + runtime.Sov(uint64(x.KeyStdDev)) + } + if x.ValueMean != 0 { + n += 1 + runtime.Sov(uint64(x.ValueMean)) + } + if x.ValueStdDev != 0 { + n += 1 + runtime.Sov(uint64(x.ValueStdDev)) + } + if x.GenesisCount != 0 { + n += 1 + runtime.Sov(uint64(x.GenesisCount)) + } + if x.InsertWeight != 0 || math.Signbit(float64(x.InsertWeight)) { + n += 5 + } + if x.UpdateWeight != 0 || math.Signbit(float64(x.UpdateWeight)) { + n += 5 + } + if x.GetWeight != 0 || math.Signbit(float64(x.GetWeight)) { + n += 5 + } + if x.DeleteWeight != 0 || math.Signbit(float64(x.DeleteWeight)) { + n += 5 + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GeneratorParams) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.GetWeight != 0 || math.Signbit(float64(x.GetWeight)) { + i -= 4 + binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(x.GetWeight)))) + i-- + dAtA[i] = 0x65 + } + if x.DeleteWeight != 0 || math.Signbit(float64(x.DeleteWeight)) { + i -= 4 + binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(x.DeleteWeight)))) + i-- + dAtA[i] = 0x5d + } + if x.UpdateWeight != 0 || math.Signbit(float64(x.UpdateWeight)) { + i -= 4 + binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(x.UpdateWeight)))) + i-- + dAtA[i] = 0x55 + } + if x.InsertWeight != 0 || math.Signbit(float64(x.InsertWeight)) { + i -= 4 + binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(x.InsertWeight)))) + i-- + dAtA[i] = 0x4d + } + if x.GenesisCount != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.GenesisCount)) + i-- + dAtA[i] = 0x40 + } + if x.ValueStdDev != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.ValueStdDev)) + i-- + dAtA[i] = 0x38 + } + if x.ValueMean != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.ValueMean)) + i-- + dAtA[i] = 0x30 + } + if x.KeyStdDev != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.KeyStdDev)) + i-- + dAtA[i] = 0x20 + } + if x.KeyMean != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.KeyMean)) + i-- + dAtA[i] = 0x18 + } + if x.BucketCount != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.BucketCount)) + i-- + dAtA[i] = 0x10 + } + if x.Seed != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Seed)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GeneratorParams) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GeneratorParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GeneratorParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Seed", wireType) + } + x.Seed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Seed |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BucketCount", wireType) + } + x.BucketCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.BucketCount |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field KeyMean", wireType) + } + x.KeyMean = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.KeyMean |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field KeyStdDev", wireType) + } + x.KeyStdDev = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.KeyStdDev |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValueMean", wireType) + } + x.ValueMean = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.ValueMean |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValueStdDev", wireType) + } + x.ValueStdDev = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.ValueStdDev |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GenesisCount", wireType) + } + x.GenesisCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.GenesisCount |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 5 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field InsertWeight", wireType) + } + var v uint32 + if (iNdEx + 4) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + v = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:])) + iNdEx += 4 + x.InsertWeight = float32(math.Float32frombits(v)) + case 10: + if wireType != 5 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field UpdateWeight", wireType) + } + var v uint32 + if (iNdEx + 4) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + v = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:])) + iNdEx += 4 + x.UpdateWeight = float32(math.Float32frombits(v)) + case 12: + if wireType != 5 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GetWeight", wireType) + } + var v uint32 + if (iNdEx + 4) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + v = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:])) + iNdEx += 4 + x.GetWeight = float32(math.Float32frombits(v)) + case 11: + if wireType != 5 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DeleteWeight", wireType) + } + var v uint32 + if (iNdEx + 4) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + v = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:])) + iNdEx += 4 + x.DeleteWeight = float32(math.Float32frombits(v)) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: cosmos/benchmark/module/v1/module.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Module is the config object of the benchmark module. +type Module struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GenesisParams *GeneratorParams `protobuf:"bytes,1,opt,name=genesis_params,json=genesisParams,proto3" json:"genesis_params,omitempty"` +} + +func (x *Module) Reset() { + *x = Module{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_benchmark_module_v1_module_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Module) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Module) ProtoMessage() {} + +// Deprecated: Use Module.ProtoReflect.Descriptor instead. +func (*Module) Descriptor() ([]byte, []int) { + return file_cosmos_benchmark_module_v1_module_proto_rawDescGZIP(), []int{0} +} + +func (x *Module) GetGenesisParams() *GeneratorParams { + if x != nil { + return x.GenesisParams + } + return nil +} + +// GenesisParams defines the genesis parameters for the benchmark module. +type GeneratorParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seed uint64 `protobuf:"varint,1,opt,name=seed,proto3" json:"seed,omitempty"` + BucketCount uint64 `protobuf:"varint,2,opt,name=bucket_count,json=bucketCount,proto3" json:"bucket_count,omitempty"` + KeyMean uint64 `protobuf:"varint,3,opt,name=key_mean,json=keyMean,proto3" json:"key_mean,omitempty"` + KeyStdDev uint64 `protobuf:"varint,4,opt,name=key_std_dev,json=keyStdDev,proto3" json:"key_std_dev,omitempty"` + ValueMean uint64 `protobuf:"varint,6,opt,name=value_mean,json=valueMean,proto3" json:"value_mean,omitempty"` + ValueStdDev uint64 `protobuf:"varint,7,opt,name=value_std_dev,json=valueStdDev,proto3" json:"value_std_dev,omitempty"` + GenesisCount uint64 `protobuf:"varint,8,opt,name=genesis_count,json=genesisCount,proto3" json:"genesis_count,omitempty"` + InsertWeight float32 `protobuf:"fixed32,9,opt,name=insert_weight,json=insertWeight,proto3" json:"insert_weight,omitempty"` + UpdateWeight float32 `protobuf:"fixed32,10,opt,name=update_weight,json=updateWeight,proto3" json:"update_weight,omitempty"` + GetWeight float32 `protobuf:"fixed32,12,opt,name=get_weight,json=getWeight,proto3" json:"get_weight,omitempty"` + DeleteWeight float32 `protobuf:"fixed32,11,opt,name=delete_weight,json=deleteWeight,proto3" json:"delete_weight,omitempty"` +} + +func (x *GeneratorParams) Reset() { + *x = GeneratorParams{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_benchmark_module_v1_module_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GeneratorParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GeneratorParams) ProtoMessage() {} + +// Deprecated: Use GeneratorParams.ProtoReflect.Descriptor instead. +func (*GeneratorParams) Descriptor() ([]byte, []int) { + return file_cosmos_benchmark_module_v1_module_proto_rawDescGZIP(), []int{1} +} + +func (x *GeneratorParams) GetSeed() uint64 { + if x != nil { + return x.Seed + } + return 0 +} + +func (x *GeneratorParams) GetBucketCount() uint64 { + if x != nil { + return x.BucketCount + } + return 0 +} + +func (x *GeneratorParams) GetKeyMean() uint64 { + if x != nil { + return x.KeyMean + } + return 0 +} + +func (x *GeneratorParams) GetKeyStdDev() uint64 { + if x != nil { + return x.KeyStdDev + } + return 0 +} + +func (x *GeneratorParams) GetValueMean() uint64 { + if x != nil { + return x.ValueMean + } + return 0 +} + +func (x *GeneratorParams) GetValueStdDev() uint64 { + if x != nil { + return x.ValueStdDev + } + return 0 +} + +func (x *GeneratorParams) GetGenesisCount() uint64 { + if x != nil { + return x.GenesisCount + } + return 0 +} + +func (x *GeneratorParams) GetInsertWeight() float32 { + if x != nil { + return x.InsertWeight + } + return 0 +} + +func (x *GeneratorParams) GetUpdateWeight() float32 { + if x != nil { + return x.UpdateWeight + } + return 0 +} + +func (x *GeneratorParams) GetGetWeight() float32 { + if x != nil { + return x.GetWeight + } + return 0 +} + +func (x *GeneratorParams) GetDeleteWeight() float32 { + if x != nil { + return x.DeleteWeight + } + return 0 +} + +var File_cosmos_benchmark_module_v1_module_proto protoreflect.FileDescriptor + +var file_cosmos_benchmark_module_v1_module_proto_rawDesc = []byte{ + 0x0a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, + 0x72, 0x6b, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, + 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x82, 0x01, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x12, 0x52, 0x0a, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x24, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x1e, 0x0a, 0x1c, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x74, 0x6f, 0x6f, + 0x6c, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0xf9, 0x02, 0x0a, + 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, + 0x73, 0x65, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x6d, + 0x65, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x4d, 0x65, + 0x61, 0x6e, 0x12, 0x1e, 0x0a, 0x0b, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x64, 0x5f, 0x64, 0x65, + 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x53, 0x74, 0x64, 0x44, + 0x65, 0x76, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x65, 0x61, 0x6e, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x65, 0x61, + 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x53, + 0x74, 0x64, 0x44, 0x65, 0x76, 0x12, 0x23, 0x0a, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x67, 0x65, + 0x6e, 0x65, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, + 0x73, 0x65, 0x72, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x23, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x67, 0x65, 0x74, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x77, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0xee, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, + 0x6b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x34, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x43, 0x42, 0x4d, 0xaa, 0x02, 0x1a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x65, 0x6e, + 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x26, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, + 0x61, 0x72, 0x6b, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x3a, 0x3a, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x3a, 0x3a, 0x4d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_cosmos_benchmark_module_v1_module_proto_rawDescOnce sync.Once + file_cosmos_benchmark_module_v1_module_proto_rawDescData = file_cosmos_benchmark_module_v1_module_proto_rawDesc +) + +func file_cosmos_benchmark_module_v1_module_proto_rawDescGZIP() []byte { + file_cosmos_benchmark_module_v1_module_proto_rawDescOnce.Do(func() { + file_cosmos_benchmark_module_v1_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_cosmos_benchmark_module_v1_module_proto_rawDescData) + }) + return file_cosmos_benchmark_module_v1_module_proto_rawDescData +} + +var file_cosmos_benchmark_module_v1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_cosmos_benchmark_module_v1_module_proto_goTypes = []interface{}{ + (*Module)(nil), // 0: cosmos.benchmark.module.v1.Module + (*GeneratorParams)(nil), // 1: cosmos.benchmark.module.v1.GeneratorParams +} +var file_cosmos_benchmark_module_v1_module_proto_depIdxs = []int32{ + 1, // 0: cosmos.benchmark.module.v1.Module.genesis_params:type_name -> cosmos.benchmark.module.v1.GeneratorParams + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_cosmos_benchmark_module_v1_module_proto_init() } +func file_cosmos_benchmark_module_v1_module_proto_init() { + if File_cosmos_benchmark_module_v1_module_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_cosmos_benchmark_module_v1_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Module); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_benchmark_module_v1_module_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GeneratorParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_cosmos_benchmark_module_v1_module_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_cosmos_benchmark_module_v1_module_proto_goTypes, + DependencyIndexes: file_cosmos_benchmark_module_v1_module_proto_depIdxs, + MessageInfos: file_cosmos_benchmark_module_v1_module_proto_msgTypes, + }.Build() + File_cosmos_benchmark_module_v1_module_proto = out.File + file_cosmos_benchmark_module_v1_module_proto_rawDesc = nil + file_cosmos_benchmark_module_v1_module_proto_goTypes = nil + file_cosmos_benchmark_module_v1_module_proto_depIdxs = nil +} diff --git a/api/cosmos/benchmark/v1/benchmark.pulsar.go b/api/cosmos/benchmark/v1/benchmark.pulsar.go new file mode 100644 index 000000000000..f834bf313216 --- /dev/null +++ b/api/cosmos/benchmark/v1/benchmark.pulsar.go @@ -0,0 +1,928 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package benchmarkv1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_Op protoreflect.MessageDescriptor + fd_Op_seed protoreflect.FieldDescriptor + fd_Op_actor protoreflect.FieldDescriptor + fd_Op_key_length protoreflect.FieldDescriptor + fd_Op_value_length protoreflect.FieldDescriptor + fd_Op_iterations protoreflect.FieldDescriptor + fd_Op_delete protoreflect.FieldDescriptor + fd_Op_exists protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_benchmark_v1_benchmark_proto_init() + md_Op = File_cosmos_benchmark_v1_benchmark_proto.Messages().ByName("Op") + fd_Op_seed = md_Op.Fields().ByName("seed") + fd_Op_actor = md_Op.Fields().ByName("actor") + fd_Op_key_length = md_Op.Fields().ByName("key_length") + fd_Op_value_length = md_Op.Fields().ByName("value_length") + fd_Op_iterations = md_Op.Fields().ByName("iterations") + fd_Op_delete = md_Op.Fields().ByName("delete") + fd_Op_exists = md_Op.Fields().ByName("exists") +} + +var _ protoreflect.Message = (*fastReflection_Op)(nil) + +type fastReflection_Op Op + +func (x *Op) ProtoReflect() protoreflect.Message { + return (*fastReflection_Op)(x) +} + +func (x *Op) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_benchmark_v1_benchmark_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Op_messageType fastReflection_Op_messageType +var _ protoreflect.MessageType = fastReflection_Op_messageType{} + +type fastReflection_Op_messageType struct{} + +func (x fastReflection_Op_messageType) Zero() protoreflect.Message { + return (*fastReflection_Op)(nil) +} +func (x fastReflection_Op_messageType) New() protoreflect.Message { + return new(fastReflection_Op) +} +func (x fastReflection_Op_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Op +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Op) Descriptor() protoreflect.MessageDescriptor { + return md_Op +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Op) Type() protoreflect.MessageType { + return _fastReflection_Op_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Op) New() protoreflect.Message { + return new(fastReflection_Op) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Op) Interface() protoreflect.ProtoMessage { + return (*Op)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Op) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Seed != uint64(0) { + value := protoreflect.ValueOfUint64(x.Seed) + if !f(fd_Op_seed, value) { + return + } + } + if x.Actor != "" { + value := protoreflect.ValueOfString(x.Actor) + if !f(fd_Op_actor, value) { + return + } + } + if x.KeyLength != uint64(0) { + value := protoreflect.ValueOfUint64(x.KeyLength) + if !f(fd_Op_key_length, value) { + return + } + } + if x.ValueLength != uint64(0) { + value := protoreflect.ValueOfUint64(x.ValueLength) + if !f(fd_Op_value_length, value) { + return + } + } + if x.Iterations != uint32(0) { + value := protoreflect.ValueOfUint32(x.Iterations) + if !f(fd_Op_iterations, value) { + return + } + } + if x.Delete != false { + value := protoreflect.ValueOfBool(x.Delete) + if !f(fd_Op_delete, value) { + return + } + } + if x.Exists != false { + value := protoreflect.ValueOfBool(x.Exists) + if !f(fd_Op_exists, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Op) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.benchmark.v1.Op.seed": + return x.Seed != uint64(0) + case "cosmos.benchmark.v1.Op.actor": + return x.Actor != "" + case "cosmos.benchmark.v1.Op.key_length": + return x.KeyLength != uint64(0) + case "cosmos.benchmark.v1.Op.value_length": + return x.ValueLength != uint64(0) + case "cosmos.benchmark.v1.Op.iterations": + return x.Iterations != uint32(0) + case "cosmos.benchmark.v1.Op.delete": + return x.Delete != false + case "cosmos.benchmark.v1.Op.exists": + return x.Exists != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.Op")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.Op does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Op) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.benchmark.v1.Op.seed": + x.Seed = uint64(0) + case "cosmos.benchmark.v1.Op.actor": + x.Actor = "" + case "cosmos.benchmark.v1.Op.key_length": + x.KeyLength = uint64(0) + case "cosmos.benchmark.v1.Op.value_length": + x.ValueLength = uint64(0) + case "cosmos.benchmark.v1.Op.iterations": + x.Iterations = uint32(0) + case "cosmos.benchmark.v1.Op.delete": + x.Delete = false + case "cosmos.benchmark.v1.Op.exists": + x.Exists = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.Op")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.Op does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Op) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.benchmark.v1.Op.seed": + value := x.Seed + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.v1.Op.actor": + value := x.Actor + return protoreflect.ValueOfString(value) + case "cosmos.benchmark.v1.Op.key_length": + value := x.KeyLength + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.v1.Op.value_length": + value := x.ValueLength + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.v1.Op.iterations": + value := x.Iterations + return protoreflect.ValueOfUint32(value) + case "cosmos.benchmark.v1.Op.delete": + value := x.Delete + return protoreflect.ValueOfBool(value) + case "cosmos.benchmark.v1.Op.exists": + value := x.Exists + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.Op")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.Op does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Op) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.benchmark.v1.Op.seed": + x.Seed = value.Uint() + case "cosmos.benchmark.v1.Op.actor": + x.Actor = value.Interface().(string) + case "cosmos.benchmark.v1.Op.key_length": + x.KeyLength = value.Uint() + case "cosmos.benchmark.v1.Op.value_length": + x.ValueLength = value.Uint() + case "cosmos.benchmark.v1.Op.iterations": + x.Iterations = uint32(value.Uint()) + case "cosmos.benchmark.v1.Op.delete": + x.Delete = value.Bool() + case "cosmos.benchmark.v1.Op.exists": + x.Exists = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.Op")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.Op does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Op) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.v1.Op.seed": + panic(fmt.Errorf("field seed of message cosmos.benchmark.v1.Op is not mutable")) + case "cosmos.benchmark.v1.Op.actor": + panic(fmt.Errorf("field actor of message cosmos.benchmark.v1.Op is not mutable")) + case "cosmos.benchmark.v1.Op.key_length": + panic(fmt.Errorf("field key_length of message cosmos.benchmark.v1.Op is not mutable")) + case "cosmos.benchmark.v1.Op.value_length": + panic(fmt.Errorf("field value_length of message cosmos.benchmark.v1.Op is not mutable")) + case "cosmos.benchmark.v1.Op.iterations": + panic(fmt.Errorf("field iterations of message cosmos.benchmark.v1.Op is not mutable")) + case "cosmos.benchmark.v1.Op.delete": + panic(fmt.Errorf("field delete of message cosmos.benchmark.v1.Op is not mutable")) + case "cosmos.benchmark.v1.Op.exists": + panic(fmt.Errorf("field exists of message cosmos.benchmark.v1.Op is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.Op")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.Op does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Op) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.v1.Op.seed": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.v1.Op.actor": + return protoreflect.ValueOfString("") + case "cosmos.benchmark.v1.Op.key_length": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.v1.Op.value_length": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.v1.Op.iterations": + return protoreflect.ValueOfUint32(uint32(0)) + case "cosmos.benchmark.v1.Op.delete": + return protoreflect.ValueOfBool(false) + case "cosmos.benchmark.v1.Op.exists": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.Op")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.Op does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Op) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.benchmark.v1.Op", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Op) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Op) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Op) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Op) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Op) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Seed != 0 { + n += 1 + runtime.Sov(uint64(x.Seed)) + } + l = len(x.Actor) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.KeyLength != 0 { + n += 1 + runtime.Sov(uint64(x.KeyLength)) + } + if x.ValueLength != 0 { + n += 1 + runtime.Sov(uint64(x.ValueLength)) + } + if x.Iterations != 0 { + n += 1 + runtime.Sov(uint64(x.Iterations)) + } + if x.Delete { + n += 2 + } + if x.Exists { + n += 2 + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Op) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Exists { + i-- + if x.Exists { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if x.Delete { + i-- + if x.Delete { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if x.Iterations != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Iterations)) + i-- + dAtA[i] = 0x28 + } + if x.ValueLength != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.ValueLength)) + i-- + dAtA[i] = 0x20 + } + if x.KeyLength != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.KeyLength)) + i-- + dAtA[i] = 0x18 + } + if len(x.Actor) > 0 { + i -= len(x.Actor) + copy(dAtA[i:], x.Actor) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Actor))) + i-- + dAtA[i] = 0x12 + } + if x.Seed != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Seed)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Op) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Op: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Op: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Seed", wireType) + } + x.Seed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Seed |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Actor", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Actor = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field KeyLength", wireType) + } + x.KeyLength = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.KeyLength |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ValueLength", wireType) + } + x.ValueLength = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.ValueLength |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Iterations", wireType) + } + x.Iterations = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Iterations |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Delete", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Delete = bool(v != 0) + case 7: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Exists", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Exists = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: cosmos/benchmark/v1/benchmark.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Op is a message describing a benchmark operation. +type Op struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seed uint64 `protobuf:"varint,1,opt,name=seed,proto3" json:"seed,omitempty"` + Actor string `protobuf:"bytes,2,opt,name=actor,proto3" json:"actor,omitempty"` + KeyLength uint64 `protobuf:"varint,3,opt,name=key_length,json=keyLength,proto3" json:"key_length,omitempty"` + ValueLength uint64 `protobuf:"varint,4,opt,name=value_length,json=valueLength,proto3" json:"value_length,omitempty"` + Iterations uint32 `protobuf:"varint,5,opt,name=iterations,proto3" json:"iterations,omitempty"` + Delete bool `protobuf:"varint,6,opt,name=delete,proto3" json:"delete,omitempty"` + Exists bool `protobuf:"varint,7,opt,name=exists,proto3" json:"exists,omitempty"` +} + +func (x *Op) Reset() { + *x = Op{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_benchmark_v1_benchmark_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Op) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Op) ProtoMessage() {} + +// Deprecated: Use Op.ProtoReflect.Descriptor instead. +func (*Op) Descriptor() ([]byte, []int) { + return file_cosmos_benchmark_v1_benchmark_proto_rawDescGZIP(), []int{0} +} + +func (x *Op) GetSeed() uint64 { + if x != nil { + return x.Seed + } + return 0 +} + +func (x *Op) GetActor() string { + if x != nil { + return x.Actor + } + return "" +} + +func (x *Op) GetKeyLength() uint64 { + if x != nil { + return x.KeyLength + } + return 0 +} + +func (x *Op) GetValueLength() uint64 { + if x != nil { + return x.ValueLength + } + return 0 +} + +func (x *Op) GetIterations() uint32 { + if x != nil { + return x.Iterations + } + return 0 +} + +func (x *Op) GetDelete() bool { + if x != nil { + return x.Delete + } + return false +} + +func (x *Op) GetExists() bool { + if x != nil { + return x.Exists + } + return false +} + +var File_cosmos_benchmark_v1_benchmark_proto protoreflect.FileDescriptor + +var file_cosmos_benchmark_v1_benchmark_proto_rawDesc = []byte{ + 0x0a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, + 0x72, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x65, + 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x22, 0xc0, 0x01, 0x0a, 0x02, 0x4f, + 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x04, 0x73, 0x65, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, + 0x65, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x6b, 0x65, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1e, 0x0a, + 0x0a, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x42, 0xc9, 0x01, + 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x65, 0x6e, + 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x42, 0x65, 0x6e, 0x63, 0x68, + 0x6d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x76, + 0x31, 0x3b, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x43, 0x42, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x65, 0x6e, + 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x5c, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x1f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, + 0x72, 0x6b, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x15, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x42, 0x65, 0x6e, 0x63, + 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_cosmos_benchmark_v1_benchmark_proto_rawDescOnce sync.Once + file_cosmos_benchmark_v1_benchmark_proto_rawDescData = file_cosmos_benchmark_v1_benchmark_proto_rawDesc +) + +func file_cosmos_benchmark_v1_benchmark_proto_rawDescGZIP() []byte { + file_cosmos_benchmark_v1_benchmark_proto_rawDescOnce.Do(func() { + file_cosmos_benchmark_v1_benchmark_proto_rawDescData = protoimpl.X.CompressGZIP(file_cosmos_benchmark_v1_benchmark_proto_rawDescData) + }) + return file_cosmos_benchmark_v1_benchmark_proto_rawDescData +} + +var file_cosmos_benchmark_v1_benchmark_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_cosmos_benchmark_v1_benchmark_proto_goTypes = []interface{}{ + (*Op)(nil), // 0: cosmos.benchmark.v1.Op +} +var file_cosmos_benchmark_v1_benchmark_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_cosmos_benchmark_v1_benchmark_proto_init() } +func file_cosmos_benchmark_v1_benchmark_proto_init() { + if File_cosmos_benchmark_v1_benchmark_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_cosmos_benchmark_v1_benchmark_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Op); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_cosmos_benchmark_v1_benchmark_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_cosmos_benchmark_v1_benchmark_proto_goTypes, + DependencyIndexes: file_cosmos_benchmark_v1_benchmark_proto_depIdxs, + MessageInfos: file_cosmos_benchmark_v1_benchmark_proto_msgTypes, + }.Build() + File_cosmos_benchmark_v1_benchmark_proto = out.File + file_cosmos_benchmark_v1_benchmark_proto_rawDesc = nil + file_cosmos_benchmark_v1_benchmark_proto_goTypes = nil + file_cosmos_benchmark_v1_benchmark_proto_depIdxs = nil +} diff --git a/api/cosmos/benchmark/v1/tx.pulsar.go b/api/cosmos/benchmark/v1/tx.pulsar.go new file mode 100644 index 000000000000..b119e5c8e6d3 --- /dev/null +++ b/api/cosmos/benchmark/v1/tx.pulsar.go @@ -0,0 +1,1256 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package benchmarkv1 + +import ( + _ "cosmossdk.io/api/amino" + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var _ protoreflect.List = (*_MsgLoadTest_2_list)(nil) + +type _MsgLoadTest_2_list struct { + list *[]*Op +} + +func (x *_MsgLoadTest_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_MsgLoadTest_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_MsgLoadTest_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Op) + (*x.list)[i] = concreteValue +} + +func (x *_MsgLoadTest_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Op) + *x.list = append(*x.list, concreteValue) +} + +func (x *_MsgLoadTest_2_list) AppendMutable() protoreflect.Value { + v := new(Op) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgLoadTest_2_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_MsgLoadTest_2_list) NewElement() protoreflect.Value { + v := new(Op) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgLoadTest_2_list) IsValid() bool { + return x.list != nil +} + +var ( + md_MsgLoadTest protoreflect.MessageDescriptor + fd_MsgLoadTest_caller protoreflect.FieldDescriptor + fd_MsgLoadTest_ops protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_benchmark_v1_tx_proto_init() + md_MsgLoadTest = File_cosmos_benchmark_v1_tx_proto.Messages().ByName("MsgLoadTest") + fd_MsgLoadTest_caller = md_MsgLoadTest.Fields().ByName("caller") + fd_MsgLoadTest_ops = md_MsgLoadTest.Fields().ByName("ops") +} + +var _ protoreflect.Message = (*fastReflection_MsgLoadTest)(nil) + +type fastReflection_MsgLoadTest MsgLoadTest + +func (x *MsgLoadTest) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgLoadTest)(x) +} + +func (x *MsgLoadTest) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_benchmark_v1_tx_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgLoadTest_messageType fastReflection_MsgLoadTest_messageType +var _ protoreflect.MessageType = fastReflection_MsgLoadTest_messageType{} + +type fastReflection_MsgLoadTest_messageType struct{} + +func (x fastReflection_MsgLoadTest_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgLoadTest)(nil) +} +func (x fastReflection_MsgLoadTest_messageType) New() protoreflect.Message { + return new(fastReflection_MsgLoadTest) +} +func (x fastReflection_MsgLoadTest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgLoadTest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgLoadTest) Descriptor() protoreflect.MessageDescriptor { + return md_MsgLoadTest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgLoadTest) Type() protoreflect.MessageType { + return _fastReflection_MsgLoadTest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgLoadTest) New() protoreflect.Message { + return new(fastReflection_MsgLoadTest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgLoadTest) Interface() protoreflect.ProtoMessage { + return (*MsgLoadTest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgLoadTest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Caller) != 0 { + value := protoreflect.ValueOfBytes(x.Caller) + if !f(fd_MsgLoadTest_caller, value) { + return + } + } + if len(x.Ops) != 0 { + value := protoreflect.ValueOfList(&_MsgLoadTest_2_list{list: &x.Ops}) + if !f(fd_MsgLoadTest_ops, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgLoadTest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTest.caller": + return len(x.Caller) != 0 + case "cosmos.benchmark.v1.MsgLoadTest.ops": + return len(x.Ops) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTest")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLoadTest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTest.caller": + x.Caller = nil + case "cosmos.benchmark.v1.MsgLoadTest.ops": + x.Ops = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTest")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgLoadTest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.benchmark.v1.MsgLoadTest.caller": + value := x.Caller + return protoreflect.ValueOfBytes(value) + case "cosmos.benchmark.v1.MsgLoadTest.ops": + if len(x.Ops) == 0 { + return protoreflect.ValueOfList(&_MsgLoadTest_2_list{}) + } + listValue := &_MsgLoadTest_2_list{list: &x.Ops} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTest")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLoadTest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTest.caller": + x.Caller = value.Bytes() + case "cosmos.benchmark.v1.MsgLoadTest.ops": + lv := value.List() + clv := lv.(*_MsgLoadTest_2_list) + x.Ops = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTest")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLoadTest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTest.ops": + if x.Ops == nil { + x.Ops = []*Op{} + } + value := &_MsgLoadTest_2_list{list: &x.Ops} + return protoreflect.ValueOfList(value) + case "cosmos.benchmark.v1.MsgLoadTest.caller": + panic(fmt.Errorf("field caller of message cosmos.benchmark.v1.MsgLoadTest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTest")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgLoadTest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTest.caller": + return protoreflect.ValueOfBytes(nil) + case "cosmos.benchmark.v1.MsgLoadTest.ops": + list := []*Op{} + return protoreflect.ValueOfList(&_MsgLoadTest_2_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTest")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgLoadTest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.benchmark.v1.MsgLoadTest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgLoadTest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLoadTest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgLoadTest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgLoadTest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgLoadTest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Caller) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.Ops) > 0 { + for _, e := range x.Ops { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgLoadTest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Ops) > 0 { + for iNdEx := len(x.Ops) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Ops[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + } + if len(x.Caller) > 0 { + i -= len(x.Caller) + copy(dAtA[i:], x.Caller) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Caller))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgLoadTest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgLoadTest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgLoadTest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Caller", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Caller = append(x.Caller[:0], dAtA[iNdEx:postIndex]...) + if x.Caller == nil { + x.Caller = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Ops", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Ops = append(x.Ops, &Op{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Ops[len(x.Ops)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgLoadTestResponse protoreflect.MessageDescriptor + fd_MsgLoadTestResponse_total_time protoreflect.FieldDescriptor + fd_MsgLoadTestResponse_total_errors protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_benchmark_v1_tx_proto_init() + md_MsgLoadTestResponse = File_cosmos_benchmark_v1_tx_proto.Messages().ByName("MsgLoadTestResponse") + fd_MsgLoadTestResponse_total_time = md_MsgLoadTestResponse.Fields().ByName("total_time") + fd_MsgLoadTestResponse_total_errors = md_MsgLoadTestResponse.Fields().ByName("total_errors") +} + +var _ protoreflect.Message = (*fastReflection_MsgLoadTestResponse)(nil) + +type fastReflection_MsgLoadTestResponse MsgLoadTestResponse + +func (x *MsgLoadTestResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgLoadTestResponse)(x) +} + +func (x *MsgLoadTestResponse) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_benchmark_v1_tx_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgLoadTestResponse_messageType fastReflection_MsgLoadTestResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgLoadTestResponse_messageType{} + +type fastReflection_MsgLoadTestResponse_messageType struct{} + +func (x fastReflection_MsgLoadTestResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgLoadTestResponse)(nil) +} +func (x fastReflection_MsgLoadTestResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgLoadTestResponse) +} +func (x fastReflection_MsgLoadTestResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgLoadTestResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgLoadTestResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgLoadTestResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgLoadTestResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgLoadTestResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgLoadTestResponse) New() protoreflect.Message { + return new(fastReflection_MsgLoadTestResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgLoadTestResponse) Interface() protoreflect.ProtoMessage { + return (*MsgLoadTestResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgLoadTestResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.TotalTime != uint64(0) { + value := protoreflect.ValueOfUint64(x.TotalTime) + if !f(fd_MsgLoadTestResponse_total_time, value) { + return + } + } + if x.TotalErrors != uint64(0) { + value := protoreflect.ValueOfUint64(x.TotalErrors) + if !f(fd_MsgLoadTestResponse_total_errors, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgLoadTestResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_time": + return x.TotalTime != uint64(0) + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_errors": + return x.TotalErrors != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTestResponse")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTestResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLoadTestResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_time": + x.TotalTime = uint64(0) + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_errors": + x.TotalErrors = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTestResponse")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTestResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgLoadTestResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_time": + value := x.TotalTime + return protoreflect.ValueOfUint64(value) + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_errors": + value := x.TotalErrors + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTestResponse")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTestResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLoadTestResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_time": + x.TotalTime = value.Uint() + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_errors": + x.TotalErrors = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTestResponse")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTestResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLoadTestResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_time": + panic(fmt.Errorf("field total_time of message cosmos.benchmark.v1.MsgLoadTestResponse is not mutable")) + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_errors": + panic(fmt.Errorf("field total_errors of message cosmos.benchmark.v1.MsgLoadTestResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTestResponse")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTestResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgLoadTestResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_time": + return protoreflect.ValueOfUint64(uint64(0)) + case "cosmos.benchmark.v1.MsgLoadTestResponse.total_errors": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.benchmark.v1.MsgLoadTestResponse")) + } + panic(fmt.Errorf("message cosmos.benchmark.v1.MsgLoadTestResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgLoadTestResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.benchmark.v1.MsgLoadTestResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgLoadTestResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLoadTestResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgLoadTestResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgLoadTestResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgLoadTestResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.TotalTime != 0 { + n += 1 + runtime.Sov(uint64(x.TotalTime)) + } + if x.TotalErrors != 0 { + n += 1 + runtime.Sov(uint64(x.TotalErrors)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgLoadTestResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.TotalErrors != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.TotalErrors)) + i-- + dAtA[i] = 0x10 + } + if x.TotalTime != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.TotalTime)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgLoadTestResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgLoadTestResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgLoadTestResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TotalTime", wireType) + } + x.TotalTime = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.TotalTime |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TotalErrors", wireType) + } + x.TotalErrors = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.TotalErrors |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: cosmos/benchmark/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// MsgLoadTestOps defines a message containing a sequence of load test operations. +type MsgLoadTest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Caller []byte `protobuf:"bytes,1,opt,name=caller,proto3" json:"caller,omitempty"` + Ops []*Op `protobuf:"bytes,2,rep,name=ops,proto3" json:"ops,omitempty"` +} + +func (x *MsgLoadTest) Reset() { + *x = MsgLoadTest{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_benchmark_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgLoadTest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgLoadTest) ProtoMessage() {} + +// Deprecated: Use MsgLoadTest.ProtoReflect.Descriptor instead. +func (*MsgLoadTest) Descriptor() ([]byte, []int) { + return file_cosmos_benchmark_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgLoadTest) GetCaller() []byte { + if x != nil { + return x.Caller + } + return nil +} + +func (x *MsgLoadTest) GetOps() []*Op { + if x != nil { + return x.Ops + } + return nil +} + +// MsgLoadTestResponse defines a message containing the results of a load test operation. +type MsgLoadTestResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TotalTime uint64 `protobuf:"varint,1,opt,name=total_time,json=totalTime,proto3" json:"total_time,omitempty"` + TotalErrors uint64 `protobuf:"varint,2,opt,name=total_errors,json=totalErrors,proto3" json:"total_errors,omitempty"` +} + +func (x *MsgLoadTestResponse) Reset() { + *x = MsgLoadTestResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_benchmark_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgLoadTestResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgLoadTestResponse) ProtoMessage() {} + +// Deprecated: Use MsgLoadTestResponse.ProtoReflect.Descriptor instead. +func (*MsgLoadTestResponse) Descriptor() ([]byte, []int) { + return file_cosmos_benchmark_v1_tx_proto_rawDescGZIP(), []int{1} +} + +func (x *MsgLoadTestResponse) GetTotalTime() uint64 { + if x != nil { + return x.TotalTime + } + return 0 +} + +func (x *MsgLoadTestResponse) GetTotalErrors() uint64 { + if x != nil { + return x.TotalErrors + } + return 0 +} + +var File_cosmos_benchmark_v1_tx_proto protoreflect.FileDescriptor + +var file_cosmos_benchmark_v1_tx_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, + 0x72, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, + 0x2e, 0x76, 0x31, 0x1a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, + 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, + 0x72, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8b, 0x01, 0x0a, 0x0b, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x61, 0x64, + 0x54, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x03, + 0x6f, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x70, 0x52, 0x03, 0x6f, 0x70, 0x73, 0x3a, 0x39, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x63, 0x61, + 0x6c, 0x6c, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x29, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, + 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, + 0x61, 0x72, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x65, + 0x73, 0x74, 0x22, 0x57, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x65, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x32, 0x64, 0x0a, 0x03, 0x4d, + 0x73, 0x67, 0x12, 0x56, 0x0a, 0x08, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x65, 0x73, 0x74, 0x12, 0x20, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x65, 0x73, 0x74, + 0x1a, 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, + 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x65, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, + 0x01, 0x42, 0xc2, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, + 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x76, 0x31, 0x3b, 0x62, + 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x42, 0x58, + 0xaa, 0x02, 0x13, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, + 0x61, 0x72, 0x6b, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, + 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x15, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, + 0x72, 0x6b, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_cosmos_benchmark_v1_tx_proto_rawDescOnce sync.Once + file_cosmos_benchmark_v1_tx_proto_rawDescData = file_cosmos_benchmark_v1_tx_proto_rawDesc +) + +func file_cosmos_benchmark_v1_tx_proto_rawDescGZIP() []byte { + file_cosmos_benchmark_v1_tx_proto_rawDescOnce.Do(func() { + file_cosmos_benchmark_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_cosmos_benchmark_v1_tx_proto_rawDescData) + }) + return file_cosmos_benchmark_v1_tx_proto_rawDescData +} + +var file_cosmos_benchmark_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_cosmos_benchmark_v1_tx_proto_goTypes = []interface{}{ + (*MsgLoadTest)(nil), // 0: cosmos.benchmark.v1.MsgLoadTest + (*MsgLoadTestResponse)(nil), // 1: cosmos.benchmark.v1.MsgLoadTestResponse + (*Op)(nil), // 2: cosmos.benchmark.v1.Op +} +var file_cosmos_benchmark_v1_tx_proto_depIdxs = []int32{ + 2, // 0: cosmos.benchmark.v1.MsgLoadTest.ops:type_name -> cosmos.benchmark.v1.Op + 0, // 1: cosmos.benchmark.v1.Msg.LoadTest:input_type -> cosmos.benchmark.v1.MsgLoadTest + 1, // 2: cosmos.benchmark.v1.Msg.LoadTest:output_type -> cosmos.benchmark.v1.MsgLoadTestResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_cosmos_benchmark_v1_tx_proto_init() } +func file_cosmos_benchmark_v1_tx_proto_init() { + if File_cosmos_benchmark_v1_tx_proto != nil { + return + } + file_cosmos_benchmark_v1_benchmark_proto_init() + if !protoimpl.UnsafeEnabled { + file_cosmos_benchmark_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgLoadTest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_benchmark_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgLoadTestResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_cosmos_benchmark_v1_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_cosmos_benchmark_v1_tx_proto_goTypes, + DependencyIndexes: file_cosmos_benchmark_v1_tx_proto_depIdxs, + MessageInfos: file_cosmos_benchmark_v1_tx_proto_msgTypes, + }.Build() + File_cosmos_benchmark_v1_tx_proto = out.File + file_cosmos_benchmark_v1_tx_proto_rawDesc = nil + file_cosmos_benchmark_v1_tx_proto_goTypes = nil + file_cosmos_benchmark_v1_tx_proto_depIdxs = nil +} diff --git a/api/cosmos/benchmark/v1/tx_grpc.pb.go b/api/cosmos/benchmark/v1/tx_grpc.pb.go new file mode 100644 index 000000000000..6cc598845456 --- /dev/null +++ b/api/cosmos/benchmark/v1/tx_grpc.pb.go @@ -0,0 +1,127 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc (unknown) +// source: cosmos/benchmark/v1/tx.proto + +package benchmarkv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Msg_LoadTest_FullMethodName = "/cosmos.benchmark.v1.Msg/LoadTest" +) + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Msg defines the benchmark Msg service. +type MsgClient interface { + // LoadTest defines a method for executing a sequence of load test operations. + LoadTest(ctx context.Context, in *MsgLoadTest, opts ...grpc.CallOption) (*MsgLoadTestResponse, error) +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) LoadTest(ctx context.Context, in *MsgLoadTest, opts ...grpc.CallOption) (*MsgLoadTestResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(MsgLoadTestResponse) + err := c.cc.Invoke(ctx, Msg_LoadTest_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +// All implementations must embed UnimplementedMsgServer +// for forward compatibility. +// +// Msg defines the benchmark Msg service. +type MsgServer interface { + // LoadTest defines a method for executing a sequence of load test operations. + LoadTest(context.Context, *MsgLoadTest) (*MsgLoadTestResponse, error) + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMsgServer struct{} + +func (UnimplementedMsgServer) LoadTest(context.Context, *MsgLoadTest) (*MsgLoadTestResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LoadTest not implemented") +} +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} +func (UnimplementedMsgServer) testEmbeddedByValue() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + // If the following call pancis, it indicates UnimplementedMsgServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Msg_ServiceDesc, srv) +} + +func _Msg_LoadTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgLoadTest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).LoadTest(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_LoadTest_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).LoadTest(ctx, req.(*MsgLoadTest)) + } + return interceptor(ctx, in, info, handler) +} + +// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.benchmark.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "LoadTest", + Handler: _Msg_LoadTest_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/benchmark/v1/tx.proto", +} diff --git a/go.work.example b/go.work.example index f8a9021395e7..35c4dd20ab28 100644 --- a/go.work.example +++ b/go.work.example @@ -27,6 +27,7 @@ use ( ./tools/cosmovisor ./tools/confix ./tools/hubl + ./tools/benchmark ./x/accounts ./x/accounts/defaults/base ./x/accounts/defaults/lockup diff --git a/runtime/module.go b/runtime/module.go index 3cf7be226421..488bc6c93b8e 100644 --- a/runtime/module.go +++ b/runtime/module.go @@ -96,6 +96,7 @@ func init() { codec.ProvideProtoCodec, codec.ProvideAddressCodec, ProvideKVStoreKey, + ProvideKVStoreFactory, ProvideTransientStoreKey, ProvideMemoryStoreKey, ProvideGenesisTxHandler, @@ -296,3 +297,11 @@ func ProvideTransientStoreService( func ProvideCometService() comet.Service { return NewContextAwareCometInfoService() } + +func ProvideKVStoreFactory(app *AppBuilder) store.KVStoreServiceFactory { + return func(key []byte) store.KVStoreService { + sk := storetypes.NewKVStoreKey(string(key)) + registerStoreKey(app, sk) + return kvStoreService{key: sk} + } +} diff --git a/scripts/build/build.mk b/scripts/build/build.mk index 581ee1dbe06d..da13b0e95e23 100644 --- a/scripts/build/build.mk +++ b/scripts/build/build.mk @@ -70,6 +70,11 @@ ifeq (bls12381,$(findstring bls12381,$(COSMOS_BUILD_OPTIONS))) build_tags += bls12381 endif +# benchmark module +ifeq (benchmark,$(findstring benchmark,$(COSMOS_BUILD_OPTIONS))) + build_tags += benchmark +endif + whitespace := whitespace += $(whitespace) comma := , diff --git a/scripts/init-simapp-v2.sh b/scripts/init-simapp-v2.sh index 7410b2174746..02fb379f8e2c 100755 --- a/scripts/init-simapp-v2.sh +++ b/scripts/init-simapp-v2.sh @@ -10,6 +10,7 @@ $SIMD_BIN config set client chain-id simapp-v2-chain $SIMD_BIN config set client keyring-backend test $SIMD_BIN config set client keyring-default-keyname alice $SIMD_BIN config set app rest.enable true +$SIMD_BIN config set app telemetry.prometheus-retention-time 600 $SIMD_BIN keys add alice --indiscreet $SIMD_BIN keys add bob --indiscreet $SIMD_BIN init simapp-v2-node --chain-id simapp-v2-chain diff --git a/server/v2/cometbft/grpc.go b/server/v2/cometbft/grpc.go index 1f59a4771cf1..e85167ab496f 100644 --- a/server/v2/cometbft/grpc.go +++ b/server/v2/cometbft/grpc.go @@ -8,6 +8,7 @@ import ( abci "github.com/cometbft/cometbft/abci/types" abciproto "github.com/cometbft/cometbft/api/cometbft/abci/v1" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" "github.com/cosmos/gogoproto/proto" "google.golang.org/grpc" "google.golang.org/grpc/codes" @@ -21,7 +22,6 @@ import ( "cosmossdk.io/log" storeserver "cosmossdk.io/server/v2/store" - rpchttp "github.com/cometbft/cometbft/rpc/client/http" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" diff --git a/simapp/app.go b/simapp/app.go index 90de295e8b7d..e57e2899d1c0 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -13,6 +13,7 @@ import ( "cosmossdk.io/core/registry" corestore "cosmossdk.io/core/store" "cosmossdk.io/depinject" + "cosmossdk.io/depinject/appconfig" _ "cosmossdk.io/indexer/postgres" // register the postgres indexer "cosmossdk.io/log" "cosmossdk.io/x/accounts" @@ -96,7 +97,7 @@ func init() { // AppConfig returns the default app config. func AppConfig() depinject.Config { return depinject.Configs( - appConfig, // Alternatively use appconfig.LoadYAML(AppConfigYAML) + appconfig.Compose(appConfig), // Alternatively use appconfig.LoadYAML(AppConfigYAML) depinject.Provide( ProvideExampleMintFn, // optional: override the mint module's mint function with epoched minting ), diff --git a/simapp/app_config.go b/simapp/app_config.go index 33e11841e795..275c3f730fe0 100644 --- a/simapp/app_config.go +++ b/simapp/app_config.go @@ -107,7 +107,7 @@ var ( } // application configuration (used by depinject) - appConfig = appconfig.Compose(&appv1alpha1.Config{ + appConfig = &appv1alpha1.Config{ Modules: []*appv1alpha1.ModuleConfig{ { Name: runtime.ModuleName, @@ -297,5 +297,5 @@ var ( Config: appconfig.WrapAny(&bankmodulev2.Module{}), }, }, - }) + } ) diff --git a/simapp/app_test.go b/simapp/app_test.go index 3553b47edf37..7add872cbfc6 100644 --- a/simapp/app_test.go +++ b/simapp/app_test.go @@ -194,6 +194,16 @@ func TestRunMigrations(t *testing.T) { } } + orderMigrations := module.DefaultMigrationsOrder(app.ModuleManager.ModuleNames()) + // Filter out benchmark module from migrations list + filteredMigrations := make([]string, 0, len(app.ModuleManager.OrderMigrations)) + for _, name := range orderMigrations { + if name != "benchmark" { + filteredMigrations = append(filteredMigrations, name) + } + } + app.ModuleManager.OrderMigrations = filteredMigrations + // Run migrations only for bank. That's why we put the initial // version for bank as 1, and for all other modules, we put as // their latest ConsensusVersion. diff --git a/simapp/benchmark.go b/simapp/benchmark.go new file mode 100644 index 000000000000..50a16ea909b8 --- /dev/null +++ b/simapp/benchmark.go @@ -0,0 +1,39 @@ +//go:build benchmark + +package simapp + +import ( + runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1" + appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" + benchmarkmodulev1 "cosmossdk.io/api/cosmos/benchmark/module/v1" + "cosmossdk.io/depinject/appconfig" + benchmark "cosmossdk.io/tools/benchmark/module" + "fmt" +) + +func init() { + // WARNING! + // Enabling this module will produce 3M keys in the genesis state for the benchmark module. + // Will also enable processing of benchmark transactions which can easily overwhelm the system. + appConfig.Modules = append(appConfig.Modules, &appv1alpha1.ModuleConfig{ + Name: benchmark.ModuleName, + Config: appconfig.WrapAny(&benchmarkmodulev1.Module{ + GenesisParams: &benchmarkmodulev1.GeneratorParams{ + Seed: 34, + BucketCount: 3, + GenesisCount: 3_000_000, + KeyMean: 64, + KeyStdDev: 12, + ValueMean: 1024, + ValueStdDev: 256, + }, + }), + }) + runtimeConfig := &runtimev1alpha1.Module{} + err := appConfig.Modules[0].Config.UnmarshalTo(runtimeConfig) + if err != nil { + panic(fmt.Errorf("benchmark init: failed to unmarshal runtime module config: %w", err)) + } + runtimeConfig.InitGenesis = append(runtimeConfig.InitGenesis, benchmark.ModuleName) + appConfig.Modules[0].Config = appconfig.WrapAny(runtimeConfig) +} diff --git a/simapp/go.mod b/simapp/go.mod index 03905a478ffd..c902a035c0ba 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -51,6 +51,7 @@ require ( require ( cosmossdk.io/indexer/postgres v0.0.0-20241128094659-bd76b47e1d8b + cosmossdk.io/tools/benchmark v0.0.0-00010101000000-000000000000 github.com/jackc/pgx/v5 v5.7.1 ) @@ -254,6 +255,7 @@ replace ( cosmossdk.io/collections => ../collections cosmossdk.io/indexer/postgres => ../indexer/postgres cosmossdk.io/store => ../store + cosmossdk.io/tools/benchmark => ../tools/benchmark cosmossdk.io/tools/confix => ../tools/confix cosmossdk.io/x/accounts => ../x/accounts cosmossdk.io/x/accounts/defaults/base => ../x/accounts/defaults/base diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index 3a432efd4966..70ee95ced83a 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -698,8 +698,9 @@ func startTestnet( _, nodeDir := getNodeDir(args, i) // run start command + binName := cmd.Root().Use cmdArgs := []string{"start", fmt.Sprintf("--%s=%s", flags.FlagHome, nodeDir)} - runCmd := exec.Command(os.Args[0], cmdArgs...) // spawn new process + runCmd := exec.Command(binName, cmdArgs...) // spawn new process // Set stdout and stderr based on enableLogging flag if args.enableLogging { diff --git a/simapp/v2/app.go b/simapp/v2/app.go index e78708807b33..601d641ad060 100644 --- a/simapp/v2/app.go +++ b/simapp/v2/app.go @@ -10,6 +10,7 @@ import ( "cosmossdk.io/core/server" "cosmossdk.io/core/transaction" "cosmossdk.io/depinject" + "cosmossdk.io/depinject/appconfig" _ "cosmossdk.io/indexer/postgres" // register the postgres indexer "cosmossdk.io/log" "cosmossdk.io/runtime/v2" @@ -49,7 +50,7 @@ type SimApp[T transaction.Tx] struct { // AppConfig returns the default app config. func AppConfig() depinject.Config { return depinject.Configs( - ModuleConfig, // Alternatively use appconfig.LoadYAML(AppConfigYAML) + appconfig.Compose(ModuleConfig), // Alternatively use appconfig.LoadYAML(AppConfigYAML) runtime.DefaultServiceBindings(), codec.DefaultProviders, depinject.Provide( diff --git a/simapp/v2/app_config.go b/simapp/v2/app_config.go index 5ade503e6403..0681354b549e 100644 --- a/simapp/v2/app_config.go +++ b/simapp/v2/app_config.go @@ -107,7 +107,7 @@ var ( } // ModuleConfig is the application module configuration used by depinject - ModuleConfig = appconfig.Compose(&appv1alpha1.Config{ + ModuleConfig = &appv1alpha1.Config{ Modules: []*appv1alpha1.ModuleConfig{ { Name: runtime.ModuleName, @@ -181,7 +181,7 @@ var ( // OrderMigrations: []string{}, // TODO GasConfig was added to the config in runtimev2. Where/how was it set in v1? GasConfig: &runtimev2.GasConfig{ - ValidateTxGasLimit: 100_000, + ValidateTxGasLimit: 10_000_000, QueryGasLimit: 100_000, SimulationGasLimit: 100_000, }, @@ -302,5 +302,5 @@ var ( Config: appconfig.WrapAny(&bankmodulev2.Module{}), }, }, - }) + } ) diff --git a/simapp/v2/benchmark.go b/simapp/v2/benchmark.go new file mode 100644 index 000000000000..85376b02cb83 --- /dev/null +++ b/simapp/v2/benchmark.go @@ -0,0 +1,39 @@ +//go:build benchmark + +package simapp + +import ( + runtimev2 "cosmossdk.io/api/cosmos/app/runtime/v2" + appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" + benchmarkmodulev1 "cosmossdk.io/api/cosmos/benchmark/module/v1" + "cosmossdk.io/depinject/appconfig" + benchmark "cosmossdk.io/tools/benchmark/module" + "fmt" +) + +func init() { + // WARNING! + // Enabling this module will produce 3M keys in the genesis state for the benchmark module. + // Will also enable processing of benchmark transactions which can easily overwhelm the system. + ModuleConfig.Modules = append(ModuleConfig.Modules, &appv1alpha1.ModuleConfig{ + Name: benchmark.ModuleName, + Config: appconfig.WrapAny(&benchmarkmodulev1.Module{ + GenesisParams: &benchmarkmodulev1.GeneratorParams{ + Seed: 34, + BucketCount: 3, + GenesisCount: 3_000_000, + KeyMean: 64, + KeyStdDev: 12, + ValueMean: 1024, + ValueStdDev: 256, + }, + }), + }) + runtimeConfig := &runtimev2.Module{} + err := ModuleConfig.Modules[0].Config.UnmarshalTo(runtimeConfig) + if err != nil { + panic(fmt.Errorf("benchmark init: failed to unmarshal runtime module config: %w", err)) + } + runtimeConfig.InitGenesis = append(runtimeConfig.InitGenesis, benchmark.ModuleName) + ModuleConfig.Modules[0].Config = appconfig.WrapAny(runtimeConfig) +} diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index ca71cd874905..c8b1f8e5607a 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -44,6 +44,7 @@ require ( require ( cosmossdk.io/indexer/postgres v0.0.0-20241204160609-556102cfa046 + cosmossdk.io/tools/benchmark v0.0.0-00010101000000-000000000000 cosmossdk.io/x/accounts/defaults/base v0.0.0-00010101000000-000000000000 cosmossdk.io/x/accounts/defaults/lockup v0.0.0-00010101000000-000000000000 cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000 @@ -257,6 +258,7 @@ require ( // SimApp on main always tests the latest extracted SDK modules importing the sdk replace ( cosmossdk.io/client/v2 => ../../client/v2 + cosmossdk.io/tools/benchmark => ../../tools/benchmark cosmossdk.io/tools/confix => ../../tools/confix cosmossdk.io/x/accounts => ../../x/accounts cosmossdk.io/x/accounts/defaults/base => ../../x/accounts/defaults/base diff --git a/tests/go.mod b/tests/go.mod index 18cc7999b3f8..e2825cf4b992 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -73,6 +73,7 @@ require ( cosmossdk.io/indexer/postgres v0.1.0 // indirect cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/server/v2/appmanager v0.0.0-00010101000000-000000000000 // indirect + cosmossdk.io/tools/benchmark v0.0.0-00010101000000-000000000000 // indirect cosmossdk.io/x/circuit v0.0.0-20230613133644-0a778132a60f // indirect cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337 // indirect filippo.io/edwards25519 v1.1.0 // indirect @@ -258,6 +259,7 @@ replace ( cosmossdk.io/server/v2/stf => ../server/v2/stf cosmossdk.io/store => ../store cosmossdk.io/store/v2 => ../store/v2 + cosmossdk.io/tools/benchmark => ../tools/benchmark cosmossdk.io/x/accounts => ../x/accounts cosmossdk.io/x/accounts/defaults/base => ../x/accounts/defaults/base cosmossdk.io/x/accounts/defaults/lockup => ../x/accounts/defaults/lockup diff --git a/tools/benchmark/CHANGELOG.md b/tools/benchmark/CHANGELOG.md new file mode 100644 index 000000000000..f1417dde2840 --- /dev/null +++ b/tools/benchmark/CHANGELOG.md @@ -0,0 +1,30 @@ + + +# Changelog + +## [Unreleased] + +### Features + +* [#22778](https://github.com/cosmos/cosmos-sdk/pull/22778) - Initial commit diff --git a/tools/benchmark/README.md b/tools/benchmark/README.md new file mode 100644 index 000000000000..38a090c0d52e --- /dev/null +++ b/tools/benchmark/README.md @@ -0,0 +1,24 @@ +# cosmossdk.io/tools/benchmark + +A benchmark module to test chain and storage performance. It can be used to holistically test +the end to end performance of a node. Given an initial configuration tools/benchmark provides: + +* A possibly enormous sequence of key-value sets in InitGenesis distributed across n storekeys, + e.g. 20M keys across 5 store keys +* A client which syncs to genesis state then deterministically generates txs which contain a + configurable sequence of get, insert, update & delete operations +* A keeper which processes the above transactions and emits some telemetry data about them. + +Client invocation looks like: + +```bash +simdv2 tx benchmark load-test --from bob --yes --ops 1000 --pause 10 -v +``` + +On exit it dumps the generator state so that running again should still be in sync. It assumes +that any transaction accepted by the network was processed, which may not be the case, so miss +rate will probably increase over time. This isn't really a problem for tests. + +Obviously this module is built to DOS a node by testing the upper bounds of chain performance; +when testing gas limits should be increased. It should not be included in chains by default but +is enabled in simapp for testing. \ No newline at end of file diff --git a/tools/benchmark/benchmark.pb.go b/tools/benchmark/benchmark.pb.go new file mode 100644 index 000000000000..7405ba9a9723 --- /dev/null +++ b/tools/benchmark/benchmark.pb.go @@ -0,0 +1,545 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/benchmark/v1/benchmark.proto + +package benchmark + +import ( + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Op is a message describing a benchmark operation. +type Op struct { + Seed uint64 `protobuf:"varint,1,opt,name=seed,proto3" json:"seed,omitempty"` + Actor string `protobuf:"bytes,2,opt,name=actor,proto3" json:"actor,omitempty"` + KeyLength uint64 `protobuf:"varint,3,opt,name=key_length,json=keyLength,proto3" json:"key_length,omitempty"` + ValueLength uint64 `protobuf:"varint,4,opt,name=value_length,json=valueLength,proto3" json:"value_length,omitempty"` + Iterations uint32 `protobuf:"varint,5,opt,name=iterations,proto3" json:"iterations,omitempty"` + Delete bool `protobuf:"varint,6,opt,name=delete,proto3" json:"delete,omitempty"` + Exists bool `protobuf:"varint,7,opt,name=exists,proto3" json:"exists,omitempty"` +} + +func (m *Op) Reset() { *m = Op{} } +func (m *Op) String() string { return proto.CompactTextString(m) } +func (*Op) ProtoMessage() {} +func (*Op) Descriptor() ([]byte, []int) { + return fileDescriptor_dca1624628907df9, []int{0} +} +func (m *Op) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Op) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Op.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Op) XXX_Merge(src proto.Message) { + xxx_messageInfo_Op.Merge(m, src) +} +func (m *Op) XXX_Size() int { + return m.Size() +} +func (m *Op) XXX_DiscardUnknown() { + xxx_messageInfo_Op.DiscardUnknown(m) +} + +var xxx_messageInfo_Op proto.InternalMessageInfo + +func (m *Op) GetSeed() uint64 { + if m != nil { + return m.Seed + } + return 0 +} + +func (m *Op) GetActor() string { + if m != nil { + return m.Actor + } + return "" +} + +func (m *Op) GetKeyLength() uint64 { + if m != nil { + return m.KeyLength + } + return 0 +} + +func (m *Op) GetValueLength() uint64 { + if m != nil { + return m.ValueLength + } + return 0 +} + +func (m *Op) GetIterations() uint32 { + if m != nil { + return m.Iterations + } + return 0 +} + +func (m *Op) GetDelete() bool { + if m != nil { + return m.Delete + } + return false +} + +func (m *Op) GetExists() bool { + if m != nil { + return m.Exists + } + return false +} + +func init() { + proto.RegisterType((*Op)(nil), "cosmos.benchmark.v1.Op") +} + +func init() { + proto.RegisterFile("cosmos/benchmark/v1/benchmark.proto", fileDescriptor_dca1624628907df9) +} + +var fileDescriptor_dca1624628907df9 = []byte{ + // 249 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x90, 0xb1, 0x4e, 0x84, 0x40, + 0x10, 0x86, 0x99, 0x93, 0x43, 0x6f, 0xd4, 0x66, 0x35, 0x66, 0x0b, 0xdd, 0xa0, 0x36, 0x54, 0x90, + 0x8b, 0x89, 0x0f, 0x60, 0x6d, 0x62, 0x42, 0x69, 0x63, 0x38, 0x98, 0x78, 0x04, 0x8e, 0xb9, 0xb0, + 0x2b, 0xf1, 0xde, 0xc2, 0x47, 0xb2, 0xb4, 0xbc, 0xd2, 0xd2, 0xc0, 0x8b, 0x18, 0x77, 0xcf, 0x1c, + 0xdd, 0x7c, 0x5f, 0xbe, 0x66, 0x7e, 0xbc, 0xcd, 0x59, 0xaf, 0x58, 0x27, 0x0b, 0x6a, 0xf2, 0xe5, + 0x2a, 0x6b, 0xab, 0xa4, 0x9b, 0xef, 0x21, 0x5e, 0xb7, 0x6c, 0x58, 0x9c, 0xb9, 0x28, 0xde, 0xfb, + 0x6e, 0x7e, 0xf3, 0x09, 0x38, 0x79, 0x5a, 0x0b, 0x81, 0xbe, 0x26, 0x2a, 0x24, 0x84, 0x10, 0xf9, + 0xa9, 0xbd, 0xc5, 0x39, 0x4e, 0xb3, 0xdc, 0x70, 0x2b, 0x27, 0x21, 0x44, 0xb3, 0xd4, 0x81, 0xb8, + 0x42, 0xac, 0x68, 0xf3, 0x52, 0x53, 0xf3, 0x6a, 0x96, 0xf2, 0xc0, 0xf6, 0xb3, 0x8a, 0x36, 0x8f, + 0x56, 0x88, 0x6b, 0x3c, 0xe9, 0xb2, 0xfa, 0x8d, 0xfe, 0x03, 0xdf, 0x06, 0xc7, 0xd6, 0xed, 0x12, + 0x85, 0x58, 0x1a, 0x6a, 0x33, 0x53, 0x72, 0xa3, 0xe5, 0x34, 0x84, 0xe8, 0x34, 0x1d, 0x19, 0x71, + 0x81, 0x41, 0x41, 0x35, 0x19, 0x92, 0x41, 0x08, 0xd1, 0x51, 0xba, 0xa3, 0x3f, 0x4f, 0xef, 0xa5, + 0x36, 0x5a, 0x1e, 0x3a, 0xef, 0xe8, 0xe1, 0xfe, 0xab, 0x57, 0xb0, 0xed, 0x15, 0xfc, 0xf4, 0x0a, + 0x3e, 0x06, 0xe5, 0x6d, 0x07, 0xe5, 0x7d, 0x0f, 0xca, 0x7b, 0xbe, 0x74, 0x1f, 0xeb, 0xa2, 0x8a, + 0x4b, 0x4e, 0x0c, 0x73, 0x3d, 0x9a, 0x68, 0x11, 0xd8, 0x59, 0xee, 0x7e, 0x03, 0x00, 0x00, 0xff, + 0xff, 0x76, 0x0b, 0x27, 0x18, 0x3d, 0x01, 0x00, 0x00, +} + +func (m *Op) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Op) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Op) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Exists { + i-- + if m.Exists { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if m.Delete { + i-- + if m.Delete { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if m.Iterations != 0 { + i = encodeVarintBenchmark(dAtA, i, uint64(m.Iterations)) + i-- + dAtA[i] = 0x28 + } + if m.ValueLength != 0 { + i = encodeVarintBenchmark(dAtA, i, uint64(m.ValueLength)) + i-- + dAtA[i] = 0x20 + } + if m.KeyLength != 0 { + i = encodeVarintBenchmark(dAtA, i, uint64(m.KeyLength)) + i-- + dAtA[i] = 0x18 + } + if len(m.Actor) > 0 { + i -= len(m.Actor) + copy(dAtA[i:], m.Actor) + i = encodeVarintBenchmark(dAtA, i, uint64(len(m.Actor))) + i-- + dAtA[i] = 0x12 + } + if m.Seed != 0 { + i = encodeVarintBenchmark(dAtA, i, uint64(m.Seed)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintBenchmark(dAtA []byte, offset int, v uint64) int { + offset -= sovBenchmark(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Op) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Seed != 0 { + n += 1 + sovBenchmark(uint64(m.Seed)) + } + l = len(m.Actor) + if l > 0 { + n += 1 + l + sovBenchmark(uint64(l)) + } + if m.KeyLength != 0 { + n += 1 + sovBenchmark(uint64(m.KeyLength)) + } + if m.ValueLength != 0 { + n += 1 + sovBenchmark(uint64(m.ValueLength)) + } + if m.Iterations != 0 { + n += 1 + sovBenchmark(uint64(m.Iterations)) + } + if m.Delete { + n += 2 + } + if m.Exists { + n += 2 + } + return n +} + +func sovBenchmark(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozBenchmark(x uint64) (n int) { + return sovBenchmark(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Op) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBenchmark + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Op: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Op: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Seed", wireType) + } + m.Seed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBenchmark + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Seed |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actor", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBenchmark + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthBenchmark + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBenchmark + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actor = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field KeyLength", wireType) + } + m.KeyLength = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBenchmark + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.KeyLength |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ValueLength", wireType) + } + m.ValueLength = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBenchmark + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ValueLength |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Iterations", wireType) + } + m.Iterations = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBenchmark + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Iterations |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Delete", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBenchmark + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Delete = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Exists", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBenchmark + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Exists = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipBenchmark(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthBenchmark + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipBenchmark(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowBenchmark + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowBenchmark + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowBenchmark + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthBenchmark + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupBenchmark + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthBenchmark + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthBenchmark = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowBenchmark = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupBenchmark = fmt.Errorf("proto: unexpected end of group") +) diff --git a/tools/benchmark/client/cli/tx.go b/tools/benchmark/client/cli/tx.go new file mode 100644 index 000000000000..55e46d305795 --- /dev/null +++ b/tools/benchmark/client/cli/tx.go @@ -0,0 +1,186 @@ +package cli + +import ( + "context" + "errors" + "os" + "os/signal" + "syscall" + "time" + + "github.com/spf13/cobra" + + modulev1 "cosmossdk.io/api/cosmos/benchmark/module/v1" + "cosmossdk.io/tools/benchmark" + gen "cosmossdk.io/tools/benchmark/generator" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + clienttx "github.com/cosmos/cosmos-sdk/client/tx" +) + +func NewTxCmd(params *modulev1.GeneratorParams) *cobra.Command { + txCmd := &cobra.Command{ + Use: "benchmark", + Short: "benchmark transaction subcommands", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + txCmd.AddCommand( + NewLoadTestCmd(params), + ) + + return txCmd +} + +func NewLoadTestCmd(params *modulev1.GeneratorParams) *cobra.Command { + var ( + verbose bool + pause int64 + numOps uint64 + ) + cmd := &cobra.Command{ + Use: "load-test", + RunE: func(cmd *cobra.Command, args []string) (runErr error) { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + ctx, cancelFn := context.WithCancel(cmd.Context()) + go func() { + sigCh := make(chan os.Signal, 1) + signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM) + select { + case sig := <-sigCh: + cancelFn() + cmd.Printf("caught %s signal\n", sig.String()) + case <-ctx.Done(): + cancelFn() + } + }() + + var ( + successCount int + errCount int + since = time.Now() + last int + ) + defer func() { + cmd.Printf("done! success_tx=%d err_tx=%d\n", successCount, errCount) + }() + accNum, accSeq, err := clientCtx.AccountRetriever.GetAccountNumberSequence(clientCtx, clientCtx.FromAddress) + if err != nil { + return err + } + txf, err := clienttx.NewFactoryCLI(clientCtx, cmd.Flags()) + if err != nil { + return err + } + txf = txf.WithAccountNumber(accNum).WithChainID(clientCtx.ChainID).WithGas(1_000_000_000) + + storeKeys, err := gen.StoreKeys("benchmark", params.Seed, params.BucketCount) + if err != nil { + return err + } + var seed uint64 + for _, c := range clientCtx.FromAddress { + // root the generator seed in the account address + seed += uint64(c) + } + g := gen.NewGenerator(gen.Options{ + HomeDir: clientCtx.HomeDir, + GeneratorParams: params, + InsertWeight: 0.25, + DeleteWeight: 0.05, + UpdateWeight: 0.50, + GetWeight: 0.20, + }, + gen.WithGenesis(), + gen.WithSeed(seed), + ) + if err = g.Load(); err != nil { + return err + } + defer func() { + if err = g.Close(); err != nil { + runErr = errors.Join(runErr, err) + } + }() + + begin := time.Now() + ops := make([]*benchmark.Op, numOps) + for { + select { + case <-ctx.Done(): + return nil + default: + } + if time.Since(since) > 5*time.Second { + cmd.Printf( + "success_tx=%d err_tx=%d seq=%d rate=%.2f/s overall=%.2f/s\n", + successCount, errCount, accSeq, + float64(successCount-last)/time.Since(since).Seconds(), + float64(successCount)/time.Since(begin).Seconds(), + ) + since = time.Now() + last = successCount + } + + for j := range numOps { + bucket, op, err := g.Next() + if err != nil { + return err + } + op.Actor = storeKeys[bucket] + ops[j] = op + } + msg := &benchmark.MsgLoadTest{ + Caller: clientCtx.FromAddress, + Ops: ops, + } + txf = txf.WithSequence(accSeq) + tx, err := txf.BuildUnsignedTx(msg) + if err != nil { + return err + } + err = clienttx.Sign(clientCtx, txf, clientCtx.From, tx, true) + if err != nil { + return err + } + txBytes, err := clientCtx.TxConfig.TxEncoder()(tx.GetTx()) + if err != nil { + return err + } + res, err := clientCtx.BroadcastTxAsync(txBytes) + if err != nil { + return err + } + if res.Code != 0 { + if verbose { + err = clientCtx.PrintProto(res) + if err != nil { + return err + } + } + errCount++ + } else { + accSeq++ + successCount++ + } + if pause > 0 { + time.Sleep(time.Duration(pause) * time.Millisecond) + } + } + }, + } + + flags.AddTxFlagsToCmd(cmd) + cmd.Flags().BoolVarP(&verbose, "verbose", "v", false, "print the response") + cmd.Flags().Uint64Var(&numOps, "ops", 1, "number of operations per transaction") + cmd.Flags().Int64Var(&pause, "pause", 0, "pause between transactions in milliseconds") + + return cmd +} diff --git a/tools/benchmark/generator/gen.go b/tools/benchmark/generator/gen.go new file mode 100644 index 000000000000..c8c4e2c00c27 --- /dev/null +++ b/tools/benchmark/generator/gen.go @@ -0,0 +1,381 @@ +package gen + +import ( + "encoding" + "encoding/binary" + "errors" + "fmt" + "io" + "iter" + "math/rand/v2" + "os" + + "github.com/cespare/xxhash/v2" + + module "cosmossdk.io/api/cosmos/benchmark/module/v1" + "cosmossdk.io/tools/benchmark" +) + +// Options is the configuration for the generator. +type Options struct { + *module.GeneratorParams + // HomeDir is for reading/writing state + HomeDir string + + InsertWeight float64 + UpdateWeight float64 + GetWeight float64 + DeleteWeight float64 +} + +// State is the state of the generator. +// It can be marshaled and unmarshaled to/from a binary format. +type State struct { + Src interface { + rand.Source + encoding.BinaryMarshaler + encoding.BinaryUnmarshaler + } + Keys [][]Payload +} + +// Marshal writes the state to w. +func (s *State) Marshal(w io.Writer) error { + srcBz, err := s.Src.MarshalBinary() + if err != nil { + return err + } + var n int + n, err = w.Write(srcBz) + if err != nil { + return err + } + if n != 20 { + return fmt.Errorf("expected 20 bytes, got %d", n) + } + if err = binary.Write(w, binary.LittleEndian, uint64(len(s.Keys))); err != nil { + return err + } + for _, bucket := range s.Keys { + if err = binary.Write(w, binary.LittleEndian, uint64(len(bucket))); err != nil { + return err + } + for _, key := range bucket { + if err = binary.Write(w, binary.LittleEndian, key); err != nil { + return err + } + } + } + return nil +} + +// Unmarshal reads the state from r. +func (s *State) Unmarshal(r io.Reader) error { + srcBz := make([]byte, 20) + if _, err := r.Read(srcBz); err != nil { + return err + } + s.Src = rand.NewPCG(0, 0) + if err := s.Src.UnmarshalBinary(srcBz); err != nil { + return err + } + + var n uint64 + if err := binary.Read(r, binary.LittleEndian, &n); err != nil { + return err + } + s.Keys = make([][]Payload, n) + for i := uint64(0); i < n; i++ { + var m uint64 + if err := binary.Read(r, binary.LittleEndian, &m); err != nil { + return err + } + s.Keys[i] = make([]Payload, m) + for j := uint64(0); j < m; j++ { + if err := binary.Read(r, binary.LittleEndian, &s.Keys[i][j]); err != nil { + return err + } + } + } + return nil +} + +// Generator generates operations for a benchmark transaction. +// The generator is stateful, keeping track of which keys have been inserted +// so that meaningful gets and deletes can be generated. +type Generator struct { + Options + + rand *rand.Rand + state *State +} + +type opt func(*Generator) + +// NewGenerator creates a new generator with the given options. +func NewGenerator(opts Options, f ...opt) *Generator { + g := &Generator{ + Options: opts, + state: &State{ + Src: rand.NewPCG(opts.Seed, opts.Seed>>32), + }, + } + g.rand = rand.New(g.state.Src) + for _, fn := range f { + fn(g) + } + return g +} + +// WithGenesis sets the generator state to the genesis seed. +// When the generator is created, it will sync to genesis state. +// The benchmark client needs to do this so that it can generate meaningful tx operations. +func WithGenesis() func(*Generator) { + return func(g *Generator) { + // sync state to genesis seed + g.state.Keys = make([][]Payload, g.BucketCount) + if g.GeneratorParams != nil { + for kv := range g.GenesisSet() { + g.state.Keys[kv.StoreKey] = append(g.state.Keys[kv.StoreKey], kv.Key) + } + } + } +} + +// WithSeed sets the seed for the generator. +func WithSeed(seed uint64) func(*Generator) { + return func(g *Generator) { + g.state.Src = rand.NewPCG(seed, seed>>32) + g.rand = rand.New(g.state.Src) + } +} + +// Load loads the generator state from disk. +func (g *Generator) Load() error { + f := fmt.Sprintf("%s/data/generator_state.bin", g.HomeDir) + r, err := os.Open(f) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + return nil + } + return err + } + return g.state.Unmarshal(r) +} + +// Payload is a 2-tuple of seed and length. +// A seed is uint64 which is used to generate a byte slice of size length. +type Payload [2]uint64 + +// Seed returns the seed in the payload. +func (p Payload) Seed() uint64 { + return p[0] +} + +// Length returns the length in the payload. +func (p Payload) Length() uint64 { + return p[1] +} + +// Bytes returns the byte slice generated from the seed and length. +// The underlying byte slice is deterministically generated using the (very fast) xxhash algorithm. +func (p Payload) Bytes() []byte { + return Bytes(p.Seed(), p.Length()) +} + +func (p Payload) String() string { + return fmt.Sprintf("(%d, %d)", p.Seed(), p.Length()) +} + +func NewPayload(seed, length uint64) Payload { + return Payload{seed, length} +} + +// KV is a key-value pair with a store key. +type KV struct { + StoreKey uint64 + Key Payload + Value Payload +} + +func (g *Generator) fetchKey(bucket uint64) (idx uint64, key Payload, err error) { + bucketLen := uint64(len(g.state.Keys[bucket])) + if bucketLen == 0 { + return 0, Payload{}, fmt.Errorf("no keys in bucket %d", bucket) + } + idx = g.rand.Uint64N(bucketLen) + return idx, g.state.Keys[bucket][idx], nil +} + +func (g *Generator) deleteKey(bucket, idx uint64) { + g.state.Keys[bucket] = append(g.state.Keys[bucket][:idx], g.state.Keys[bucket][idx+1:]...) +} + +func (g *Generator) setKey(bucket uint64, payload Payload) { + g.state.Keys[bucket] = append(g.state.Keys[bucket], payload) +} + +// GenesisSet returns a sequence of key-value pairs for the genesis state. +// It is called by the server during InitGenesis to generate and set the initial state. +// The client uses WithGenesis to sync to the genesis state. +func (g *Generator) GenesisSet() iter.Seq[*KV] { + return func(yield func(*KV) bool) { + for range g.GenesisCount { + seed := g.rand.Uint64() + if !yield(&KV{ + StoreKey: g.UintN(g.BucketCount), + Key: NewPayload(seed, g.getLength(g.KeyMean, g.KeyStdDev)), + Value: NewPayload(seed, g.getLength(g.ValueMean, g.ValueStdDev)), + }) { + return + } + } + } +} + +// Next generates the next benchmark operation. +// The operation is one of insert, update, get, or delete. +// The tx client calls this function to deterministically generate the next operation. +func (g *Generator) Next() (uint64, *benchmark.Op, error) { + if g.InsertWeight+g.UpdateWeight+g.GetWeight+g.DeleteWeight != 1 { + return 0, nil, fmt.Errorf("weights must sum to 1") + } + + var ( + err error + key Payload + ) + x := g.rand.Float64() + bucket := g.UintN(g.BucketCount) + op := &benchmark.Op{ + Exists: true, + } + + switch { + case x < g.InsertWeight: + // insert + op.Seed = g.rand.Uint64() + op.KeyLength = g.getLength(g.KeyMean, g.KeyStdDev) + op.ValueLength = g.getLength(g.ValueMean, g.ValueStdDev) + op.Exists = false + g.setKey(bucket, NewPayload(op.Seed, op.KeyLength)) + case x < g.InsertWeight+g.UpdateWeight: + // update + _, key, err = g.fetchKey(bucket) + if err != nil { + return 0, nil, err + } + op.Seed = key.Seed() + op.KeyLength = key.Length() + op.ValueLength = g.getLength(g.ValueMean, g.ValueStdDev) + case x < g.InsertWeight+g.UpdateWeight+g.GetWeight: + // get + _, key, err = g.fetchKey(bucket) + if err != nil { + return 0, nil, err + } + op.Seed = key.Seed() + op.KeyLength = key.Length() + default: + // delete + var idx uint64 + idx, key, err = g.fetchKey(bucket) + if err != nil { + return 0, nil, err + } + op.Delete = true + op.Seed = key.Seed() + op.KeyLength = key.Length() + g.deleteKey(bucket, idx) + } + + return bucket, op, nil +} + +// NormUint64 returns a random uint64 with a normal distribution. +func (g *Generator) NormUint64(mean, stdDev uint64) uint64 { + return uint64(g.rand.NormFloat64()*float64(stdDev) + float64(mean)) +} + +func (g *Generator) getLength(mean, stdDev uint64) uint64 { + length := g.NormUint64(mean, stdDev) + if length == 0 { + length = 1 + } + return length +} + +// UintN returns a random uint64 in the range [0, n). +func (g *Generator) UintN(n uint64) uint64 { + return g.rand.Uint64N(n) +} + +func (g *Generator) Close() error { + f := fmt.Sprintf("%s/data/generator_state.bin", g.HomeDir) + w, err := os.Create(f) + if err != nil { + return err + } + return g.state.Marshal(w) +} + +func encodeUint64(x uint64) []byte { + var b [8]byte + b[0] = byte(x) + b[1] = byte(x >> 8) + b[2] = byte(x >> 16) + b[3] = byte(x >> 24) + b[4] = byte(x >> 32) + b[5] = byte(x >> 40) + b[6] = byte(x >> 48) + b[7] = byte(x >> 56) + return b[:] +} + +const maxStoreKeyGenIterations = 100 + +// StoreKeys deterministically generates a set of unique store keys from seed. +func StoreKeys(prefix string, seed, count uint64) ([]string, error) { + r := rand.New(rand.NewPCG(seed, seed>>32)) + keys := make([]string, count) + seen := make(map[string]struct{}) + + var i, j uint64 + for i < count { + if j > maxStoreKeyGenIterations { + return nil, fmt.Errorf("failed to generate %d unique store keys", count) + } + sk := fmt.Sprintf("%s_%x", prefix, Bytes(r.Uint64(), 8)) + if _, ok := seen[sk]; ok { + j++ + continue + } + keys[i] = sk + seen[sk] = struct{}{} + i++ + j++ + } + return keys, nil +} + +// Bytes generates a byte slice of length length from seed. +// The byte slice is deterministically generated using the (very fast) xxhash algorithm. +func Bytes(seed, length uint64) []byte { + b := make([]byte, length) + rounds := length / 8 + remainder := length % 8 + var h uint64 + for i := uint64(0); i < rounds; i++ { + h = xxhash.Sum64(encodeUint64(seed + i)) + for j := uint64(0); j < 8; j++ { + b[i*8+j] = byte(h >> (8 * j)) + } + } + if remainder > 0 { + h = xxhash.Sum64(encodeUint64(seed + rounds)) + for j := uint64(0); j < remainder; j++ { + b[rounds*8+j] = byte(h >> (8 * j)) + } + } + return b +} diff --git a/tools/benchmark/generator/gen_test.go b/tools/benchmark/generator/gen_test.go new file mode 100644 index 000000000000..3a0ee8ca1571 --- /dev/null +++ b/tools/benchmark/generator/gen_test.go @@ -0,0 +1,138 @@ +package gen + +import ( + "bytes" + "testing" + + "github.com/cespare/xxhash/v2" + "github.com/stretchr/testify/require" + + benchmarkmodulev1 "cosmossdk.io/api/cosmos/benchmark/module/v1" +) + +func Test_Genesis(t *testing.T) { + params := &benchmarkmodulev1.GeneratorParams{ + Seed: 34, + BucketCount: 10, + GenesisCount: 2_000_000, + KeyMean: 64, + KeyStdDev: 8, + ValueMean: 1024, + ValueStdDev: 256, + } + g := NewGenerator(Options{GeneratorParams: params}) + db := make(map[uint64]map[uint64]bool) + for kv := range g.GenesisSet() { + if _, ok := db[kv.StoreKey]; !ok { + db[kv.StoreKey] = make(map[uint64]bool) + } + db[kv.StoreKey][kv.Key[0]] = true + } + + g = NewGenerator(Options{ + GeneratorParams: params, + InsertWeight: 0.25, + DeleteWeight: 0.05, + UpdateWeight: 0.50, + GetWeight: 0.20, + }, WithGenesis()) + for range 100_000 { + sk, op, err := g.Next() + require.NoError(t, err) + switch { + case op.Delete: + require.True(t, db[sk][op.Seed]) + delete(db[sk], op.Seed) + case op.ValueLength > 0: + if op.Exists { + // update + require.True(t, db[sk][op.Seed]) + } else { + // insert + require.False(t, db[sk][op.Seed]) + } + db[sk][op.Seed] = true + case op.ValueLength == 0: + // get + require.True(t, db[sk][op.Seed]) + default: + t.Fatalf("unexpected op: %v", op) + } + } + + // Test state Marshal/Unmarshal + var buf bytes.Buffer + require.NoError(t, g.state.Marshal(&buf)) + s := &State{} + require.NoError(t, s.Unmarshal(bytes.NewReader(buf.Bytes()))) + require.Equal(t, len(g.state.Keys), len(s.Keys)) + for i := range g.state.Keys { + require.Equal(t, len(g.state.Keys[i]), len(s.Keys[i])) + for j := range g.state.Keys[i] { + require.Equal(t, g.state.Keys[i][j], s.Keys[i][j]) + } + } +} + +func Test_Genesis_BytesKey(t *testing.T) { + params := &benchmarkmodulev1.GeneratorParams{ + Seed: 34, + BucketCount: 10, + GenesisCount: 2_000_000, + KeyMean: 64, + KeyStdDev: 8, + ValueMean: 1024, + ValueStdDev: 256, + } + g := NewGenerator(Options{GeneratorParams: params}) + db := make(map[uint64]map[uint64]bool) + for kv := range g.GenesisSet() { + if _, ok := db[kv.StoreKey]; !ok { + db[kv.StoreKey] = make(map[uint64]bool) + } + key := xxhash.Sum64(Bytes(kv.Key.Seed(), kv.Key.Length())) + db[kv.StoreKey][key] = true + } + + g = NewGenerator(Options{ + GeneratorParams: params, + InsertWeight: 0.25, + DeleteWeight: 0.05, + UpdateWeight: 0.50, + GetWeight: 0.20, + }, WithGenesis()) + for range 1_000_000 { + sk, op, err := g.Next() + require.NoError(t, err) + key := xxhash.Sum64(Bytes(op.Seed, op.KeyLength)) + switch { + case op.Delete: + require.True(t, db[sk][key]) + delete(db[sk], key) + case op.ValueLength > 0: + if op.Exists { + // update + require.True(t, db[sk][key]) + } else { + // insert + require.False(t, db[sk][key]) + } + db[sk][key] = true + case op.ValueLength == 0: + // get + require.True(t, db[sk][key]) + default: + t.Fatalf("unexpected op: %v", op) + } + } +} + +func Test_Bytes_Deterministic(t *testing.T) { + seed := uint64(12345) + length := uint64(53) + expected := Bytes(seed, length) + for i := 0; i < 100; i++ { + result := Bytes(seed, length) + require.Equal(t, expected, result, "Bytes() should be deterministic") + } +} diff --git a/tools/benchmark/go.mod b/tools/benchmark/go.mod new file mode 100644 index 000000000000..dc5e5bda5937 --- /dev/null +++ b/tools/benchmark/go.mod @@ -0,0 +1,158 @@ +module cosmossdk.io/tools/benchmark + +go 1.23.2 + +require ( + cosmossdk.io/api v0.7.6 + cosmossdk.io/core v1.0.0-alpha.6 + cosmossdk.io/depinject v1.1.0 + cosmossdk.io/log v1.5.0 + github.com/cespare/xxhash/v2 v2.3.0 + github.com/cosmos/cosmos-sdk v0.53.0 + github.com/cosmos/gogoproto v1.7.0 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/spf13/cobra v1.8.1 + github.com/stretchr/testify v1.10.0 + google.golang.org/grpc v1.68.1 +) + +require ( + buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect + buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect + cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect + cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e // indirect + cosmossdk.io/errors v1.0.1 // indirect + cosmossdk.io/math v1.4.0 // indirect + cosmossdk.io/schema v0.4.0 // indirect + cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect + cosmossdk.io/x/tx v1.0.0-alpha.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.5 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/speakeasy v0.2.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/bytedance/sonic v1.12.4 // indirect + github.com/bytedance/sonic/loader v0.2.1 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 // indirect + github.com/cometbft/cometbft-db v1.0.1 // indirect + github.com/cometbft/cometbft/api v1.0.0-rc2 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/iavl v1.3.2 // indirect + github.com/cosmos/ics23/go v0.11.0 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect + github.com/danieljoos/wincred v1.2.1 // 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/dgraph-io/badger/v4 v4.4.0 // indirect + github.com/dgraph-io/ristretto/v2 v2.0.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/emicklei/dot v1.6.2 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/flatbuffers v24.3.25+incompatible // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-metrics v0.5.3 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hdevalence/ed25519consensus v0.2.0 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/inconshreveable/mousetrap v1.1.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/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/linxGnu/grocksdb v1.9.3 // indirect + github.com/magiconair/properties v1.8.9 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // 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/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect + github.com/pkg/errors v0.9.1 // 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_model v0.6.1 // indirect + github.com/prometheus/common v0.61.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.12.0 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/sagikazarmark/locafero v0.4.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/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.7.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.19.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/supranational/blst v0.3.13 // 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/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect + gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect + go.opencensus.io v0.24.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/arch v0.12.0 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect + golang.org/x/mod v0.22.0 // indirect + golang.org/x/net v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/tools v0.27.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect + google.golang.org/protobuf v1.35.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + gotest.tools/v3 v3.5.1 // indirect + pgregory.net/rapid v1.1.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) + +replace ( + cosmossdk.io/api => ../../api + cosmossdk.io/store => ../../store + cosmossdk.io/x/bank => ../../x/bank + cosmossdk.io/x/staking => ../../x/staking + github.com/cosmos/cosmos-sdk => ../../ +) diff --git a/tools/benchmark/go.sum b/tools/benchmark/go.sum new file mode 100644 index 000000000000..55a476ac0849 --- /dev/null +++ b/tools/benchmark/go.sum @@ -0,0 +1,622 @@ +buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 h1:kAu+bRyXqQWarx/4mAdKFYW6bgvjGKhzvIXJvMHivC4= +buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1/go.mod h1:wqOtclGXqh+7m/L6fn0SatBJ+m9E5muF/41a3LgIPVI= +buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 h1:FYhA+EOS18QBdffLVpisUjBGsCtUljMx4bFOsZT81ZM= +buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= +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= +cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= +cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= +cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= +cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= +cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e h1:F+ScucYxwrrDJU8guJXQXpGhdpziYSbxW6HMP2wCNxs= +cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e/go.mod h1:3YvVv9aJayjPhdX0DY1IMrGse4sR63hNBWx2VtDWjGQ= +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.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= +cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= +cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.1 h1:5w61etWMQbdCSR7uveWXCnGnD5eQ/64B2vzIhqA80yo= +cosmossdk.io/x/tx v1.0.0-alpha.1/go.mod h1:xlJjZV1wxZBTCP+ygZx9pNT/XxsfHDPf1H0VhHaUp5w= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +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/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +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.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +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/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= +github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +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/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= +github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= +github.com/bytedance/sonic v1.12.4 h1:9Csb3c9ZJhfUWeMtpCDCq6BUoH5ogfDFLUgQ/jG+R0k= +github.com/bytedance/sonic v1.12.4/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.1 h1:1GgorWTqf12TA8mma4DDSbaQigE2wOgQo7iCjjJv3+E= +github.com/bytedance/sonic/loader v0.2.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +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/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/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= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/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/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 h1:moNybQ29M6OzirXBd7DBg1FERRECndXCEnlJSCIaMvo= +github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9/go.mod h1:GMmx+Ol327wKu+M/aMIZgOaagm8CC24CqVaC4zTpEok= +github.com/cometbft/cometbft-db v1.0.1 h1:SylKuLseMLQKw3+i8y8KozZyJcQSL98qEe2CGMCGTYE= +github.com/cometbft/cometbft-db v1.0.1/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk= +github.com/cometbft/cometbft/api v1.0.0-rc2 h1:ThzvNaJq37htjzfSsohhDoEebW94p0lEjA39CMDJ4xs= +github.com/cometbft/cometbft/api v1.0.0-rc2/go.mod h1:EkQiqVSu/p2ebrZEnB2z6Re7r8XNe//M7ylR0qEwWm0= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-db v1.1.0 h1:KLHNVQ73h7vawXTpj9UJ7ZR2IXv51tsEHkQJJ9EBDzI= +github.com/cosmos/cosmos-db v1.1.0/go.mod h1:t7c4A6cfGdpUwwVxrQ0gQLeRQqGUBJu0yvE4F/26REg= +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/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= +github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/iavl v1.3.2 h1:pQyZMG+N/dzmpSV0IXXpSa86Dz7AmIwNjXku3xBrL60= +github.com/cosmos/iavl v1.3.2/go.mod h1:T6SfBcyhulVIY2G/ZtAtQm/QiJvsuhIos52V4dWYk88= +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/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= +github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= +github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +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/dgraph-io/badger/v4 v4.4.0 h1:rA48XiDynZLyMdlaJl67p9+lqfqwxlgKtCpYLAio7Zk= +github.com/dgraph-io/badger/v4 v4.4.0/go.mod h1:sONMmPPfbnj9FPwS/etCqky/ULth6CQJuAZSuWCmixE= +github.com/dgraph-io/ristretto/v2 v2.0.0 h1:l0yiSOtlJvc0otkqyMaDNysg8E9/F/TYZwMbxscNOAQ= +github.com/dgraph-io/ristretto/v2 v2.0.0/go.mod h1:FVFokF2dRqXyPyeMnK1YDy8Fc6aTe0IKgbcd03CYeEk= +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/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= +github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +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.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/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +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-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/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +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/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= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI= +github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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/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= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= +github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= +github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog= +github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +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/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= +github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= +github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU= +github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w= +github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +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/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/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/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= +github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= +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/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= +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/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= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +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/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/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.28.1 h1:MijcGUbfYuznzK/5R4CPNoUP/9Xvuo20sXfEm6XxoTA= +github.com/onsi/gomega v1.28.1/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +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/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +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_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +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/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +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/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= +github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= +github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +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/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= +github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +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/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +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/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= +gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA= +gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8= +gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q= +gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= +go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +golang.org/x/arch v0.12.0 h1:UsYJhbzPYGsT0HbEdmYcqtCv8UNGvnaL561NnIUvaKg= +golang.org/x/arch v0.12.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +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.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.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= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +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= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +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= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= +golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= +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= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= +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= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +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/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +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= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/tools/benchmark/module/depinject.go b/tools/benchmark/module/depinject.go new file mode 100644 index 000000000000..815248cc5993 --- /dev/null +++ b/tools/benchmark/module/depinject.go @@ -0,0 +1,69 @@ +package module + +import ( + "unsafe" + + modulev1 "cosmossdk.io/api/cosmos/benchmark/module/v1" + "cosmossdk.io/core/appmodule" + "cosmossdk.io/core/store" + "cosmossdk.io/depinject" + "cosmossdk.io/depinject/appconfig" + "cosmossdk.io/log" + gen "cosmossdk.io/tools/benchmark/generator" +) + +const ( + ModuleName = "benchmark" + maxStoreKeyGenIterations = 100 +) + +func init() { + appconfig.RegisterModule( + &modulev1.Module{}, + appconfig.Provide( + ProvideModule, + ), + ) +} + +type StoreKeyRegistrar interface { + RegisterKey(string) +} + +type Input struct { + depinject.In + + Logger log.Logger + Cfg *modulev1.Module + Registrar StoreKeyRegistrar `optional:"true"` + StoreFactory store.KVStoreServiceFactory +} + +func ProvideModule( + in Input, +) (appmodule.AppModule, error) { + cfg := in.Cfg + kvMap := make(KVServiceMap) + storeKeys, err := gen.StoreKeys(ModuleName, cfg.GenesisParams.Seed, cfg.GenesisParams.BucketCount) + if err != nil { + return nil, err + } + for _, sk := range storeKeys { + // app v2 case + if in.Registrar != nil { + in.Registrar.RegisterKey(sk) + } + kvService := in.StoreFactory(unsafeStrToBytes(sk)) + kvMap[sk] = kvService + } + + return NewAppModule(cfg.GenesisParams, storeKeys, kvMap, in.Logger), nil +} + +type KVServiceMap map[string]store.KVStoreService + +// unsafeStrToBytes uses unsafe to convert string into byte array. Returned bytes +// must not be altered after this function is called as it will cause a segmentation fault. +func unsafeStrToBytes(s string) []byte { + return unsafe.Slice(unsafe.StringData(s), len(s)) // ref https://github.com/golang/go/issues/53003#issuecomment-1140276077 +} diff --git a/tools/benchmark/module/keeper.go b/tools/benchmark/module/keeper.go new file mode 100644 index 000000000000..e5c62543e3da --- /dev/null +++ b/tools/benchmark/module/keeper.go @@ -0,0 +1,119 @@ +package module + +import ( + "context" + "fmt" + + "cosmossdk.io/tools/benchmark" + gen "cosmossdk.io/tools/benchmark/generator" + + "github.com/cosmos/cosmos-sdk/telemetry" +) + +var ( + _ benchmark.MsgServer = &Keeper{} + metricOpKey = []string{"benchmark", "op"} + metricGetKey = append(metricOpKey, "get") + metricDelete = append(metricOpKey, "delete") + metricInsertKey = append(metricOpKey, "insert") + metricUpdateKey = append(metricOpKey, "update") + metricTotalKey = []string{"benchmark", "total"} + metricMissKey = []string{"benchmark", "miss"} +) + +type Keeper struct { + kvServiceMap KVServiceMap + validate bool + errExit bool +} + +func NewKeeper(kvMap KVServiceMap) *Keeper { + k := &Keeper{ + kvServiceMap: kvMap, + validate: false, + errExit: false, + } + return k +} + +func (k *Keeper) LoadTest(ctx context.Context, msg *benchmark.MsgLoadTest) (*benchmark.MsgLoadTestResponse, error) { + res := &benchmark.MsgLoadTestResponse{} + for _, op := range msg.Ops { + telemetry.IncrCounter(1, metricTotalKey...) + err := k.executeOp(ctx, op) + if err != nil { + return res, err + } + } + return res, nil +} + +func (k *Keeper) executeOp(ctx context.Context, op *benchmark.Op) error { + svc, ok := k.kvServiceMap[op.Actor] + key := gen.Bytes(op.Seed, op.KeyLength) + if !ok { + return fmt.Errorf("actor %s not found", op.Actor) + } + kv := svc.OpenKVStore(ctx) + switch { + case op.Delete: + telemetry.IncrCounter(1, metricDelete...) + if k.validate { + exists, err := kv.Has(key) + if err != nil { + return err + } + if !exists { + telemetry.IncrCounter(1, metricMissKey...) + if k.errExit { + return fmt.Errorf("key %d not found", op.Seed) + } + } + } + return kv.Delete(key) + case op.ValueLength > 0: + metricKey := metricInsertKey + if op.Exists { + metricKey = metricUpdateKey + } + telemetry.IncrCounter(1, metricKey...) + if k.validate { + exists, err := kv.Has(key) + if err != nil { + return err + } + if exists != op.Exists { + telemetry.IncrCounter(1, metricMissKey...) + if k.errExit { + return fmt.Errorf("key %d exists=%t, expected=%t", op.Seed, exists, op.Exists) + } + } + } + value := gen.Bytes(op.Seed, op.ValueLength) + return kv.Set(key, value) + case op.Iterations > 0: + return fmt.Errorf("iterator not implemented") + case op.ValueLength == 0: + telemetry.IncrCounter(1, metricGetKey...) + v, err := kv.Get(key) + if v == nil { + // always count a miss on GET since it requires no extra I/O + telemetry.IncrCounter(1, metricMissKey...) + if k.errExit { + return fmt.Errorf("key %s not found", key) + } + } + return err + default: + return fmt.Errorf("invalid op: %+v", op) + } +} + +func (k *Keeper) set(ctx context.Context, actor string, key, value []byte) error { + svc, ok := k.kvServiceMap[actor] + if !ok { + return fmt.Errorf("actor %s not found", actor) + } + kv := svc.OpenKVStore(ctx) + return kv.Set(key, value) +} diff --git a/tools/benchmark/module/module.go b/tools/benchmark/module/module.go new file mode 100644 index 000000000000..5bf1910d6362 --- /dev/null +++ b/tools/benchmark/module/module.go @@ -0,0 +1,107 @@ +package module + +import ( + "context" + "encoding/json" + + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" + "google.golang.org/grpc" + + modulev1 "cosmossdk.io/api/cosmos/benchmark/module/v1" + _ "cosmossdk.io/api/cosmos/benchmark/v1" // for some reason this is required to make msg server registration work + "cosmossdk.io/core/appmodule" + "cosmossdk.io/core/registry" + "cosmossdk.io/core/transaction" + "cosmossdk.io/log" + "cosmossdk.io/tools/benchmark" + "cosmossdk.io/tools/benchmark/client/cli" + gen "cosmossdk.io/tools/benchmark/generator" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/types/msgservice" +) + +var ( + _ module.HasGRPCGateway = &AppModule{} + _ appmodule.AppModule = &AppModule{} + _ appmodule.HasGenesis = &AppModule{} +) + +type AppModule struct { + keeper *Keeper + storeKeys []string + genesisParams *modulev1.GeneratorParams + log log.Logger +} + +func NewAppModule( + genesisParams *modulev1.GeneratorParams, + storeKeys []string, + kvMap KVServiceMap, + logger log.Logger, +) *AppModule { + return &AppModule{ + genesisParams: genesisParams, + keeper: NewKeeper(kvMap), + storeKeys: storeKeys, + log: logger, + } +} + +// DefaultGenesis implements appmodulev2.HasGenesis. +func (a *AppModule) DefaultGenesis() json.RawMessage { + return nil +} + +// ExportGenesis implements appmodulev2.HasGenesis. +func (a *AppModule) ExportGenesis(context.Context) (json.RawMessage, error) { return nil, nil } + +// InitGenesis implements appmodulev2.HasGenesis. +func (a *AppModule) InitGenesis(ctx context.Context, _ json.RawMessage) error { + a.genesisParams.BucketCount = uint64(len(a.storeKeys)) + g := gen.NewGenerator(gen.Options{GeneratorParams: a.genesisParams}) + i := 0 + for kv := range g.GenesisSet() { + i++ + if i%100_000 == 0 { + a.log.Warn("benchmark: init genesis", "progress", i, "total", a.genesisParams.GenesisCount) + } + sk := a.storeKeys[kv.StoreKey] + key := gen.Bytes(kv.Key.Seed(), kv.Key.Length()) + value := gen.Bytes(kv.Value.Seed(), kv.Value.Length()) + err := a.keeper.set(ctx, sk, key, value) + if err != nil { + return err + } + } + return nil +} + +// ValidateGenesis implements appmodulev2.HasGenesis. +func (a *AppModule) ValidateGenesis(data json.RawMessage) error { return nil } + +func (a *AppModule) RegisterGRPCGatewayRoutes(client.Context, *runtime.ServeMux) { +} + +// RegisterServices registers module services. +func (a *AppModule) RegisterServices(registrar grpc.ServiceRegistrar) error { + benchmark.RegisterMsgServer(registrar, a.keeper) + return nil +} + +func (a *AppModule) RegisterInterfaces(registrar registry.InterfaceRegistrar) { + registrar.RegisterImplementations( + (*transaction.Msg)(nil), + &benchmark.MsgLoadTest{}) + msgservice.RegisterMsgServiceDesc(registrar, &benchmark.Msg_serviceDesc) +} + +func (a *AppModule) GetTxCmd() *cobra.Command { + return cli.NewTxCmd(a.genesisParams) +} + +func (a *AppModule) IsOnePerModuleType() {} + +func (a *AppModule) IsAppModule() {} diff --git a/tools/benchmark/proto/buf.gen.gogo.yaml b/tools/benchmark/proto/buf.gen.gogo.yaml new file mode 100644 index 000000000000..db36231d0c82 --- /dev/null +++ b/tools/benchmark/proto/buf.gen.gogo.yaml @@ -0,0 +1,8 @@ +version: v1 +plugins: + - name: gocosmos + out: .. + opt: plugins=grpc,Mgoogle/protobuf/any.proto=github.com/cosmos/gogoproto/types/any + - name: grpc-gateway + out: .. + opt: logtostderr=true,allow_colon_final_segments=true diff --git a/tools/benchmark/proto/buf.gen.pulsar.yaml b/tools/benchmark/proto/buf.gen.pulsar.yaml new file mode 100644 index 000000000000..cb908f80c9f0 --- /dev/null +++ b/tools/benchmark/proto/buf.gen.pulsar.yaml @@ -0,0 +1,19 @@ +version: v1 +managed: + enabled: true + go_package_prefix: + default: cosmossdk.io/api + except: + - buf.build/googleapis/googleapis + - buf.build/cosmos/gogo-proto + - buf.build/cosmos/cosmos-proto + override: + buf.build/cosmos/cosmos-sdk: cosmossdk.io/api + buf.build/cometbft/cometbft: buf.build/gen/go/cometbft/cometbft/protocolbuffers/go +plugins: + - name: go-pulsar + out: .. + opt: paths=source_relative + - name: go-grpc + out: .. + opt: paths=source_relative diff --git a/tools/benchmark/proto/buf.lock b/tools/benchmark/proto/buf.lock new file mode 100644 index 000000000000..02bbfddc729d --- /dev/null +++ b/tools/benchmark/proto/buf.lock @@ -0,0 +1,38 @@ +# Generated by buf. DO NOT EDIT. +version: v1 +deps: + - remote: buf.build + owner: cometbft + repository: cometbft + commit: c0d3497e35d649538679874acdd86660 + digest: shake256:05d2fb9e6b6bf82385ac26b250afbba281a2ca79f51729291373d24ca676d743183bf70a921daae6feafd5f9917120e2548a7c477d9743f668bca27cc1e12fdf + - remote: buf.build + owner: cosmos + repository: cosmos-proto + commit: 04467658e59e44bbb22fe568206e1f70 + digest: shake256:73a640bd60e0c523b0f8237ff34eab67c45a38b64bbbde1d80224819d272dbf316ac183526bd245f994af6608b025f5130483d0133c5edd385531326b5990466 + - remote: buf.build + owner: cosmos + repository: cosmos-sdk + commit: 05419252bcc241ea8023acf1ed4cadc5 + digest: shake256:1e54a48c19a8b59d35e0a7efa76402939f515f2d8005df099856f24c37c20a52800308f025abb8cffcd014d437b49707388aaca4865d9d063d8f25d5d4eb77d5 + - remote: buf.build + owner: cosmos + repository: gogo-proto + commit: 88ef6483f90f478fb938c37dde52ece3 + digest: shake256:89c45df2aa11e0cff97b0d695436713db3d993d76792e9f8dc1ae90e6ab9a9bec55503d48ceedd6b86069ab07d3041b32001b2bfe0227fa725dd515ff381e5ba + - remote: buf.build + owner: googleapis + repository: googleapis + commit: f52d4f76a8434cc5966798b1d3b4f110 + digest: shake256:71566dd80e39b7d85fdaa9b7f82107385181d5b6d17ea56c0aacce61099b35f9f1bcf7333ad9838ca19d24d7f076b039de7c9c09c55d23bb4c2fddfceff4d2c2 + - remote: buf.build + owner: protocolbuffers + repository: wellknowntypes + commit: 657250e6a39648cbb169d079a60bd9ba + digest: shake256:00de25001b8dd2e29d85fc4bcc3ede7aed886d76d67f5e0f7a9b320b90f871d3eb73507d50818d823a0512f3f8db77a11c043685528403e31ff3fef18323a9fb + - remote: buf.build + owner: tendermint + repository: tendermint + commit: 33ed361a90514289beabf3189e1d7665 + digest: shake256:038267e06294714fd883610626554b04a127b576b4e253befb4206cb72d5d3c1eeccacd4b9ec8e3fb891f7c14e1cb0f770c077d2989638995b0a61c85afedb1d diff --git a/tools/benchmark/proto/buf.yaml b/tools/benchmark/proto/buf.yaml new file mode 100644 index 000000000000..ae83b8045617 --- /dev/null +++ b/tools/benchmark/proto/buf.yaml @@ -0,0 +1,19 @@ +version: v1 +name: buf.build/mods/benchmark +deps: + - buf.build/cosmos/cosmos-sdk # pin the Cosmos SDK version + - buf.build/cometbft/cometbft:4a62c99d422068a5165429b62a7eb824df46cca9 # CometBFT v0.38 + - buf.build/cosmos/cosmos-proto + - buf.build/cosmos/gogo-proto + - buf.build/googleapis/googleapis +lint: + use: + - DEFAULT + - COMMENTS + - FILE_LOWER_SNAKE_CASE + except: + - UNARY_RPC + - COMMENT_FIELD + - SERVICE_SUFFIX + - PACKAGE_VERSION_SUFFIX + - RPC_REQUEST_STANDARD_NAME diff --git a/tools/benchmark/proto/cosmos/benchmark/module/v1/module.proto b/tools/benchmark/proto/cosmos/benchmark/module/v1/module.proto new file mode 100644 index 000000000000..c0bc93f0dfb5 --- /dev/null +++ b/tools/benchmark/proto/cosmos/benchmark/module/v1/module.proto @@ -0,0 +1,43 @@ +syntax = "proto3"; + +package cosmos.benchmark.module.v1; + +import "cosmos/app/v1alpha1/module.proto"; + +// Module is the config object of the benchmark module. +message Module { + option (cosmos.app.v1alpha1.module) = { + go_import: "cosmossdk.io/tools/benchmark" + }; + + GeneratorParams genesis_params = 1; +} + +// GenesisParams defines the genesis parameters for the benchmark module. +message GeneratorParams { + // seed is the seed for the random number generator. + uint64 seed = 1; + // bucket_count is the number of store keys to uniformly distribute genesis_count keys across. + uint64 bucket_count = 2; + + // key_mean is the mean size (in normal distribution) of keys in each bucket. + uint64 key_mean = 3; + // key_std_dev is the standard deviation of key sizes in each bucket. + uint64 key_std_dev = 4; + // value_mean is the mean size (in normal distribution) of values in each bucket. + uint64 value_mean = 6; + // value_std_dev is the standard deviation of value sizes in each bucket. + uint64 value_std_dev = 7; + + // genesis_count is the number of keys to insert in the store, distributed across all buckets. + uint64 genesis_count = 8; + + // insert_weight is the weight of insert operations. + float insert_weight = 9; + // update_weight is the weight of update operations. + float update_weight = 10; + // get_weight is the weight of get operations. + float get_weight = 12; + // delete_weight is the weight of delete operations. + float delete_weight = 11; +} \ No newline at end of file diff --git a/tools/benchmark/proto/cosmos/benchmark/v1/benchmark.proto b/tools/benchmark/proto/cosmos/benchmark/v1/benchmark.proto new file mode 100644 index 000000000000..db77c229fe34 --- /dev/null +++ b/tools/benchmark/proto/cosmos/benchmark/v1/benchmark.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package cosmos.benchmark.v1; + +option go_package = "cosmossdk.io/tools/benchmark"; + +// Op is a message describing a benchmark operation. +message Op { + uint64 seed = 1; + string actor = 2; + + uint64 key_length = 3; + uint64 value_length = 4; + uint32 iterations = 5; + bool delete = 6; + bool exists = 7; +} \ No newline at end of file diff --git a/tools/benchmark/proto/cosmos/benchmark/v1/tx.proto b/tools/benchmark/proto/cosmos/benchmark/v1/tx.proto new file mode 100644 index 000000000000..50c2cb1a7b6d --- /dev/null +++ b/tools/benchmark/proto/cosmos/benchmark/v1/tx.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +package cosmos.benchmark.v1; + +import "cosmos/benchmark/v1/benchmark.proto"; +import "cosmos/msg/v1/msg.proto"; +import "amino/amino.proto"; + +option go_package = "cosmossdk.io/tools/benchmark"; + +// MsgLoadTestOps defines a message containing a sequence of load test operations. +message MsgLoadTest { + option (cosmos.msg.v1.signer) = "caller"; + option (amino.name) = "cosmos-sdk/tools/benchmark/v1/MsgLoadTest"; + + bytes caller = 1; + + repeated Op ops = 2; +} + +// MsgLoadTestResponse defines a message containing the results of a load test operation. +message MsgLoadTestResponse { + uint64 total_time = 1; + uint64 total_errors = 2; +} + +// Msg defines the benchmark Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + + // LoadTest defines a method for executing a sequence of load test operations. + rpc LoadTest(MsgLoadTest) returns (MsgLoadTestResponse); +} diff --git a/tools/benchmark/sonar-project.properties b/tools/benchmark/sonar-project.properties new file mode 100644 index 000000000000..6756fe89872e --- /dev/null +++ b/tools/benchmark/sonar-project.properties @@ -0,0 +1,16 @@ +sonar.projectKey=cosmos-sdk-tools-benchmark +sonar.organization=cosmos + +sonar.projectName=Cosmos SDK - tools/benchmark +sonar.project.monorepo.enabled=true + +sonar.sources=. +sonar.exclusions=**/*_test.go,**/*.pb.go,**/*.pulsar.go,**/*.pb.gw.go +sonar.coverage.exclusions=**/*_test.go,**/testutil/**,**/*.pb.go,**/*.pb.gw.go,**/*.pulsar.go,test_helpers.go,docs/** +sonar.tests=. +sonar.test.inclusions=**/*_test.go +sonar.go.coverage.reportPaths=coverage.out + +sonar.sourceEncoding=UTF-8 +sonar.scm.provider=git +sonar.scm.forceReloadAll=true diff --git a/tools/benchmark/tx.pb.go b/tools/benchmark/tx.pb.go new file mode 100644 index 000000000000..3a3b76a8d6ec --- /dev/null +++ b/tools/benchmark/tx.pb.go @@ -0,0 +1,670 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/benchmark/v1/tx.proto + +package benchmark + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MsgLoadTestOps defines a message containing a sequence of load test operations. +type MsgLoadTest struct { + Caller []byte `protobuf:"bytes,1,opt,name=caller,proto3" json:"caller,omitempty"` + Ops []*Op `protobuf:"bytes,2,rep,name=ops,proto3" json:"ops,omitempty"` +} + +func (m *MsgLoadTest) Reset() { *m = MsgLoadTest{} } +func (m *MsgLoadTest) String() string { return proto.CompactTextString(m) } +func (*MsgLoadTest) ProtoMessage() {} +func (*MsgLoadTest) Descriptor() ([]byte, []int) { + return fileDescriptor_481e3d7f7138b75b, []int{0} +} +func (m *MsgLoadTest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgLoadTest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgLoadTest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgLoadTest) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgLoadTest.Merge(m, src) +} +func (m *MsgLoadTest) XXX_Size() int { + return m.Size() +} +func (m *MsgLoadTest) XXX_DiscardUnknown() { + xxx_messageInfo_MsgLoadTest.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgLoadTest proto.InternalMessageInfo + +func (m *MsgLoadTest) GetCaller() []byte { + if m != nil { + return m.Caller + } + return nil +} + +func (m *MsgLoadTest) GetOps() []*Op { + if m != nil { + return m.Ops + } + return nil +} + +// MsgLoadTestResponse defines a message containing the results of a load test operation. +type MsgLoadTestResponse struct { + TotalTime uint64 `protobuf:"varint,1,opt,name=total_time,json=totalTime,proto3" json:"total_time,omitempty"` + TotalErrors uint64 `protobuf:"varint,2,opt,name=total_errors,json=totalErrors,proto3" json:"total_errors,omitempty"` +} + +func (m *MsgLoadTestResponse) Reset() { *m = MsgLoadTestResponse{} } +func (m *MsgLoadTestResponse) String() string { return proto.CompactTextString(m) } +func (*MsgLoadTestResponse) ProtoMessage() {} +func (*MsgLoadTestResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_481e3d7f7138b75b, []int{1} +} +func (m *MsgLoadTestResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgLoadTestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgLoadTestResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgLoadTestResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgLoadTestResponse.Merge(m, src) +} +func (m *MsgLoadTestResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgLoadTestResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgLoadTestResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgLoadTestResponse proto.InternalMessageInfo + +func (m *MsgLoadTestResponse) GetTotalTime() uint64 { + if m != nil { + return m.TotalTime + } + return 0 +} + +func (m *MsgLoadTestResponse) GetTotalErrors() uint64 { + if m != nil { + return m.TotalErrors + } + return 0 +} + +func init() { + proto.RegisterType((*MsgLoadTest)(nil), "cosmos.benchmark.v1.MsgLoadTest") + proto.RegisterType((*MsgLoadTestResponse)(nil), "cosmos.benchmark.v1.MsgLoadTestResponse") +} + +func init() { proto.RegisterFile("cosmos/benchmark/v1/tx.proto", fileDescriptor_481e3d7f7138b75b) } + +var fileDescriptor_481e3d7f7138b75b = []byte{ + // 322 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0xce, 0x2f, 0xce, + 0xcd, 0x2f, 0xd6, 0x4f, 0x4a, 0xcd, 0x4b, 0xce, 0xc8, 0x4d, 0x2c, 0xca, 0xd6, 0x2f, 0x33, 0xd4, + 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x86, 0xc8, 0xea, 0xc1, 0x65, 0xf5, + 0xca, 0x0c, 0xa5, 0x94, 0xb1, 0x69, 0x41, 0xa8, 0x00, 0xeb, 0x94, 0x12, 0x87, 0x2a, 0xca, 0x2d, + 0x4e, 0x07, 0x49, 0xe7, 0x16, 0xa7, 0x43, 0x25, 0x04, 0x13, 0x73, 0x33, 0xf3, 0xf2, 0xf5, 0xc1, + 0x24, 0x44, 0x48, 0xa9, 0x9b, 0x91, 0x8b, 0xdb, 0xb7, 0x38, 0xdd, 0x27, 0x3f, 0x31, 0x25, 0x24, + 0xb5, 0xb8, 0x44, 0x48, 0x8c, 0x8b, 0x2d, 0x39, 0x31, 0x27, 0x27, 0xb5, 0x48, 0x82, 0x51, 0x81, + 0x51, 0x83, 0x27, 0x08, 0xca, 0x13, 0xd2, 0xe4, 0x62, 0xce, 0x2f, 0x28, 0x96, 0x60, 0x52, 0x60, + 0xd6, 0xe0, 0x36, 0x12, 0xd7, 0xc3, 0xe2, 0x36, 0x3d, 0xff, 0x82, 0x20, 0x90, 0x1a, 0x2b, 0xcb, + 0xa6, 0xe7, 0x1b, 0xb4, 0xa0, 0xfa, 0xba, 0x9e, 0x6f, 0xd0, 0xd2, 0x84, 0x28, 0xd6, 0x2d, 0x4e, + 0xc9, 0xd6, 0x2f, 0xc9, 0xcf, 0xcf, 0x41, 0x73, 0x3d, 0x92, 0xed, 0x4a, 0xe1, 0x5c, 0xc2, 0x48, + 0xdc, 0xa0, 0xd4, 0xe2, 0x82, 0xfc, 0xbc, 0xe2, 0x54, 0x21, 0x59, 0x2e, 0xae, 0x92, 0xfc, 0x92, + 0xc4, 0x9c, 0xf8, 0x92, 0xcc, 0xdc, 0x54, 0xb0, 0xc3, 0x58, 0x82, 0x38, 0xc1, 0x22, 0x21, 0x99, + 0xb9, 0xa9, 0x42, 0x8a, 0x5c, 0x3c, 0x10, 0xe9, 0xd4, 0xa2, 0xa2, 0xfc, 0x22, 0x90, 0x23, 0x41, + 0x0a, 0xb8, 0xc1, 0x62, 0xae, 0x60, 0x21, 0xa3, 0x14, 0x2e, 0x66, 0xdf, 0xe2, 0x74, 0xa1, 0x30, + 0x2e, 0x0e, 0xb8, 0x4f, 0x15, 0xb0, 0x7a, 0x02, 0xc9, 0x7a, 0x29, 0x0d, 0x42, 0x2a, 0x60, 0x0e, + 0x94, 0x62, 0x6d, 0x78, 0xbe, 0x41, 0x8b, 0xd1, 0xc9, 0xec, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, + 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, + 0x8f, 0xe5, 0x18, 0xa2, 0xa0, 0x51, 0x5d, 0x9c, 0x92, 0xad, 0x97, 0x99, 0x8f, 0x1e, 0x0a, 0x49, + 0x6c, 0xe0, 0xb8, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x15, 0x3a, 0xfe, 0x19, 0x11, 0x02, + 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // LoadTest defines a method for executing a sequence of load test operations. + LoadTest(ctx context.Context, in *MsgLoadTest, opts ...grpc.CallOption) (*MsgLoadTestResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) LoadTest(ctx context.Context, in *MsgLoadTest, opts ...grpc.CallOption) (*MsgLoadTestResponse, error) { + out := new(MsgLoadTestResponse) + err := c.cc.Invoke(ctx, "/cosmos.benchmark.v1.Msg/LoadTest", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // LoadTest defines a method for executing a sequence of load test operations. + LoadTest(context.Context, *MsgLoadTest) (*MsgLoadTestResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) LoadTest(ctx context.Context, req *MsgLoadTest) (*MsgLoadTestResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LoadTest not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_LoadTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgLoadTest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).LoadTest(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.benchmark.v1.Msg/LoadTest", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).LoadTest(ctx, req.(*MsgLoadTest)) + } + return interceptor(ctx, in, info, handler) +} + +var Msg_serviceDesc = _Msg_serviceDesc +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.benchmark.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "LoadTest", + Handler: _Msg_LoadTest_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/benchmark/v1/tx.proto", +} + +func (m *MsgLoadTest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgLoadTest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgLoadTest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Ops) > 0 { + for iNdEx := len(m.Ops) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Ops[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Caller) > 0 { + i -= len(m.Caller) + copy(dAtA[i:], m.Caller) + i = encodeVarintTx(dAtA, i, uint64(len(m.Caller))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgLoadTestResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgLoadTestResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgLoadTestResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.TotalErrors != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.TotalErrors)) + i-- + dAtA[i] = 0x10 + } + if m.TotalTime != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.TotalTime)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgLoadTest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Caller) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Ops) > 0 { + for _, e := range m.Ops { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgLoadTestResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.TotalTime != 0 { + n += 1 + sovTx(uint64(m.TotalTime)) + } + if m.TotalErrors != 0 { + n += 1 + sovTx(uint64(m.TotalErrors)) + } + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgLoadTest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgLoadTest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgLoadTest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Caller", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Caller = append(m.Caller[:0], dAtA[iNdEx:postIndex]...) + if m.Caller == nil { + m.Caller = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ops", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ops = append(m.Ops, &Op{}) + if err := m.Ops[len(m.Ops)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgLoadTestResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgLoadTestResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgLoadTestResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TotalTime", wireType) + } + m.TotalTime = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TotalTime |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TotalErrors", wireType) + } + m.TotalErrors = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TotalErrors |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) From 629106eb84fe8a2c3697895069d667c82f4eb68e Mon Sep 17 00:00:00 2001 From: Matt Kocubinski Date: Thu, 12 Dec 2024 12:20:56 -0600 Subject: [PATCH 51/62] fix(x/tx): fallback to injected resolver for placeholder descriptors (#22852) --- x/tx/CHANGELOG.md | 6 ++++++ x/tx/decode/unknown.go | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/x/tx/CHANGELOG.md b/x/tx/CHANGELOG.md index 92245db8f77b..7120fe357497 100644 --- a/x/tx/CHANGELOG.md +++ b/x/tx/CHANGELOG.md @@ -33,6 +33,12 @@ Since v0.13.0, x/tx follows Cosmos SDK semver: https://github.com/cosmos/cosmos- ## [Unreleased] +## [v1.0.0-alpha.3](https://github.com/cosmos/cosmos-sdk/releases/tag/x/tx/v1.0.0-alpha.3) - 2024-12-12 + +### Bug Fixes + +* [#22852](https://github.com/cosmos/cosmos-sdk/pull/22852) Fallback to injected resolver for placeholder descriptors. + ## [v1.0.0-alpha.2](https://github.com/cosmos/cosmos-sdk/releases/tag/x/tx/v1.0.0-alpha.2) - 2024-11-01 * [#22311](https://github.com/cosmos/cosmos-sdk/pull/22311) Fix add feePayer as signer. diff --git a/x/tx/decode/unknown.go b/x/tx/decode/unknown.go index fed2c1be8ff8..cd0ed0ba7aa1 100644 --- a/x/tx/decode/unknown.go +++ b/x/tx/decode/unknown.go @@ -82,6 +82,17 @@ func RejectUnknownFields(bz []byte, desc protoreflect.MessageDescriptor, allowUn if fieldMessage == nil { continue } + // if a message descriptor is a placeholder resolve it using the injected resolver. + // this can happen when a descriptor has been registered in the + // "google.golang.org/protobuf" resgistry but not in "github.com/cosmos/gogoproto". + // fixes: https://github.com/cosmos/cosmos-sdk/issues/22574 + if fieldMessage.IsPlaceholder() { + gogoDesc, err := resolver.FindDescriptorByName(fieldMessage.FullName()) + if err != nil { + return hasUnknownNonCriticals, fmt.Errorf("could not resolve placeholder descriptor: %v: %w", fieldMessage, err) + } + fieldMessage = gogoDesc.(protoreflect.MessageDescriptor) + } // consume length prefix of nested message _, o := protowire.ConsumeVarint(fieldBytes) From 570585090ad9772c43aafdfc4403349eb260742c Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 13 Dec 2024 08:49:38 +0100 Subject: [PATCH 52/62] chore: sync changelog to main + clean-up replaces (#22846) --- client/v2/CHANGELOG.md | 21 +++++++++++++++++---- client/v2/go.mod | 6 ++---- client/v2/go.sum | 4 ++++ go.mod | 6 ++---- go.sum | 4 ++++ runtime/v2/go.mod | 6 ++---- runtime/v2/go.sum | 4 ++++ server/v2/cometbft/go.mod | 6 ++---- server/v2/cometbft/go.sum | 4 ++++ server/v2/go.mod | 4 +--- server/v2/go.sum | 2 ++ simapp/go.mod | 6 ++---- simapp/go.sum | 4 ++++ simapp/v2/go.mod | 6 ++---- simapp/v2/go.sum | 4 ++++ tests/go.mod | 6 ++---- tests/go.sum | 4 ++++ tools/benchmark/go.mod | 5 ++--- tools/benchmark/go.sum | 6 ++++-- x/accounts/defaults/base/go.mod | 6 ++---- x/accounts/defaults/base/go.sum | 4 ++++ x/accounts/defaults/lockup/go.mod | 6 ++---- x/accounts/defaults/lockup/go.sum | 4 ++++ x/accounts/defaults/multisig/go.mod | 6 ++---- x/accounts/defaults/multisig/go.sum | 4 ++++ x/accounts/go.mod | 6 ++---- x/accounts/go.sum | 4 ++++ x/authz/go.mod | 6 ++---- x/authz/go.sum | 4 ++++ x/bank/go.mod | 6 ++---- x/bank/go.sum | 4 ++++ x/circuit/go.mod | 6 ++---- x/circuit/go.sum | 4 ++++ x/consensus/go.mod | 6 ++---- x/consensus/go.sum | 4 ++++ x/distribution/go.mod | 6 ++---- x/distribution/go.sum | 4 ++++ x/epochs/go.mod | 6 ++---- x/epochs/go.sum | 4 ++++ x/evidence/go.mod | 6 ++---- x/evidence/go.sum | 4 ++++ x/feegrant/go.mod | 6 ++---- x/feegrant/go.sum | 4 ++++ x/gov/go.mod | 6 ++---- x/gov/go.sum | 4 ++++ x/group/go.mod | 6 ++---- x/group/go.sum | 4 ++++ x/mint/go.mod | 6 ++---- x/mint/go.sum | 4 ++++ x/nft/go.mod | 6 ++---- x/nft/go.sum | 4 ++++ x/params/go.mod | 6 ++---- x/params/go.sum | 4 ++++ x/protocolpool/go.mod | 6 ++---- x/protocolpool/go.sum | 4 ++++ x/slashing/go.mod | 6 ++---- x/slashing/go.sum | 4 ++++ x/staking/go.mod | 6 ++---- x/staking/go.sum | 4 ++++ x/tx/CHANGELOG.md | 8 ++++++++ x/upgrade/go.mod | 6 ++---- x/upgrade/go.sum | 4 ++++ 62 files changed, 202 insertions(+), 124 deletions(-) diff --git a/client/v2/CHANGELOG.md b/client/v2/CHANGELOG.md index e4011ec3750e..c59e01268982 100644 --- a/client/v2/CHANGELOG.md +++ b/client/v2/CHANGELOG.md @@ -49,9 +49,6 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements -* [#22443](https://github.com/cosmos/cosmos-sdk/pull/22443) Add keyring flags in query commands. -* [#21936](https://github.com/cosmos/cosmos-sdk/pull/21936) Print possible enum values in error message after an invalid input was provided. - ### API Breaking Changes * [#17709](https://github.com/cosmos/cosmos-sdk/pull/17709) Address codecs have been removed from `autocli.AppOptions` and `flag.Builder`. Instead client/v2 uses the address codecs present in the context (introduced in [#17503](https://github.com/cosmos/cosmos-sdk/pull/17503)). @@ -60,9 +57,25 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Bug Fixes * [#21853](https://github.com/cosmos/cosmos-sdk/pull/21853) Fix `*big.Int` unmarshalling in txs. -* [#22576](https://github.com/cosmos/cosmos-sdk/pull/22576) Fix duplicate command addition in `autocli` when custom enhanced command has a different name than module name + +## [v2.0.0-beta.7] - 2024-12-10 + +### Bug Fixes + * [#22817](https://github.com/cosmos/cosmos-sdk/pull/22817) Add DecCoin support in autocli flag builder. +## [v2.0.0-beta.6] - 2024-11-21 + +### Improvements + +* [#22443](https://github.com/cosmos/cosmos-sdk/pull/22443) Add keyring flags in query commands. +* [#21936](https://github.com/cosmos/cosmos-sdk/pull/21936) Print possible enum values in error message after an invalid input was provided. + +### Bug Fixes + +* [#21809](https://github.com/cosmos/cosmos-sdk/pull/21809) Correctly handle enhanced sub commands. +* [#22576](https://github.com/cosmos/cosmos-sdk/pull/22576) Fix duplicate command addition in `autocli` when custom enhanced command has a different name than module name + ## [v2.0.0-beta.5] - 2024-09-18 ### Improvements diff --git a/client/v2/go.mod b/client/v2/go.mod index d8f11caa90e8..f08d0e2730cd 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -3,12 +3,12 @@ module cosmossdk.io/client/v2 go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a - cosmossdk.io/x/tx v1.0.0-alpha.1 + cosmossdk.io/x/tx v1.0.0-alpha.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.53.0 github.com/spf13/cobra v1.8.1 @@ -180,10 +180,8 @@ replace github.com/cosmos/cosmos-sdk => ./../../ // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ./../../api cosmossdk.io/store => ./../../store cosmossdk.io/x/bank => ./../../x/bank cosmossdk.io/x/gov => ./../../x/gov cosmossdk.io/x/staking => ./../../x/staking - cosmossdk.io/x/tx => ./../../x/tx ) diff --git a/client/v2/go.sum b/client/v2/go.sum index cab87eb6ce50..76665291f2e3 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -22,6 +24,8 @@ cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/go.mod b/go.mod index e16aa028cbb0..4d0e521ef960 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ go 1.23.2 module github.com/cosmos/cosmos-sdk require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -15,7 +15,7 @@ require ( cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 - cosmossdk.io/x/tx v1.0.0-alpha.1 + cosmossdk.io/x/tx v1.0.0-alpha.2 github.com/99designs/keyring v1.2.2 github.com/bgentry/speakeasy v0.2.0 github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 @@ -185,11 +185,9 @@ require ( // TODO remove after all modules have their own go.mods replace ( - cosmossdk.io/api => ./api cosmossdk.io/store => ./store cosmossdk.io/x/bank => ./x/bank cosmossdk.io/x/staking => ./x/staking - cosmossdk.io/x/tx => ./x/tx ) // Below are the long-lived replace of the Cosmos SDK diff --git a/go.sum b/go.sum index a37cf7692720..f1af3b4f4f52 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/runtime/v2/go.mod b/runtime/v2/go.mod index 9ae7daa99adc..a0975546c9eb 100644 --- a/runtime/v2/go.mod +++ b/runtime/v2/go.mod @@ -4,16 +4,14 @@ go 1.23 // server v2 integration replace ( - cosmossdk.io/api => ../../api cosmossdk.io/core/testing => ../../core/testing cosmossdk.io/server/v2/appmanager => ../../server/v2/appmanager cosmossdk.io/server/v2/stf => ../../server/v2/stf cosmossdk.io/store/v2 => ../../store/v2 - cosmossdk.io/x/tx => ../../x/tx ) require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.1 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/log v1.5.0 @@ -21,7 +19,7 @@ require ( cosmossdk.io/server/v2/appmanager v0.0.0-00010101000000-000000000000 cosmossdk.io/server/v2/stf v0.0.0-00010101000000-000000000000 cosmossdk.io/store/v2 v2.0.0-00010101000000-000000000000 - cosmossdk.io/x/tx v1.0.0-alpha.1 + cosmossdk.io/x/tx v1.0.0-alpha.2 github.com/cosmos/gogoproto v1.7.0 github.com/stretchr/testify v1.10.0 google.golang.org/grpc v1.68.1 diff --git a/runtime/v2/go.sum b/runtime/v2/go.sum index 2e17566a674f..adb23b18780e 100644 --- a/runtime/v2/go.sum +++ b/runtime/v2/go.sum @@ -2,6 +2,8 @@ buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1/go.mod h1:wqOtclGXqh+7m/L6fn0SatBJ+m9E5muF/41a3LgIPVI= buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 h1:FYhA+EOS18QBdffLVpisUjBGsCtUljMx4bFOsZT81ZM= buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= +cosmossdk.io/api v0.8.0-rc.1 h1:j5oNt5D9gsXtcI9ITYDKjxLXYysgzQIGIbXe381fXNE= +cosmossdk.io/api v0.8.0-rc.1/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E= @@ -12,6 +14,8 @@ cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod index 35b554c5dd70..87bc8fcf1a99 100644 --- a/server/v2/cometbft/go.mod +++ b/server/v2/cometbft/go.mod @@ -3,7 +3,6 @@ module cosmossdk.io/server/v2/cometbft go 1.23.2 replace ( - cosmossdk.io/api => ../../../api cosmossdk.io/core/testing => ../../../core/testing cosmossdk.io/server/v2 => ../ cosmossdk.io/server/v2/appmanager => ../appmanager @@ -13,12 +12,11 @@ replace ( cosmossdk.io/x/bank => ../../../x/bank cosmossdk.io/x/consensus => ../../../x/consensus cosmossdk.io/x/staking => ../../../x/staking - cosmossdk.io/x/tx => ../../../x/tx github.com/cosmos/cosmos-sdk => ../../../ ) require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/errors v1.0.1 @@ -51,7 +49,7 @@ require ( cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 diff --git a/server/v2/cometbft/go.sum b/server/v2/cometbft/go.sum index 0b1efec574b0..ecadd947bdef 100644 --- a/server/v2/cometbft/go.sum +++ b/server/v2/cometbft/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/server/v2/go.mod b/server/v2/go.mod index 83fb2fad7572..c781f224a6dc 100644 --- a/server/v2/go.mod +++ b/server/v2/go.mod @@ -3,16 +3,14 @@ module cosmossdk.io/server/v2 go 1.23 replace ( - cosmossdk.io/api => ../../api cosmossdk.io/server/v2/appmanager => ./appmanager cosmossdk.io/server/v2/stf => ./stf cosmossdk.io/store/v2 => ../../store/v2 cosmossdk.io/store/v2/db => ../../store/v2/db - cosmossdk.io/x/tx => ../../x/tx ) require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.1 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/log v1.5.0 diff --git a/server/v2/go.sum b/server/v2/go.sum index ae4ec07e681d..c5d67a76ad66 100644 --- a/server/v2/go.sum +++ b/server/v2/go.sum @@ -1,5 +1,7 @@ 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= +cosmossdk.io/api v0.8.0-rc.1 h1:j5oNt5D9gsXtcI9ITYDKjxLXYysgzQIGIbXe381fXNE= +cosmossdk.io/api v0.8.0-rc.1/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e h1:F+ScucYxwrrDJU8guJXQXpGhdpziYSbxW6HMP2wCNxs= diff --git a/simapp/go.mod b/simapp/go.mod index c902a035c0ba..7162e4f29919 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/simapp go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/client/v2 v2.0.0-beta.6 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 @@ -32,7 +32,7 @@ require ( cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 cosmossdk.io/x/slashing v0.0.0-00010101000000-000000000000 cosmossdk.io/x/staking v0.0.0-20240226161501-23359a0b6d91 - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect cosmossdk.io/x/upgrade v0.0.0-20230613133644-0a778132a60f github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 github.com/cometbft/cometbft/api v1.0.0-rc2 @@ -250,7 +250,6 @@ require ( // SimApp on main always tests the latest extracted SDK modules importing the sdk replace ( - cosmossdk.io/api => ../api cosmossdk.io/client/v2 => ../client/v2 cosmossdk.io/collections => ../collections cosmossdk.io/indexer/postgres => ../indexer/postgres @@ -277,7 +276,6 @@ replace ( cosmossdk.io/x/protocolpool => ../x/protocolpool cosmossdk.io/x/slashing => ../x/slashing cosmossdk.io/x/staking => ../x/staking - cosmossdk.io/x/tx => ../x/tx cosmossdk.io/x/upgrade => ../x/upgrade ) diff --git a/simapp/go.sum b/simapp/go.sum index 049c0844fe5c..6aafd5cb8aa5 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -192,6 +192,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e h1:F+ScucYxwrrDJU8guJXQXpGhdpziYSbxW6HMP2wCNxs= @@ -206,6 +208,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index c8b1f8e5607a..1d95f5af3373 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/simapp/v2 go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/client/v2 v2.0.0-beta.6 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 @@ -68,7 +68,7 @@ require ( cosmossdk.io/server/v2/appmanager v0.0.0-20240802110823-cffeedff643d // indirect cosmossdk.io/server/v2/stf v0.0.0-20240708142107-25e99c54bac1 // indirect cosmossdk.io/store v1.1.1 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -280,7 +280,6 @@ replace ( cosmossdk.io/x/protocolpool => ../../x/protocolpool cosmossdk.io/x/slashing => ../../x/slashing cosmossdk.io/x/staking => ../../x/staking - cosmossdk.io/x/tx => ../../x/tx cosmossdk.io/x/upgrade => ../../x/upgrade ) @@ -299,7 +298,6 @@ replace ( // server v2 integration replace ( - cosmossdk.io/api => ../../api cosmossdk.io/core/testing => ../../core/testing cosmossdk.io/indexer/postgres => ../../indexer/postgres cosmossdk.io/runtime/v2 => ../../runtime/v2 diff --git a/simapp/v2/go.sum b/simapp/v2/go.sum index 78c20177325a..b327b7f9c70e 100644 --- a/simapp/v2/go.sum +++ b/simapp/v2/go.sum @@ -192,6 +192,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -208,6 +210,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/tests/go.mod b/tests/go.mod index e2825cf4b992..f5834232cb90 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -3,7 +3,7 @@ module github.com/cosmos/cosmos-sdk/tests go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 @@ -15,7 +15,7 @@ require ( cosmossdk.io/x/feegrant v0.0.0-20230613133644-0a778132a60f cosmossdk.io/x/nft v0.0.0-20230613133644-0a778132a60f // indirect cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 - cosmossdk.io/x/tx v1.0.0-alpha.1 + cosmossdk.io/x/tx v1.0.0-alpha.2 cosmossdk.io/x/upgrade v0.0.0-20230613133644-0a778132a60f github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 github.com/cosmos/cosmos-proto v1.0.0-beta.5 @@ -249,7 +249,6 @@ require ( // SimApp on main always tests the latest extracted SDK modules importing the sdk replace ( - cosmossdk.io/api => ../api cosmossdk.io/client/v2 => ../client/v2 cosmossdk.io/collections => ../collections cosmossdk.io/core/testing => ../core/testing @@ -280,7 +279,6 @@ replace ( cosmossdk.io/x/protocolpool => ../x/protocolpool cosmossdk.io/x/slashing => ../x/slashing cosmossdk.io/x/staking => ../x/staking - cosmossdk.io/x/tx => ../x/tx cosmossdk.io/x/upgrade => ../x/upgrade ) diff --git a/tests/go.sum b/tests/go.sum index 02d8cb80dd8a..0f294ffca5cb 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -192,6 +192,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= cosmossdk.io/core v1.0.0-alpha.6/go.mod h1:3u9cWq1FAVtiiCrDPpo4LhR+9V6k/ycSG4/Y/tREWCY= cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E= @@ -206,6 +208,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/tools/benchmark/go.mod b/tools/benchmark/go.mod index dc5e5bda5937..5e5cec640d64 100644 --- a/tools/benchmark/go.mod +++ b/tools/benchmark/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/tools/benchmark go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/log v1.5.0 @@ -25,7 +25,7 @@ require ( cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -150,7 +150,6 @@ require ( ) replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../../x/bank cosmossdk.io/x/staking => ../../x/staking diff --git a/tools/benchmark/go.sum b/tools/benchmark/go.sum index 55a476ac0849..53463ab82492 100644 --- a/tools/benchmark/go.sum +++ b/tools/benchmark/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.1 h1:5w61etWMQbdCSR7uveWXCnGnD5eQ/64B2vzIhqA80yo= -cosmossdk.io/x/tx v1.0.0-alpha.1/go.mod h1:xlJjZV1wxZBTCP+ygZx9pNT/XxsfHDPf1H0VhHaUp5w= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/defaults/base/go.mod b/x/accounts/defaults/base/go.mod index feed3a590818..dece393fd520 100644 --- a/x/accounts/defaults/base/go.mod +++ b/x/accounts/defaults/base/go.mod @@ -3,12 +3,12 @@ module cosmossdk.io/x/accounts/defaults/base go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/x/accounts v0.0.0-20240913065641-0064ccbce64e - cosmossdk.io/x/tx v1.0.0-alpha.1 + cosmossdk.io/x/tx v1.0.0-alpha.2 github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/gogoproto v1.7.0 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 @@ -173,10 +173,8 @@ require ( replace github.com/cosmos/cosmos-sdk => ../../../../. replace ( - cosmossdk.io/api => ../../../../api cosmossdk.io/store => ../../../../store cosmossdk.io/x/accounts => ../../. cosmossdk.io/x/bank => ../../../bank cosmossdk.io/x/staking => ../../../staking - cosmossdk.io/x/tx => ../../../tx ) diff --git a/x/accounts/defaults/base/go.sum b/x/accounts/defaults/base/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/accounts/defaults/base/go.sum +++ b/x/accounts/defaults/base/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/defaults/lockup/go.mod b/x/accounts/defaults/lockup/go.mod index 4b19f63b71b9..0534cdef7ef6 100644 --- a/x/accounts/defaults/lockup/go.mod +++ b/x/accounts/defaults/lockup/go.mod @@ -27,7 +27,7 @@ require ( require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect - cosmossdk.io/api v0.7.6 // indirect + cosmossdk.io/api v0.8.0-rc.2 // indirect cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e // indirect cosmossdk.io/depinject v1.1.0 // indirect cosmossdk.io/errors v1.0.1 @@ -35,7 +35,7 @@ require ( cosmossdk.io/math v1.4.0 cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -154,11 +154,9 @@ require ( replace github.com/cosmos/cosmos-sdk => ../../../../. replace ( - cosmossdk.io/api => ../../../../api cosmossdk.io/store => ../../../../store cosmossdk.io/x/accounts => ../../. cosmossdk.io/x/bank => ../../../bank cosmossdk.io/x/distribution => ../../../distribution cosmossdk.io/x/staking => ../../../staking - cosmossdk.io/x/tx => ../../../tx ) diff --git a/x/accounts/defaults/lockup/go.sum b/x/accounts/defaults/lockup/go.sum index a0f7571bfdf0..53463ab82492 100644 --- a/x/accounts/defaults/lockup/go.sum +++ b/x/accounts/defaults/lockup/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/defaults/multisig/go.mod b/x/accounts/defaults/multisig/go.mod index 6d5cd7032831..4425bf78a023 100644 --- a/x/accounts/defaults/multisig/go.mod +++ b/x/accounts/defaults/multisig/go.mod @@ -18,7 +18,7 @@ require ( require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect - cosmossdk.io/api v0.7.6 // indirect + cosmossdk.io/api v0.8.0-rc.2 // indirect cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e // indirect cosmossdk.io/depinject v1.1.0 // indirect cosmossdk.io/errors v1.0.1 // indirect @@ -26,7 +26,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -173,10 +173,8 @@ require ( replace github.com/cosmos/cosmos-sdk => ../../../../. replace ( - cosmossdk.io/api => ../../../../api cosmossdk.io/store => ../../../../store cosmossdk.io/x/accounts => ../../. cosmossdk.io/x/bank => ../../../bank cosmossdk.io/x/staking => ../../../staking - cosmossdk.io/x/tx => ../../../tx ) diff --git a/x/accounts/defaults/multisig/go.sum b/x/accounts/defaults/multisig/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/accounts/defaults/multisig/go.sum +++ b/x/accounts/defaults/multisig/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 979881134832..b1752791ac31 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -3,13 +3,13 @@ module cosmossdk.io/x/accounts go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/depinject v1.1.0 cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 - cosmossdk.io/x/tx v1.0.0-alpha.1 + cosmossdk.io/x/tx v1.0.0-alpha.2 github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/gogoproto v1.7.0 github.com/spf13/cobra v1.8.1 @@ -177,9 +177,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/accounts/go.sum b/x/accounts/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/authz/go.mod b/x/authz/go.mod index 34ee6b1dc573..76b9cc775c1f 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/authz go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/errors v1.0.1 @@ -12,7 +12,7 @@ require ( cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 - cosmossdk.io/x/tx v1.0.0-alpha.1 + cosmossdk.io/x/tx v1.0.0-alpha.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/gogoproto v1.7.0 @@ -178,9 +178,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/authz/go.sum b/x/authz/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/bank/go.mod b/x/bank/go.mod index f3d760d2b467..e6ab51efabdb 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/bank go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 @@ -32,7 +32,7 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -177,8 +177,6 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/bank/go.sum b/x/bank/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index aeb6ad27f4bd..fe781e36ac2c 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/circuit go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -27,7 +27,7 @@ require ( cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -174,9 +174,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/consensus/go.mod b/x/consensus/go.mod index a2373a1457a0..2b450f223fc8 100644 --- a/x/consensus/go.mod +++ b/x/consensus/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/consensus go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -30,7 +30,7 @@ require ( cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -172,9 +172,7 @@ require ( replace github.com/cosmos/cosmos-sdk => ../../. replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/consensus/go.sum b/x/consensus/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/consensus/go.sum +++ b/x/consensus/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index df9f15966f0f..371467d7a20b 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/distribution go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -31,7 +31,7 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -174,10 +174,8 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/protocolpool => ../protocolpool cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/distribution/go.sum b/x/distribution/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/epochs/go.mod b/x/epochs/go.mod index a5c5550b6b06..81e819e6d4c5 100644 --- a/x/epochs/go.mod +++ b/x/epochs/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/epochs go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -29,7 +29,7 @@ require ( cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -177,9 +177,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/epochs/go.sum b/x/epochs/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/epochs/go.sum +++ b/x/epochs/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index 9f1d2cc5320e..277b2221a183 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/evidence go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -31,7 +31,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -174,9 +174,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 8b317e029a0c..54ea2ee9658b 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/feegrant go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -41,7 +41,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -182,12 +182,10 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/client/v2 => ../../client/v2 cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/gov => ../gov cosmossdk.io/x/protocolpool => ../protocolpool cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index 91bba53c7596..43052e4e345d 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/gov/go.mod b/x/gov/go.mod index 32370184dc70..ef42c81921f4 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/gov go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/client/v2 v2.0.0-beta.6 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 @@ -37,7 +37,7 @@ require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/schema v0.4.0 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -181,11 +181,9 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/client/v2 => ../../client/v2 cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/protocolpool => ../protocolpool cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/gov/go.sum b/x/gov/go.sum index 91bba53c7596..43052e4e345d 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/group/go.mod b/x/group/go.mod index e98a8303edf0..82c6896e6626 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/group go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/client/v2 v2.0.0-beta.6 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -40,7 +40,7 @@ require ( cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -184,7 +184,6 @@ replace github.com/cosmos/cosmos-sdk => ../../ // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/client/v2 => ../../client/v2 cosmossdk.io/store => ../../store cosmossdk.io/x/accounts => ../accounts @@ -201,5 +200,4 @@ replace ( cosmossdk.io/x/protocolpool => ../protocolpool cosmossdk.io/x/slashing => ../slashing cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/group/go.sum b/x/group/go.sum index e8a6c34456de..14d587ae37e2 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/mint/go.mod b/x/mint/go.mod index 1e45be39dcaf..401c781f143c 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/mint go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -32,7 +32,7 @@ require ( cosmossdk.io/schema v0.4.0 cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -178,11 +178,9 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/consensus => ../consensus cosmossdk.io/x/epochs => ../epochs cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/mint/go.sum b/x/mint/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/nft/go.mod b/x/nft/go.mod index 49e414d92dfc..ea3a1d4a5425 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/nft go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/errors v1.0.1 @@ -29,7 +29,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -174,9 +174,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/nft/go.sum b/x/nft/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/params/go.mod b/x/params/go.mod index 441a3bacee75..a8e428dfde3a 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/params go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/depinject v1.1.0 @@ -30,7 +30,7 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect cosmossdk.io/schema v0.4.0 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -167,7 +167,6 @@ replace github.com/cosmos/cosmos-sdk => ../.. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/distribution => ../distribution @@ -176,5 +175,4 @@ replace ( cosmossdk.io/x/protocolpool => ../protocolpool cosmossdk.io/x/slashing => ../slashing cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/params/go.sum b/x/params/go.sum index 478ae2178cbc..75ca03fbd33c 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index cd83d91dd5ec..c6fecab24c31 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/protocolpool go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -30,7 +30,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -174,9 +174,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index 7c585c7256e7..f4f508892a49 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/slashing go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -32,7 +32,7 @@ require ( cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -175,9 +175,7 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/slashing/go.sum b/x/slashing/go.sum index 95c1c2a1d400..8b9ef5de1c3d 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/staking/go.mod b/x/staking/go.mod index 86f7782d7e4a..8982c11556ca 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/staking go 1.23.2 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e @@ -31,7 +31,7 @@ require ( require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -181,8 +181,6 @@ replace github.com/cosmos/cosmos-sdk => ../../. // TODO remove post spinning out all modules replace ( - cosmossdk.io/api => ../../api cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank - cosmossdk.io/x/tx => ../tx ) diff --git a/x/staking/go.sum b/x/staking/go.sum index 2d766fa25a67..de52bdd1c15c 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -4,6 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88e buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1/go.mod h1:17Ax38yd8pg56din4ecwSDBRCSX0qLcif5Cdf8ayto4= 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= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -20,6 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/tx/CHANGELOG.md b/x/tx/CHANGELOG.md index 7120fe357497..edec82e4efcf 100644 --- a/x/tx/CHANGELOG.md +++ b/x/tx/CHANGELOG.md @@ -49,6 +49,14 @@ Since v0.13.0, x/tx follows Cosmos SDK semver: https://github.com/cosmos/cosmos- * [#21825](https://github.com/cosmos/cosmos-sdk/pull/21825) Fix decimal encoding and field ordering in Amino JSON encoder. * [#21850](https://github.com/cosmos/cosmos-sdk/pull/21850) Support bytes field as signer. +## [v0.13.6](https://github.com/cosmos/cosmos-sdk/releases/tag/x/tx/v0.13.6) - 2024-12-12 + +### Bug Fixes + +* [#22161](https://github.com/cosmos/cosmos-sdk/pull/22161) Add special case for string represented decimals. +* [#21825](https://github.com/cosmos/cosmos-sdk/pull/21825) Fix decimal encoding and field ordering in Amino JSON encoder. +* [#21782](https://github.com/cosmos/cosmos-sdk/pull/21782) Fix JSON attribute sort order on messages with oneof fields. + ## [v0.13.5](https://github.com/cosmos/cosmos-sdk/releases/tag/x/tx/v0.13.5) - 2024-09-18 ### Improvements diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index 806ee5187027..ffa3208ba68c 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -3,7 +3,7 @@ module cosmossdk.io/x/upgrade go 1.23.3 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.8.0-rc.2 cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/depinject v1.1.0 @@ -46,7 +46,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.2 // 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 @@ -206,11 +206,9 @@ require ( replace github.com/cosmos/cosmos-sdk => ../../. replace ( - cosmossdk.io/api => ../../api cosmossdk.io/client/v2 => ../../client/v2 cosmossdk.io/store => ../../store cosmossdk.io/x/bank => ../bank cosmossdk.io/x/gov => ../gov cosmossdk.io/x/staking => ../staking - cosmossdk.io/x/tx => ../tx ) diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index e74582d9001c..be9f6719aded 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -192,6 +192,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cosmossdk.io/api v0.8.0-rc.2 h1:7DQjVnYz7sTy47bZMzahfOANbhxLmPtgQvvru9kA2R0= +cosmossdk.io/api v0.8.0-rc.2/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b h1:MgU4EDOo/pXgepHCUFQFnIfUCxk/JO0AJGDTUQhhEhg= cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b/go.mod h1:uf12i1yKvzEIHt2ok7poNqFDQTb71O00RQLitSynmrg= cosmossdk.io/core v1.0.0-alpha.6 h1:5ukC4JcQKmemLQXcAgu/QoOvJI50hpBkIIg4ZT2EN8E= @@ -210,6 +212,8 @@ cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= +cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= +cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= From 957e24171608d043dd648c5e7780e7f8692f0fe9 Mon Sep 17 00:00:00 2001 From: son trinh Date: Fri, 13 Dec 2024 15:13:18 +0700 Subject: [PATCH 53/62] refactor(tests/integrations): Port gov integration tests with server v2 setup (#22850) --- runtime/v2/module.go | 6 +- tests/go.mod | 2 +- tests/integration/gov/common_test.go | 126 ----------- tests/integration/gov/keeper/keeper_test.go | 180 --------------- tests/integration/gov/module_test.go | 43 ---- tests/integration/v2/app.go | 8 +- tests/integration/v2/genesis.go | 6 + tests/integration/{ => v2}/gov/abci_test.go | 174 +++++++-------- tests/integration/v2/gov/common_test.go | 207 ++++++++++++++++++ .../integration/{ => v2}/gov/genesis_test.go | 141 +++--------- .../{ => v2}/gov/keeper/common_test.go | 4 +- .../integration/v2/gov/keeper/fixture_test.go | 109 +++++++++ .../gov/keeper/grpc_test.go} | 7 +- .../{ => v2}/gov/keeper/tally_test.go | 3 +- tests/integration/v2/gov/module_test.go | 23 ++ tests/integration/v2/services.go | 93 +++++++- testutil/sims/address_helpers.go | 2 +- 17 files changed, 573 insertions(+), 561 deletions(-) delete mode 100644 tests/integration/gov/common_test.go delete mode 100644 tests/integration/gov/keeper/keeper_test.go delete mode 100644 tests/integration/gov/module_test.go rename tests/integration/{ => v2}/gov/abci_test.go (81%) create mode 100644 tests/integration/v2/gov/common_test.go rename tests/integration/{ => v2}/gov/genesis_test.go (54%) rename tests/integration/{ => v2}/gov/keeper/common_test.go (96%) create mode 100644 tests/integration/v2/gov/keeper/fixture_test.go rename tests/integration/{gov/keeper/grpc_query_test.go => v2/gov/keeper/grpc_test.go} (92%) rename tests/integration/{ => v2}/gov/keeper/tally_test.go (99%) create mode 100644 tests/integration/v2/gov/module_test.go diff --git a/runtime/v2/module.go b/runtime/v2/module.go index 8ef338f52c2a..fcbb671bcecb 100644 --- a/runtime/v2/module.go +++ b/runtime/v2/module.go @@ -18,6 +18,7 @@ import ( "cosmossdk.io/core/branch" "cosmossdk.io/core/comet" "cosmossdk.io/core/event" + "cosmossdk.io/core/gas" "cosmossdk.io/core/header" "cosmossdk.io/core/registry" "cosmossdk.io/core/router" @@ -214,6 +215,7 @@ func ProvideEnvironment( kvService store.KVStoreService, memKvService store.MemoryStoreService, headerService header.Service, + gasService gas.Service, eventService event.Service, branchService branch.Service, routerBuilder RouterServiceBuilder, @@ -222,7 +224,7 @@ func ProvideEnvironment( Logger: logger, BranchService: branchService, EventService: eventService, - GasService: stf.NewGasMeterService(), + GasService: gasService, HeaderService: headerService, QueryRouterService: routerBuilder.BuildQueryRouter(), MsgRouterService: routerBuilder.BuildMsgRouter([]byte(key.Name())), @@ -296,6 +298,7 @@ func DefaultServiceBindings() depinject.Config { eventService = services.NewGenesisEventService(stf.NewEventService()) storeBuilder = root.NewBuilder() branchService = stf.BranchService{} + gasService = stf.NewGasMeterService() ) return depinject.Supply( kvServiceFactory, @@ -305,5 +308,6 @@ func DefaultServiceBindings() depinject.Config { eventService, storeBuilder, branchService, + gasService, ) } diff --git a/tests/go.mod b/tests/go.mod index f5834232cb90..44a6bbc9e160 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -51,6 +51,7 @@ require ( cosmossdk.io/x/staking v0.0.0-20240226161501-23359a0b6d91 github.com/cometbft/cometbft/api v1.0.0-rc2 github.com/cosmos/cosmos-db v1.1.0 + github.com/gogo/protobuf v1.3.2 // indirect github.com/google/go-cmp v0.6.0 github.com/google/gofuzz v1.2.0 github.com/jhump/protoreflect v1.17.0 @@ -126,7 +127,6 @@ require ( github.com/go-logr/stdr v1.2.2 // 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-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect diff --git a/tests/integration/gov/common_test.go b/tests/integration/gov/common_test.go deleted file mode 100644 index b2fe831877ee..000000000000 --- a/tests/integration/gov/common_test.go +++ /dev/null @@ -1,126 +0,0 @@ -package gov_test - -import ( - "bytes" - "log" - "sort" - "testing" - - "github.com/stretchr/testify/require" - "gotest.tools/v3/assert" - - "cosmossdk.io/depinject" - sdklog "cosmossdk.io/log" - "cosmossdk.io/math" - _ "cosmossdk.io/x/accounts" - _ "cosmossdk.io/x/bank" - _ "cosmossdk.io/x/consensus" - "cosmossdk.io/x/gov/types" - v1 "cosmossdk.io/x/gov/types/v1" - "cosmossdk.io/x/gov/types/v1beta1" - _ "cosmossdk.io/x/protocolpool" - _ "cosmossdk.io/x/staking" - stakingtypes "cosmossdk.io/x/staking/types" - - "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - "github.com/cosmos/cosmos-sdk/testutil/configurator" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - sdk "github.com/cosmos/cosmos-sdk/types" - _ "github.com/cosmos/cosmos-sdk/x/auth" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -var ( - valTokens = sdk.TokensFromConsensusPower(42, sdk.DefaultPowerReduction) - TestProposal = v1beta1.NewTextProposal("Test", "description") - TestDescription = stakingtypes.NewDescription("T", "E", "S", "T", "Z", &stakingtypes.Metadata{}) - TestCommissionRates = stakingtypes.NewCommissionRates(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec()) -) - -// mkTestLegacyContent creates a MsgExecLegacyContent for testing purposes. -func mkTestLegacyContent(t *testing.T) *v1.MsgExecLegacyContent { - t.Helper() - msgContent, err := v1.NewLegacyContent(TestProposal, authtypes.NewModuleAddress(types.ModuleName).String()) - assert.NilError(t, err) - - return msgContent -} - -var pubkeys = []cryptotypes.PubKey{ - ed25519.GenPrivKey().PubKey(), - ed25519.GenPrivKey().PubKey(), - ed25519.GenPrivKey().PubKey(), -} - -// SortAddresses - Sorts Addresses -func SortAddresses(addrs []sdk.AccAddress) { - byteAddrs := make([][]byte, len(addrs)) - - for i, addr := range addrs { - byteAddrs[i] = addr.Bytes() - } - - SortByteArrays(byteAddrs) - - for i, byteAddr := range byteAddrs { - addrs[i] = byteAddr - } -} - -// implement `Interface` in sort package. -type sortByteArrays [][]byte - -func (b sortByteArrays) Len() int { - return len(b) -} - -func (b sortByteArrays) Less(i, j int) bool { - // bytes package already implements Comparable for []byte. - switch bytes.Compare(b[i], b[j]) { - case -1: - return true - case 0, 1: - return false - default: - log.Panic("not fail-able with `bytes.Comparable` bounded [-1, 1].") - return false - } -} - -func (b sortByteArrays) Swap(i, j int) { - b[j], b[i] = b[i], b[j] -} - -// SortByteArrays - sorts the provided byte array -func SortByteArrays(src [][]byte) [][]byte { - sorted := sortByteArrays(src) - sort.Sort(sorted) - return sorted -} - -func createTestSuite(t *testing.T) suite { - t.Helper() - res := suite{} - - app, err := simtestutil.SetupWithConfiguration( - depinject.Configs( - configurator.NewAppConfig( - configurator.AccountsModule(), - configurator.AuthModule(), - configurator.StakingModule(), - configurator.BankModule(), - configurator.GovModule(), - configurator.ConsensusModule(), - configurator.ProtocolPoolModule(), - ), - depinject.Supply(sdklog.NewNopLogger()), - ), - simtestutil.DefaultStartUpConfig(), - &res.AccountKeeper, &res.BankKeeper, &res.GovKeeper, &res.StakingKeeper, - ) - require.NoError(t, err) - - res.app = app - return res -} diff --git a/tests/integration/gov/keeper/keeper_test.go b/tests/integration/gov/keeper/keeper_test.go deleted file mode 100644 index c40e847cc632..000000000000 --- a/tests/integration/gov/keeper/keeper_test.go +++ /dev/null @@ -1,180 +0,0 @@ -package keeper_test - -import ( - "context" - "testing" - - "go.uber.org/mock/gomock" - - "cosmossdk.io/core/appmodule" - "cosmossdk.io/log" - storetypes "cosmossdk.io/store/types" - "cosmossdk.io/x/bank" - bankkeeper "cosmossdk.io/x/bank/keeper" - banktypes "cosmossdk.io/x/bank/types" - "cosmossdk.io/x/consensus" - consensusparamkeeper "cosmossdk.io/x/consensus/keeper" - consensusparamtypes "cosmossdk.io/x/consensus/types" - "cosmossdk.io/x/gov" - "cosmossdk.io/x/gov/keeper" - "cosmossdk.io/x/gov/types" - v1 "cosmossdk.io/x/gov/types/v1" - "cosmossdk.io/x/gov/types/v1beta1" - minttypes "cosmossdk.io/x/mint/types" - poolkeeper "cosmossdk.io/x/protocolpool/keeper" - pooltypes "cosmossdk.io/x/protocolpool/types" - "cosmossdk.io/x/staking" - stakingkeeper "cosmossdk.io/x/staking/keeper" - stakingtypes "cosmossdk.io/x/staking/types" - - "github.com/cosmos/cosmos-sdk/baseapp" - addresscodec "github.com/cosmos/cosmos-sdk/codec/address" - codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil" - "github.com/cosmos/cosmos-sdk/runtime" - "github.com/cosmos/cosmos-sdk/testutil/integration" - sdk "github.com/cosmos/cosmos-sdk/types" - moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" - "github.com/cosmos/cosmos-sdk/x/auth" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" - authtestutil "github.com/cosmos/cosmos-sdk/x/auth/testutil" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -type fixture struct { - ctx sdk.Context - - queryClient v1.QueryClient - legacyQueryClient v1beta1.QueryClient - - accountKeeper authkeeper.AccountKeeper - bankKeeper bankkeeper.Keeper - stakingKeeper *stakingkeeper.Keeper - govKeeper *keeper.Keeper -} - -func initFixture(tb testing.TB) *fixture { - tb.Helper() - keys := storetypes.NewKVStoreKeys( - authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, pooltypes.StoreKey, types.StoreKey, consensusparamtypes.StoreKey, - ) - encodingCfg := moduletestutil.MakeTestEncodingConfig(codectestutil.CodecOptions{}, auth.AppModule{}, bank.AppModule{}, gov.AppModule{}) - cdc := encodingCfg.Codec - - logger := log.NewTestLogger(tb) - authority := authtypes.NewModuleAddress(types.ModuleName) - - maccPerms := map[string][]string{ - pooltypes.ModuleName: {}, - pooltypes.StreamAccount: {}, - pooltypes.ProtocolPoolDistrAccount: {}, - minttypes.ModuleName: {authtypes.Minter}, - stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, - stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - types.ModuleName: {authtypes.Burner}, - } - - // gomock initializations - ctrl := gomock.NewController(tb) - acctsModKeeper := authtestutil.NewMockAccountsModKeeper(ctrl) - accNum := uint64(0) - acctsModKeeper.EXPECT().NextAccountNumber(gomock.Any()).AnyTimes().DoAndReturn(func(ctx context.Context) (uint64, error) { - currentNum := accNum - accNum++ - return currentNum, nil - }) - - accountKeeper := authkeeper.NewAccountKeeper( - runtime.NewEnvironment(runtime.NewKVStoreService(keys[authtypes.StoreKey]), log.NewNopLogger()), - cdc, - authtypes.ProtoBaseAccount, - acctsModKeeper, - maccPerms, - addresscodec.NewBech32Codec(sdk.Bech32MainPrefix), - sdk.Bech32MainPrefix, - authority.String(), - ) - - blockedAddresses := map[string]bool{ - accountKeeper.GetAuthority(): false, - } - bankKeeper := bankkeeper.NewBaseKeeper( - runtime.NewEnvironment(runtime.NewKVStoreService(keys[banktypes.StoreKey]), log.NewNopLogger()), - cdc, - accountKeeper, - blockedAddresses, - authority.String(), - ) - - router := baseapp.NewMsgServiceRouter() - queryRouter := baseapp.NewGRPCQueryRouter() - consensusParamsKeeper := consensusparamkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[consensusparamtypes.StoreKey]), log.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(router)), authtypes.NewModuleAddress("gov").String()) - - stakingKeeper := stakingkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, consensusParamsKeeper, authority.String(), addresscodec.NewBech32Codec(sdk.Bech32PrefixValAddr), addresscodec.NewBech32Codec(sdk.Bech32PrefixConsAddr), runtime.NewContextAwareCometInfoService()) - - poolKeeper := poolkeeper.NewKeeper(cdc, runtime.NewEnvironment(runtime.NewKVStoreService(keys[pooltypes.StoreKey]), log.NewNopLogger()), accountKeeper, bankKeeper, authority.String()) - - // Create MsgServiceRouter, but don't populate it before creating the gov - // keeper. - router.SetInterfaceRegistry(cdc.InterfaceRegistry()) - queryRouter.SetInterfaceRegistry(cdc.InterfaceRegistry()) - - govKeeper := keeper.NewKeeper( - cdc, - runtime.NewEnvironment(runtime.NewKVStoreService(keys[types.StoreKey]), log.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(router)), - accountKeeper, - bankKeeper, - stakingKeeper, - poolKeeper, - keeper.DefaultConfig(), - authority.String(), - ) - govRouter := v1beta1.NewRouter() - govRouter.AddRoute(types.RouterKey, v1beta1.ProposalHandler) - govKeeper.SetLegacyRouter(govRouter) - - authModule := auth.NewAppModule(cdc, accountKeeper, acctsModKeeper, authsims.RandomGenesisAccounts, nil) - bankModule := bank.NewAppModule(cdc, bankKeeper, accountKeeper) - stakingModule := staking.NewAppModule(cdc, stakingKeeper) - govModule := gov.NewAppModule(cdc, govKeeper, accountKeeper, bankKeeper, poolKeeper) - consensusModule := consensus.NewAppModule(cdc, consensusParamsKeeper) - - integrationApp := integration.NewIntegrationApp(logger, keys, cdc, - encodingCfg.InterfaceRegistry.SigningContext().AddressCodec(), - encodingCfg.InterfaceRegistry.SigningContext().ValidatorAddressCodec(), - map[string]appmodule.AppModule{ - authtypes.ModuleName: authModule, - banktypes.ModuleName: bankModule, - stakingtypes.ModuleName: stakingModule, - types.ModuleName: govModule, - consensusparamtypes.ModuleName: consensusModule, - }, - baseapp.NewMsgServiceRouter(), - baseapp.NewGRPCQueryRouter(), - ) - - sdkCtx := sdk.UnwrapSDKContext(integrationApp.Context()) - - msgSrvr := keeper.NewMsgServerImpl(govKeeper) - legacyMsgSrvr := keeper.NewLegacyMsgServerImpl(authority.String(), msgSrvr) - - // Register MsgServer and QueryServer - v1.RegisterMsgServer(router, msgSrvr) - v1beta1.RegisterMsgServer(router, legacyMsgSrvr) - - v1.RegisterQueryServer(integrationApp.QueryHelper(), keeper.NewQueryServer(govKeeper)) - v1beta1.RegisterQueryServer(integrationApp.QueryHelper(), keeper.NewLegacyQueryServer(govKeeper)) - - queryClient := v1.NewQueryClient(integrationApp.QueryHelper()) - legacyQueryClient := v1beta1.NewQueryClient(integrationApp.QueryHelper()) - - return &fixture{ - ctx: sdkCtx, - queryClient: queryClient, - legacyQueryClient: legacyQueryClient, - accountKeeper: accountKeeper, - bankKeeper: bankKeeper, - stakingKeeper: stakingKeeper, - govKeeper: govKeeper, - } -} diff --git a/tests/integration/gov/module_test.go b/tests/integration/gov/module_test.go deleted file mode 100644 index 826f6a7d68d6..000000000000 --- a/tests/integration/gov/module_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package gov_test - -import ( - "testing" - - "gotest.tools/v3/assert" - - "cosmossdk.io/depinject" - "cosmossdk.io/log" - _ "cosmossdk.io/x/accounts" - "cosmossdk.io/x/gov/types" - _ "cosmossdk.io/x/mint" - _ "cosmossdk.io/x/protocolpool" - - "github.com/cosmos/cosmos-sdk/testutil/configurator" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { - var accountKeeper authkeeper.AccountKeeper - app, err := simtestutil.SetupAtGenesis( - depinject.Configs( - configurator.NewAppConfig( - configurator.AccountsModule(), - configurator.AuthModule(), - configurator.StakingModule(), - configurator.BankModule(), - configurator.GovModule(), - configurator.ConsensusModule(), - configurator.ProtocolPoolModule(), - ), - depinject.Supply(log.NewNopLogger()), - ), - &accountKeeper, - ) - assert.NilError(t, err) - - ctx := app.BaseApp.NewContext(false) - acc := accountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) - assert.Assert(t, acc != nil) -} diff --git a/tests/integration/v2/app.go b/tests/integration/v2/app.go index 72a4873cba6b..abb55a748082 100644 --- a/tests/integration/v2/app.go +++ b/tests/integration/v2/app.go @@ -17,6 +17,7 @@ import ( corebranch "cosmossdk.io/core/branch" "cosmossdk.io/core/comet" corecontext "cosmossdk.io/core/context" + "cosmossdk.io/core/gas" "cosmossdk.io/core/header" "cosmossdk.io/core/server" corestore "cosmossdk.io/core/store" @@ -99,6 +100,8 @@ type StartupConfig struct { RouterServiceBuilder runtime.RouterServiceBuilder // HeaderService defines the custom header service to be used in the app. HeaderService header.Service + + GasService gas.Service } func DefaultStartUpConfig(t *testing.T) StartupConfig { @@ -129,6 +132,7 @@ func DefaultStartUpConfig(t *testing.T) StartupConfig { stf.NewMsgRouterService, stf.NewQueryRouterService(), ), HeaderService: services.NewGenesisHeaderService(stf.HeaderService{}), + GasService: stf.NewGasMeterService(), } } @@ -193,9 +197,11 @@ func NewApp( startupConfig.BranchService, startupConfig.RouterServiceBuilder, startupConfig.HeaderService, + startupConfig.GasService, ), depinject.Invoke( std.RegisterInterfaces, + std.RegisterLegacyAminoCodec, ), ), append(extraOutputs, &appBuilder, &cdc, &txConfigOptions, &txConfig, &storeBuilder)...); err != nil { @@ -336,7 +342,7 @@ func (a *App) Deliver( require.NoError(t, err) a.lastHeight++ - // update block height if integration context is present + // update block height and block time if integration context is present iCtx, ok := ctx.Value(contextKey).(*integrationContext) if ok { iCtx.header.Height = int64(a.lastHeight) diff --git a/tests/integration/v2/genesis.go b/tests/integration/v2/genesis.go index d101ce3e8672..13d37be9b770 100644 --- a/tests/integration/v2/genesis.go +++ b/tests/integration/v2/genesis.go @@ -147,6 +147,12 @@ type genesisTxCodec struct { tx.ConfigOptions } +func NewGenesisTxCodec(txConfigOptions tx.ConfigOptions) *genesisTxCodec { + return &genesisTxCodec{ + txConfigOptions, + } +} + // Decode implements transaction.Codec. func (t *genesisTxCodec) Decode(bz []byte) (stateMachineTx, error) { var out stateMachineTx diff --git a/tests/integration/gov/abci_test.go b/tests/integration/v2/gov/abci_test.go similarity index 81% rename from tests/integration/gov/abci_test.go rename to tests/integration/v2/gov/abci_test.go index ff1664ed4f0d..24d7c7d497ab 100644 --- a/tests/integration/gov/abci_test.go +++ b/tests/integration/v2/gov/abci_test.go @@ -1,6 +1,7 @@ -package gov_test +package gov import ( + "context" "testing" "time" @@ -16,20 +17,21 @@ import ( stakingtypes "cosmossdk.io/x/staking/types" addresscodec "github.com/cosmos/cosmos-sdk/codec/address" + "github.com/cosmos/cosmos-sdk/tests/integration/v2" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) func TestUnregisteredProposal_InactiveProposalFails(t *testing.T) { - suite := createTestSuite(t) - ctx := suite.app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens) - addr0Str, err := suite.AccountKeeper.AddressCodec().BytesToString(addrs[0]) + addr0Str, err := suite.AuthKeeper.AddressCodec().BytesToString(addrs[0]) require.NoError(t, err) // manually set proposal in store - startTime, endTime := time.Now().Add(-4*time.Hour), ctx.BlockHeader().Time + startTime, endTime := time.Now().Add(-4*time.Hour), time.Now() proposal, err := v1.NewProposal([]sdk.Msg{ &v1.Proposal{}, // invalid proposal message }, 1, startTime, startTime, "", "Unsupported proposal", "Unsupported proposal", addr0Str, v1.ProposalType_PROPOSAL_TYPE_STANDARD) @@ -50,13 +52,14 @@ func TestUnregisteredProposal_InactiveProposalFails(t *testing.T) { } func TestUnregisteredProposal_ActiveProposalFails(t *testing.T) { - suite := createTestSuite(t) - ctx := suite.app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens) - addr0Str, err := suite.AccountKeeper.AddressCodec().BytesToString(addrs[0]) + addr0Str, err := suite.AuthKeeper.AddressCodec().BytesToString(addrs[0]) require.NoError(t, err) // manually set proposal in store - startTime, endTime := time.Now().Add(-4*time.Hour), ctx.BlockHeader().Time + header := integration.HeaderInfoFromContext(ctx) + startTime, endTime := time.Now().Add(-4*time.Hour), header.Time proposal, err := v1.NewProposal([]sdk.Msg{ &v1.Proposal{}, // invalid proposal message }, 1, startTime, startTime, "", "Unsupported proposal", "Unsupported proposal", addr0Str, v1.ProposalType_PROPOSAL_TYPE_STANDARD) @@ -80,9 +83,8 @@ func TestUnregisteredProposal_ActiveProposalFails(t *testing.T) { } func TestTickExpiredDepositPeriod(t *testing.T) { - suite := createTestSuite(t) - app := suite.app - ctx := app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens) govMsgSvr := keeper.NewMsgServerImpl(suite.GovKeeper) @@ -102,23 +104,22 @@ func TestTickExpiredDepositPeriod(t *testing.T) { require.NoError(t, err) require.NotNil(t, res) - newHeader := ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(time.Duration(1) * time.Second) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader := integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(time.Duration(1) * time.Second) + ctx = integration.SetHeaderInfo(ctx, newHeader) params, _ := suite.GovKeeper.Params.Get(ctx) - newHeader = ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(*params.MaxDepositPeriod) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader = integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(*params.MaxDepositPeriod) + ctx = integration.SetHeaderInfo(ctx, newHeader) err = suite.GovKeeper.EndBlocker(ctx) require.NoError(t, err) } func TestTickMultipleExpiredDepositPeriod(t *testing.T) { - suite := createTestSuite(t) - app := suite.app - ctx := app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens) govMsgSvr := keeper.NewMsgServerImpl(suite.GovKeeper) @@ -137,9 +138,9 @@ func TestTickMultipleExpiredDepositPeriod(t *testing.T) { require.NoError(t, err) require.NotNil(t, res) - newHeader := ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(time.Duration(2) * time.Second) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader := integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(time.Duration(2) * time.Second) + ctx = integration.SetHeaderInfo(ctx, newHeader) newProposalMsg2, err := v1.NewMsgSubmitProposal( []sdk.Msg{mkTestLegacyContent(t)}, @@ -156,23 +157,22 @@ func TestTickMultipleExpiredDepositPeriod(t *testing.T) { require.NoError(t, err) require.NotNil(t, res) - newHeader = ctx.HeaderInfo() + newHeader = integration.HeaderInfoFromContext(ctx) params, _ := suite.GovKeeper.Params.Get(ctx) - newHeader.Time = ctx.HeaderInfo().Time.Add(*params.MaxDepositPeriod).Add(time.Duration(-1) * time.Second) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader.Time = newHeader.Time.Add(*params.MaxDepositPeriod).Add(time.Duration(-1) * time.Second) + ctx = integration.SetHeaderInfo(ctx, newHeader) require.NoError(t, suite.GovKeeper.EndBlocker(ctx)) - newHeader = ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(time.Duration(5) * time.Second) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader = integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(time.Duration(5) * time.Second) + ctx = integration.SetHeaderInfo(ctx, newHeader) require.NoError(t, suite.GovKeeper.EndBlocker(ctx)) } func TestTickPassedDepositPeriod(t *testing.T) { - suite := createTestSuite(t) - app := suite.app - ctx := app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens) govMsgSvr := keeper.NewMsgServerImpl(suite.GovKeeper) @@ -193,11 +193,11 @@ func TestTickPassedDepositPeriod(t *testing.T) { proposalID := res.ProposalId - newHeader := ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(time.Duration(1) * time.Second) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader := integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(time.Duration(1) * time.Second) + ctx = integration.SetHeaderInfo(ctx, newHeader) - addr1Str, err := suite.AccountKeeper.AddressCodec().BytesToString(addrs[1]) + addr1Str, err := suite.AuthKeeper.AddressCodec().BytesToString(addrs[1]) require.NoError(t, err) newDepositMsg := v1.NewMsgDeposit(addr1Str, proposalID, sdk.Coins{sdk.NewInt64Coin(sdk.DefaultBondDenom, 100000)}) @@ -207,9 +207,8 @@ func TestTickPassedDepositPeriod(t *testing.T) { } func TestProposalDepositRefundFailEndBlocker(t *testing.T) { - suite := createTestSuite(t) - app := suite.app - ctx := app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens) govMsgSvr := keeper.NewMsgServerImpl(suite.GovKeeper) @@ -246,15 +245,15 @@ func TestProposalDepositRefundFailEndBlocker(t *testing.T) { require.NoError(t, err) // fast forward to the end of the voting period - newHeader := ctx.HeaderInfo() + newHeader := integration.HeaderInfoFromContext(ctx) newHeader.Time = proposal.VotingEndTime.Add(time.Duration(100) * time.Second) - ctx = ctx.WithHeaderInfo(newHeader) + ctx = integration.SetHeaderInfo(ctx, newHeader) err = suite.GovKeeper.EndBlocker(ctx) require.NoError(t, err) // no error, means does not halt the chain - events := ctx.EventManager().Events() - attr, ok := events.GetAttributes(types.AttributeKeyProposalDepositError) + events := integration.EventsFromContext(ctx) + attr, ok := integration.GetAttributes(events, types.AttributeKeyProposalDepositError) require.True(t, ok) require.Contains(t, attr[0].Value, "failed to refund or burn deposits") } @@ -275,9 +274,8 @@ func TestTickPassedVotingPeriod(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { - suite := createTestSuite(t) - app := suite.app - ctx := app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx depositMultiplier := getDepositMultiplier(tc.proposalType) addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens.Mul(math.NewInt(depositMultiplier))) @@ -294,11 +292,11 @@ func TestTickPassedVotingPeriod(t *testing.T) { proposalID := res.ProposalId - newHeader := ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(time.Duration(1) * time.Second) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader := integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(time.Duration(1) * time.Second) + ctx = integration.SetHeaderInfo(ctx, newHeader) - addr1Str, err := suite.AccountKeeper.AddressCodec().BytesToString(addrs[1]) + addr1Str, err := suite.AuthKeeper.AddressCodec().BytesToString(addrs[1]) require.NoError(t, err) newDepositMsg := v1.NewMsgDeposit(addr1Str, proposalID, proposalCoins) @@ -312,9 +310,9 @@ func TestTickPassedVotingPeriod(t *testing.T) { votingPeriod = params.ExpeditedVotingPeriod } - newHeader = ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(*params.MaxDepositPeriod).Add(*votingPeriod) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader = integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(*params.MaxDepositPeriod).Add(*votingPeriod) + ctx = integration.SetHeaderInfo(ctx, newHeader) proposal, err := suite.GovKeeper.Proposals.Get(ctx, res.ProposalId) require.NoError(t, err) @@ -354,9 +352,8 @@ func TestProposalPassedEndblocker(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { - suite := createTestSuite(t) - app := suite.app - ctx := app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx depositMultiplier := getDepositMultiplier(tc.proposalType) addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 10, valTokens.Mul(math.NewInt(depositMultiplier))) @@ -366,8 +363,8 @@ func TestProposalPassedEndblocker(t *testing.T) { stakingMsgSvr := stakingkeeper.NewMsgServerImpl(suite.StakingKeeper) valAddr := sdk.ValAddress(addrs[0]) proposer := addrs[0] - acc := suite.AccountKeeper.NewAccountWithAddress(ctx, addrs[0]) - suite.AccountKeeper.SetAccount(ctx, acc) + acc := suite.AuthKeeper.NewAccountWithAddress(ctx, addrs[0]) + suite.AuthKeeper.SetAccount(ctx, acc) createValidators(t, stakingMsgSvr, ctx, []sdk.ValAddress{valAddr}, []int64{10}) _, err := suite.StakingKeeper.EndBlocker(ctx) @@ -380,7 +377,7 @@ func TestProposalPassedEndblocker(t *testing.T) { require.NoError(t, err) proposalCoins := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, suite.StakingKeeper.TokensFromConsensusPower(ctx, 10*depositMultiplier))} - addr0Str, err := suite.AccountKeeper.AddressCodec().BytesToString(addrs[0]) + addr0Str, err := suite.AuthKeeper.AddressCodec().BytesToString(addrs[0]) require.NoError(t, err) newDepositMsg := v1.NewMsgDeposit(addr0Str, proposal.Id, proposalCoins) @@ -398,10 +395,10 @@ func TestProposalPassedEndblocker(t *testing.T) { err = suite.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "") require.NoError(t, err) - newHeader := ctx.HeaderInfo() + newHeader := integration.HeaderInfoFromContext(ctx) params, _ := suite.GovKeeper.Params.Get(ctx) - newHeader.Time = ctx.HeaderInfo().Time.Add(*params.MaxDepositPeriod).Add(*params.VotingPeriod) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader.Time = newHeader.Time.Add(*params.MaxDepositPeriod).Add(*params.VotingPeriod) + ctx = integration.SetHeaderInfo(ctx, newHeader) err = suite.GovKeeper.EndBlocker(ctx) require.NoError(t, err) @@ -413,9 +410,8 @@ func TestProposalPassedEndblocker(t *testing.T) { } func TestEndBlockerProposalHandlerFailed(t *testing.T) { - suite := createTestSuite(t) - app := suite.app - ctx := app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 1, valTokens) SortAddresses(addrs) @@ -431,8 +427,8 @@ func TestEndBlockerProposalHandlerFailed(t *testing.T) { toAddrStr, err := ac.BytesToString(addrs[0]) require.NoError(t, err) - acc := suite.AccountKeeper.NewAccountWithAddress(ctx, addrs[0]) - suite.AccountKeeper.SetAccount(ctx, acc) + acc := suite.AuthKeeper.NewAccountWithAddress(ctx, addrs[0]) + suite.AuthKeeper.SetAccount(ctx, acc) createValidators(t, stakingMsgSvr, ctx, []sdk.ValAddress{valAddr}, []int64{10}) _, err = suite.StakingKeeper.EndBlocker(ctx) @@ -442,7 +438,7 @@ func TestEndBlockerProposalHandlerFailed(t *testing.T) { require.NoError(t, err) proposalCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, suite.StakingKeeper.TokensFromConsensusPower(ctx, 10))) - addr0Str, err := suite.AccountKeeper.AddressCodec().BytesToString(addrs[0]) + addr0Str, err := suite.AuthKeeper.AddressCodec().BytesToString(addrs[0]) require.NoError(t, err) newDepositMsg := v1.NewMsgDeposit(addr0Str, proposal.Id, proposalCoins) @@ -455,16 +451,16 @@ func TestEndBlockerProposalHandlerFailed(t *testing.T) { require.NoError(t, err) params, _ := suite.GovKeeper.Params.Get(ctx) - newHeader := ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(*params.MaxDepositPeriod).Add(*params.VotingPeriod) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader := integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(*params.MaxDepositPeriod).Add(*params.VotingPeriod) + ctx = integration.SetHeaderInfo(ctx, newHeader) // validate that the proposal fails/has been rejected err = suite.GovKeeper.EndBlocker(ctx) require.NoError(t, err) // check proposal events - events := ctx.EventManager().Events() - attr, eventOk := events.GetAttributes(types.AttributeKeyProposalLog) + events := integration.EventsFromContext(ctx) + attr, eventOk := integration.GetAttributes(events, types.AttributeKeyProposalLog) require.True(t, eventOk) require.Contains(t, attr[0].Value, "failed on execution") @@ -499,9 +495,8 @@ func TestExpeditedProposal_PassAndConversionToRegular(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { - suite := createTestSuite(t) - app := suite.app - ctx := app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx depositMultiplier := getDepositMultiplier(v1.ProposalType_PROPOSAL_TYPE_EXPEDITED) addrs := simtestutil.AddTestAddrs(suite.BankKeeper, suite.StakingKeeper, ctx, 3, valTokens.Mul(math.NewInt(depositMultiplier))) params, err := suite.GovKeeper.Params.Get(ctx) @@ -514,8 +509,8 @@ func TestExpeditedProposal_PassAndConversionToRegular(t *testing.T) { valAddr := sdk.ValAddress(addrs[0]) proposer := addrs[0] - acc := suite.AccountKeeper.NewAccountWithAddress(ctx, addrs[0]) - suite.AccountKeeper.SetAccount(ctx, acc) + acc := suite.AuthKeeper.NewAccountWithAddress(ctx, addrs[0]) + suite.AuthKeeper.SetAccount(ctx, acc) // Create a validator so that able to vote on proposal. createValidators(t, stakingMsgSvr, ctx, []sdk.ValAddress{valAddr}, []int64{10}) _, err = suite.StakingKeeper.EndBlocker(ctx) @@ -538,11 +533,11 @@ func TestExpeditedProposal_PassAndConversionToRegular(t *testing.T) { proposalID := res.ProposalId - newHeader := ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(time.Duration(1) * time.Second) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader := integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(time.Duration(1) * time.Second) + ctx = integration.SetHeaderInfo(ctx, newHeader) - addr1Str, err := suite.AccountKeeper.AddressCodec().BytesToString(addrs[1]) + addr1Str, err := suite.AuthKeeper.AddressCodec().BytesToString(addrs[1]) require.NoError(t, err) newDepositMsg := v1.NewMsgDeposit(addr1Str, proposalID, proposalCoins) @@ -550,9 +545,9 @@ func TestExpeditedProposal_PassAndConversionToRegular(t *testing.T) { require.NoError(t, err) require.NotNil(t, res1) - newHeader = ctx.HeaderInfo() - newHeader.Time = ctx.HeaderInfo().Time.Add(*params.MaxDepositPeriod).Add(*params.ExpeditedVotingPeriod) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader = integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(*params.MaxDepositPeriod).Add(*params.ExpeditedVotingPeriod) + ctx = integration.SetHeaderInfo(ctx, newHeader) proposal, err := suite.GovKeeper.Proposals.Get(ctx, res.ProposalId) require.Nil(t, err) @@ -604,8 +599,9 @@ func TestExpeditedProposal_PassAndConversionToRegular(t *testing.T) { require.Equal(t, expectedIntermediateMofuleAccCoings, intermediateModuleAccCoins) // block header time at the voting period - newHeader.Time = ctx.HeaderInfo().Time.Add(*params.MaxDepositPeriod).Add(*params.VotingPeriod) - ctx = ctx.WithHeaderInfo(newHeader) + newHeader = integration.HeaderInfoFromContext(ctx) + newHeader.Time = newHeader.Time.Add(*params.MaxDepositPeriod).Add(*params.VotingPeriod) + ctx = integration.SetHeaderInfo(ctx, newHeader) if tc.regularEventuallyPassing { // Validator votes YES, letting the converted regular proposal pass. @@ -646,7 +642,7 @@ func TestExpeditedProposal_PassAndConversionToRegular(t *testing.T) { } } -func createValidators(t *testing.T, stakingMsgSvr stakingtypes.MsgServer, ctx sdk.Context, addrs []sdk.ValAddress, powerAmt []int64) { +func createValidators(t *testing.T, stakingMsgSvr stakingtypes.MsgServer, ctx context.Context, addrs []sdk.ValAddress, powerAmt []int64) { t.Helper() require.True(t, len(addrs) <= len(pubkeys), "Not enough pubkeys specified at top of file.") diff --git a/tests/integration/v2/gov/common_test.go b/tests/integration/v2/gov/common_test.go new file mode 100644 index 000000000000..c630f8602f85 --- /dev/null +++ b/tests/integration/v2/gov/common_test.go @@ -0,0 +1,207 @@ +package gov + +import ( + "bytes" + "context" + "log" + "sort" + "testing" + + "github.com/stretchr/testify/require" + "gotest.tools/v3/assert" + + "cosmossdk.io/core/router" + "cosmossdk.io/core/transaction" + "cosmossdk.io/depinject" + sdklog "cosmossdk.io/log" + "cosmossdk.io/math" + "cosmossdk.io/runtime/v2" + _ "cosmossdk.io/x/accounts" + _ "cosmossdk.io/x/bank" + bankkeeper "cosmossdk.io/x/bank/keeper" + banktypes "cosmossdk.io/x/bank/types" + _ "cosmossdk.io/x/consensus" + _ "cosmossdk.io/x/gov" + "cosmossdk.io/x/gov/keeper" + "cosmossdk.io/x/gov/types" + v1 "cosmossdk.io/x/gov/types/v1" + "cosmossdk.io/x/gov/types/v1beta1" + _ "cosmossdk.io/x/mint" + _ "cosmossdk.io/x/protocolpool" + _ "cosmossdk.io/x/staking" + stakingkeeper "cosmossdk.io/x/staking/keeper" + stakingtypes "cosmossdk.io/x/staking/types" + + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/tests/integration/v2" + "github.com/cosmos/cosmos-sdk/testutil/configurator" + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/x/auth" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + "github.com/cosmos/cosmos-sdk/x/auth/tx" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" +) + +var ( + valTokens = sdk.TokensFromConsensusPower(42, sdk.DefaultPowerReduction) + TestProposal = v1beta1.NewTextProposal("Test", "description") + TestDescription = stakingtypes.NewDescription("T", "E", "S", "T", "Z", &stakingtypes.Metadata{}) + TestCommissionRates = stakingtypes.NewCommissionRates(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec()) +) + +// mkTestLegacyContent creates a MsgExecLegacyContent for testing purposes. +func mkTestLegacyContent(t *testing.T) *v1.MsgExecLegacyContent { + t.Helper() + msgContent, err := v1.NewLegacyContent(TestProposal, authtypes.NewModuleAddress(types.ModuleName).String()) + assert.NilError(t, err) + + return msgContent +} + +var pubkeys = []cryptotypes.PubKey{ + ed25519.GenPrivKey().PubKey(), + ed25519.GenPrivKey().PubKey(), + ed25519.GenPrivKey().PubKey(), +} + +// SortAddresses - Sorts Addresses +func SortAddresses(addrs []sdk.AccAddress) { + byteAddrs := make([][]byte, len(addrs)) + + for i, addr := range addrs { + byteAddrs[i] = addr.Bytes() + } + + SortByteArrays(byteAddrs) + + for i, byteAddr := range byteAddrs { + addrs[i] = byteAddr + } +} + +// implement `Interface` in sort package. +type sortByteArrays [][]byte + +func (b sortByteArrays) Len() int { + return len(b) +} + +func (b sortByteArrays) Less(i, j int) bool { + // bytes package already implements Comparable for []byte. + switch bytes.Compare(b[i], b[j]) { + case -1: + return true + case 0, 1: + return false + default: + log.Panic("not fail-able with `bytes.Comparable` bounded [-1, 1].") + return false + } +} + +func (b sortByteArrays) Swap(i, j int) { + b[j], b[i] = b[i], b[j] +} + +// SortByteArrays - sorts the provided byte array +func SortByteArrays(src [][]byte) [][]byte { + sorted := sortByteArrays(src) + sort.Sort(sorted) + return sorted +} + +type suite struct { + cdc codec.Codec + app *integration.App + + ctx context.Context + + AuthKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + GovKeeper *keeper.Keeper + StakingKeeper *stakingkeeper.Keeper + + txConfigOptions tx.ConfigOptions +} + +func createTestSuite(t *testing.T, genesisBehavior int) suite { + t.Helper() + res := suite{} + + moduleConfigs := []configurator.ModuleOption{ + configurator.AccountsModule(), + configurator.AuthModule(), + configurator.StakingModule(), + configurator.TxModule(), + configurator.BankModule(), + configurator.GovModule(), + configurator.MintModule(), + configurator.ConsensusModule(), + configurator.ProtocolPoolModule(), + } + + startupCfg := integration.DefaultStartUpConfig(t) + + msgRouterService := integration.NewRouterService() + res.registerMsgRouterService(msgRouterService) + + var routerFactory runtime.RouterServiceFactory = func(_ []byte) router.Service { + return msgRouterService + } + + queryRouterService := integration.NewRouterService() + res.registerQueryRouterService(queryRouterService) + serviceBuilder := runtime.NewRouterBuilder(routerFactory, queryRouterService) + + startupCfg.BranchService = &integration.BranchService{} + startupCfg.RouterServiceBuilder = serviceBuilder + startupCfg.HeaderService = &integration.HeaderService{} + startupCfg.GasService = &integration.GasService{} + startupCfg.GenesisBehavior = genesisBehavior + + app, err := integration.NewApp( + depinject.Configs(configurator.NewAppV2Config(moduleConfigs...), depinject.Supply(sdklog.NewNopLogger())), + startupCfg, + &res.AuthKeeper, &res.BankKeeper, &res.GovKeeper, &res.StakingKeeper, &res.cdc, &res.txConfigOptions, + ) + require.NoError(t, err) + + res.ctx = app.StateLatestContext(t) + res.app = app + return res +} + +func (s *suite) registerMsgRouterService(router *integration.RouterService) { + // register custom router service + bankSendHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) { + msg, ok := req.(*banktypes.MsgSend) + if !ok { + return nil, integration.ErrInvalidMsgType + } + msgServer := bankkeeper.NewMsgServerImpl(s.BankKeeper) + resp, err := msgServer.Send(ctx, msg) + return resp, err + } + + router.RegisterHandler(bankSendHandler, "/cosmos.bank.v1beta1.MsgSend") + + // register custom router service + + govSubmitProposalHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) { + msg, ok := req.(*v1.MsgExecLegacyContent) + if !ok { + return nil, integration.ErrInvalidMsgType + } + msgServer := keeper.NewMsgServerImpl(s.GovKeeper) + resp, err := msgServer.ExecLegacyContent(ctx, msg) + return resp, err + } + + router.RegisterHandler(govSubmitProposalHandler, "/cosmos.gov.v1.MsgExecLegacyContent") +} + +func (f *suite) registerQueryRouterService(router *integration.RouterService) { + +} diff --git a/tests/integration/gov/genesis_test.go b/tests/integration/v2/gov/genesis_test.go similarity index 54% rename from tests/integration/gov/genesis_test.go rename to tests/integration/v2/gov/genesis_test.go index 5f512be92a85..3149aad4c2c2 100644 --- a/tests/integration/gov/genesis_test.go +++ b/tests/integration/v2/gov/genesis_test.go @@ -1,86 +1,43 @@ -package gov_test +package gov import ( + "crypto/sha256" "encoding/json" "testing" + "time" - abci "github.com/cometbft/cometbft/api/cometbft/abci/v1" "github.com/stretchr/testify/require" "gotest.tools/v3/assert" "cosmossdk.io/core/header" - corestore "cosmossdk.io/core/store" - coretesting "cosmossdk.io/core/testing" - "cosmossdk.io/depinject" - "cosmossdk.io/log" + "cosmossdk.io/core/server" + "cosmossdk.io/core/transaction" sdkmath "cosmossdk.io/math" _ "cosmossdk.io/x/accounts" _ "cosmossdk.io/x/bank" - bankkeeper "cosmossdk.io/x/bank/keeper" banktypes "cosmossdk.io/x/bank/types" _ "cosmossdk.io/x/consensus" "cosmossdk.io/x/gov" - "cosmossdk.io/x/gov/keeper" "cosmossdk.io/x/gov/types" v1 "cosmossdk.io/x/gov/types/v1" _ "cosmossdk.io/x/staking" - stakingkeeper "cosmossdk.io/x/staking/keeper" stakingtypes "cosmossdk.io/x/staking/types" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/runtime" - "github.com/cosmos/cosmos-sdk/testutil/configurator" + "github.com/cosmos/cosmos-sdk/tests/integration/v2" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/x/auth" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) -type suite struct { - cdc codec.Codec - app *runtime.App - AccountKeeper authkeeper.AccountKeeper - BankKeeper bankkeeper.Keeper - GovKeeper *keeper.Keeper - StakingKeeper *stakingkeeper.Keeper - appBuilder *runtime.AppBuilder -} - -var appConfig = configurator.NewAppConfig( - configurator.AccountsModule(), - configurator.AuthModule(), - configurator.StakingModule(), - configurator.BankModule(), - configurator.GovModule(), - configurator.MintModule(), - configurator.ConsensusModule(), - configurator.ProtocolPoolModule(), -) - func TestImportExportQueues(t *testing.T) { var err error - s1 := suite{} - s1.app, err = simtestutil.SetupWithConfiguration( - depinject.Configs( - appConfig, - depinject.Supply(log.NewNopLogger()), - ), - simtestutil.DefaultStartUpConfig(), - &s1.AccountKeeper, &s1.BankKeeper, &s1.GovKeeper, &s1.StakingKeeper, &s1.cdc, &s1.appBuilder, - ) - assert.NilError(t, err) + s1 := createTestSuite(t, integration.Genesis_COMMIT) + ctx := s1.ctx - ctx := s1.app.BaseApp.NewContext(false) addrs := simtestutil.AddTestAddrs(s1.BankKeeper, s1.StakingKeeper, ctx, 1, valTokens) - _, err = s1.app.FinalizeBlock(&abci.FinalizeBlockRequest{ - Height: s1.app.LastBlockHeight() + 1, - }) - assert.NilError(t, err) - - ctx = s1.app.BaseApp.NewContext(false) // Create two proposals, put the second into the voting period proposal1, err := s1.GovKeeper.SubmitProposal(ctx, []sdk.Msg{mkTestLegacyContent(t)}, "", "test", "description", addrs[0], v1.ProposalType_PROPOSAL_TYPE_STANDARD) assert.NilError(t, err) @@ -103,7 +60,7 @@ func TestImportExportQueues(t *testing.T) { assert.Assert(t, proposal1.Status == v1.StatusDepositPeriod) assert.Assert(t, proposal2.Status == v1.StatusVotingPeriod) - authGenState, err := s1.AccountKeeper.ExportGenesis(ctx) + authGenState, err := s1.AuthKeeper.ExportGenesis(ctx) require.NoError(t, err) bankGenState, err := s1.BankKeeper.ExportGenesis(ctx) require.NoError(t, err) @@ -111,8 +68,10 @@ func TestImportExportQueues(t *testing.T) { require.NoError(t, err) // export the state and import it into a new app - govGenState, _ := gov.ExportGenesis(ctx, s1.GovKeeper) - genesisState := s1.appBuilder.DefaultGenesis() + govGenState, err := gov.ExportGenesis(ctx, s1.GovKeeper) + require.NoError(t, err) + + genesisState := s1.app.DefaultGenesis() genesisState[authtypes.ModuleName] = s1.cdc.MustMarshalJSON(authGenState) genesisState[banktypes.ModuleName] = s1.cdc.MustMarshalJSON(bankGenState) @@ -122,49 +81,34 @@ func TestImportExportQueues(t *testing.T) { stateBytes, err := json.MarshalIndent(genesisState, "", " ") assert.NilError(t, err) - s2 := suite{} - db := coretesting.NewMemDB() - conf2 := simtestutil.DefaultStartUpConfig() - conf2.DB = db - s2.app, err = simtestutil.SetupWithConfiguration( - depinject.Configs( - appConfig, - depinject.Supply(log.NewNopLogger()), - ), - conf2, - &s2.AccountKeeper, &s2.BankKeeper, &s2.GovKeeper, &s2.StakingKeeper, &s2.cdc, &s2.appBuilder, - ) - assert.NilError(t, err) - - clearDB(t, db) - err = s2.app.CommitMultiStore().LoadLatestVersion() - assert.NilError(t, err) + s2 := createTestSuite(t, integration.Genesis_SKIP) - _, err = s2.app.InitChain( - &abci.InitChainRequest{ - Validators: []abci.ValidatorUpdate{}, - ConsensusParams: simtestutil.DefaultConsensusParams, - AppStateBytes: stateBytes, + emptyHash := sha256.Sum256(nil) + _, newstate, err := s2.app.InitGenesis( + ctx, + &server.BlockRequest[transaction.Tx]{ + Height: 1, + Time: time.Now(), + Hash: emptyHash[:], + ChainId: "test-chain", + AppHash: emptyHash[:], + IsGenesis: true, }, + stateBytes, + integration.NewGenesisTxCodec(s2.txConfigOptions), ) assert.NilError(t, err) - _, err = s2.app.FinalizeBlock(&abci.FinalizeBlockRequest{ - Height: s2.app.LastBlockHeight() + 1, - }) - assert.NilError(t, err) - - _, err = s2.app.FinalizeBlock(&abci.FinalizeBlockRequest{ - Height: s2.app.LastBlockHeight() + 1, - }) + _, err = s2.app.Commit(newstate) assert.NilError(t, err) - ctx2 := s2.app.BaseApp.NewContext(false) + ctx2 := s2.app.StateLatestContext(t) params, err = s2.GovKeeper.Params.Get(ctx2) assert.NilError(t, err) // Jump the time forward past the DepositPeriod and VotingPeriod - ctx2 = ctx2.WithHeaderInfo(header.Info{Time: ctx2.BlockHeader().Time.Add(*params.MaxDepositPeriod).Add(*params.VotingPeriod)}) + h := integration.HeaderInfoFromContext(ctx2) + ctx2 = integration.SetHeaderInfo(ctx2, header.Info{Time: h.Time.Add(*params.MaxDepositPeriod).Add(*params.VotingPeriod)}) // Make sure that they are still in the DepositPeriod and VotingPeriod respectively proposal1, err = s2.GovKeeper.Proposals.Get(ctx2, proposalID1) @@ -189,29 +133,12 @@ func TestImportExportQueues(t *testing.T) { assert.Assert(t, proposal2.Status == v1.StatusRejected) } -func clearDB(t *testing.T, db corestore.KVStoreWithBatch) { - t.Helper() - iter, err := db.Iterator(nil, nil) - assert.NilError(t, err) - defer iter.Close() - - var keys [][]byte - for ; iter.Valid(); iter.Next() { - keys = append(keys, iter.Key()) - } - - for _, k := range keys { - assert.NilError(t, db.Delete(k)) - } -} - func TestImportExportQueues_ErrorUnconsistentState(t *testing.T) { - suite := createTestSuite(t) - app := suite.app - ctx := app.BaseApp.NewContext(false) + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx params := v1.DefaultParams() - err := gov.InitGenesis(ctx, suite.AccountKeeper, suite.BankKeeper, suite.GovKeeper, &v1.GenesisState{ + err := gov.InitGenesis(ctx, suite.AuthKeeper, suite.BankKeeper, suite.GovKeeper, &v1.GenesisState{ Deposits: v1.Deposits{ { ProposalId: 1234, @@ -227,7 +154,7 @@ func TestImportExportQueues_ErrorUnconsistentState(t *testing.T) { Params: ¶ms, }) require.Error(t, err) - err = gov.InitGenesis(ctx, suite.AccountKeeper, suite.BankKeeper, suite.GovKeeper, v1.DefaultGenesisState()) + err = gov.InitGenesis(ctx, suite.AuthKeeper, suite.BankKeeper, suite.GovKeeper, v1.DefaultGenesisState()) require.NoError(t, err) genState, err := gov.ExportGenesis(ctx, suite.GovKeeper) require.NoError(t, err) diff --git a/tests/integration/gov/keeper/common_test.go b/tests/integration/v2/gov/keeper/common_test.go similarity index 96% rename from tests/integration/gov/keeper/common_test.go rename to tests/integration/v2/gov/keeper/common_test.go index 51b84406c141..2e5289ddb8d5 100644 --- a/tests/integration/gov/keeper/common_test.go +++ b/tests/integration/v2/gov/keeper/common_test.go @@ -1,4 +1,4 @@ -package keeper_test +package keeper import ( "testing" @@ -59,7 +59,7 @@ func createValidators(t *testing.T, f *fixture, powers []int64) ([]sdk.AccAddres assert.NilError(t, f.stakingKeeper.SetNewValidatorByPowerIndex(f.ctx, val3)) for _, addr := range addrs { - f.accountKeeper.SetAccount(f.ctx, f.accountKeeper.NewAccountWithAddress(f.ctx, addr)) + f.authKeeper.SetAccount(f.ctx, f.authKeeper.NewAccountWithAddress(f.ctx, addr)) } _, _ = f.stakingKeeper.Delegate(f.ctx, addrs[0], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[0]), stakingtypes.Unbonded, val1, true) diff --git a/tests/integration/v2/gov/keeper/fixture_test.go b/tests/integration/v2/gov/keeper/fixture_test.go new file mode 100644 index 000000000000..d9ed3e807a5d --- /dev/null +++ b/tests/integration/v2/gov/keeper/fixture_test.go @@ -0,0 +1,109 @@ +package keeper + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + + "cosmossdk.io/core/router" + "cosmossdk.io/core/transaction" + "cosmossdk.io/depinject" + "cosmossdk.io/log" + "cosmossdk.io/runtime/v2" + _ "cosmossdk.io/x/accounts" + _ "cosmossdk.io/x/bank" + bankkeeper "cosmossdk.io/x/bank/keeper" + _ "cosmossdk.io/x/consensus" + _ "cosmossdk.io/x/gov" + govkeeper "cosmossdk.io/x/gov/keeper" + v1 "cosmossdk.io/x/gov/types/v1" + "cosmossdk.io/x/gov/types/v1beta1" + _ "cosmossdk.io/x/protocolpool" + _ "cosmossdk.io/x/staking" + stakingkeeper "cosmossdk.io/x/staking/keeper" + + "github.com/cosmos/cosmos-sdk/tests/integration/v2" + "github.com/cosmos/cosmos-sdk/testutil/configurator" + _ "github.com/cosmos/cosmos-sdk/x/auth" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" +) + +type fixture struct { + ctx context.Context + app *integration.App + + queryServer v1.QueryServer + legacyQueryServer v1beta1.QueryServer + + authKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + stakingKeeper *stakingkeeper.Keeper + govKeeper *govkeeper.Keeper +} + +func initFixture(t *testing.T) *fixture { + t.Helper() + res := fixture{} + + moduleConfigs := []configurator.ModuleOption{ + configurator.AccountsModule(), + configurator.AuthModule(), + configurator.StakingModule(), + configurator.BankModule(), + configurator.TxModule(), + configurator.GovModule(), + configurator.ConsensusModule(), + configurator.ProtocolPoolModule(), + } + + startupCfg := integration.DefaultStartUpConfig(t) + + msgRouterService := integration.NewRouterService() + res.registerMsgRouterService(msgRouterService) + + var routerFactory runtime.RouterServiceFactory = func(_ []byte) router.Service { + return msgRouterService + } + + queryRouterService := integration.NewRouterService() + res.registerQueryRouterService(queryRouterService) + serviceBuilder := runtime.NewRouterBuilder(routerFactory, queryRouterService) + + startupCfg.BranchService = &integration.BranchService{} + startupCfg.RouterServiceBuilder = serviceBuilder + startupCfg.HeaderService = &integration.HeaderService{} + + app, err := integration.NewApp( + depinject.Configs(configurator.NewAppV2Config(moduleConfigs...), depinject.Supply(log.NewNopLogger())), + startupCfg, + &res.authKeeper, &res.bankKeeper, &res.govKeeper, &res.stakingKeeper) + require.NoError(t, err) + + res.app = app + res.ctx = app.StateLatestContext(t) + + res.queryServer = govkeeper.NewQueryServer(res.govKeeper) + res.legacyQueryServer = govkeeper.NewLegacyQueryServer(res.govKeeper) + return &res +} + +func (f *fixture) registerMsgRouterService(router *integration.RouterService) { + // register custom router service + + govSubmitProposalHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) { + msg, ok := req.(*v1.MsgExecLegacyContent) + if !ok { + return nil, integration.ErrInvalidMsgType + } + msgServer := govkeeper.NewMsgServerImpl(f.govKeeper) + resp, err := msgServer.ExecLegacyContent(ctx, msg) + return resp, err + } + + router.RegisterHandler(govSubmitProposalHandler, "/cosmos.gov.v1.MsgExecLegacyContent") +} + +func (f *fixture) registerQueryRouterService(router *integration.RouterService) { + +} diff --git a/tests/integration/gov/keeper/grpc_query_test.go b/tests/integration/v2/gov/keeper/grpc_test.go similarity index 92% rename from tests/integration/gov/keeper/grpc_query_test.go rename to tests/integration/v2/gov/keeper/grpc_test.go index 44fc1ccc103e..c8a9be23d781 100644 --- a/tests/integration/gov/keeper/grpc_query_test.go +++ b/tests/integration/v2/gov/keeper/grpc_test.go @@ -1,7 +1,6 @@ -package keeper_test +package keeper import ( - gocontext "context" "fmt" "testing" @@ -16,7 +15,7 @@ func TestLegacyGRPCQueryTally(t *testing.T) { t.Parallel() f := initFixture(t) - ctx, queryClient := f.ctx, f.legacyQueryClient + ctx, queryServer := f.ctx, f.legacyQueryServer addrs, _ := createValidators(t, f, []int64{5, 5, 5}) var ( @@ -62,7 +61,7 @@ func TestLegacyGRPCQueryTally(t *testing.T) { t.Run(fmt.Sprintf("Case %s", testCase.msg), func(t *testing.T) { testCase.malleate() - tally, err := queryClient.TallyResult(gocontext.Background(), req) + tally, err := queryServer.TallyResult(f.ctx, req) if testCase.expPass { assert.NilError(t, err) diff --git a/tests/integration/gov/keeper/tally_test.go b/tests/integration/v2/gov/keeper/tally_test.go similarity index 99% rename from tests/integration/gov/keeper/tally_test.go rename to tests/integration/v2/gov/keeper/tally_test.go index f2b952076285..65f811bd7616 100644 --- a/tests/integration/gov/keeper/tally_test.go +++ b/tests/integration/v2/gov/keeper/tally_test.go @@ -1,4 +1,4 @@ -package keeper_test +package keeper import ( "testing" @@ -6,6 +6,7 @@ import ( "gotest.tools/v3/assert" "cosmossdk.io/math" + _ "cosmossdk.io/x/gov" v1 "cosmossdk.io/x/gov/types/v1" stakingtypes "cosmossdk.io/x/staking/types" diff --git a/tests/integration/v2/gov/module_test.go b/tests/integration/v2/gov/module_test.go new file mode 100644 index 000000000000..338e11f32310 --- /dev/null +++ b/tests/integration/v2/gov/module_test.go @@ -0,0 +1,23 @@ +package gov + +import ( + "testing" + + "gotest.tools/v3/assert" + + _ "cosmossdk.io/x/accounts" + "cosmossdk.io/x/gov/types" + _ "cosmossdk.io/x/mint" + _ "cosmossdk.io/x/protocolpool" + + "github.com/cosmos/cosmos-sdk/tests/integration/v2" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" +) + +func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { + suite := createTestSuite(t, integration.Genesis_COMMIT) + ctx := suite.ctx + + acc := suite.AuthKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) + assert.Assert(t, acc != nil) +} diff --git a/tests/integration/v2/services.go b/tests/integration/v2/services.go index 241a07cdd82f..f608fd65fdb0 100644 --- a/tests/integration/v2/services.go +++ b/tests/integration/v2/services.go @@ -1,10 +1,13 @@ package integration import ( + "bytes" "context" + "encoding/json" "errors" "fmt" + "github.com/cosmos/gogoproto/jsonpb" gogoproto "github.com/cosmos/gogoproto/proto" "cosmossdk.io/core/branch" @@ -17,6 +20,7 @@ import ( "cosmossdk.io/core/server" corestore "cosmossdk.io/core/store" "cosmossdk.io/core/transaction" + "cosmossdk.io/server/v2/stf" stfgas "cosmossdk.io/server/v2/stf/gas" ) @@ -72,6 +76,7 @@ type integrationContext struct { state corestore.WriterMap gasMeter gas.Meter header header.Info + events []event.Event } func SetHeaderInfo(ctx context.Context, h header.Info) context.Context { @@ -95,6 +100,31 @@ func SetCometInfo(ctx context.Context, c comet.Info) context.Context { return context.WithValue(ctx, corecontext.CometInfoKey, c) } +func EventsFromContext(ctx context.Context) []event.Event { + iCtx, ok := ctx.Value(contextKey).(*integrationContext) + if !ok { + return nil + } + return iCtx.events +} + +func GetAttributes(e []event.Event, key string) ([]event.Attribute, bool) { + attrs := make([]event.Attribute, 0) + for _, event := range e { + attributes, err := event.Attributes() + if err != nil { + return nil, false + } + for _, attr := range attributes { + if attr.Key == key { + attrs = append(attrs, attr) + } + } + } + + return attrs, len(attrs) > 0 +} + func GasMeterFromContext(ctx context.Context) gas.Meter { iCtx, ok := ctx.Value(contextKey).(*integrationContext) if !ok { @@ -130,22 +160,63 @@ var ( _ event.Manager = &eventManager{} ) -type eventService struct{} +type eventService struct { +} // EventManager implements event.Service. -func (e *eventService) EventManager(context.Context) event.Manager { - return &eventManager{} +func (e *eventService) EventManager(ctx context.Context) event.Manager { + iCtx, ok := ctx.Value(contextKey).(*integrationContext) + if !ok { + panic("context is not an integration context") + } + + return &eventManager{ctx: iCtx} } -type eventManager struct{} +type eventManager struct { + ctx *integrationContext +} // Emit implements event.Manager. -func (e *eventManager) Emit(event transaction.Msg) error { +func (e *eventManager) Emit(tev transaction.Msg) error { + ev := event.Event{ + Type: gogoproto.MessageName(tev), + Attributes: func() ([]event.Attribute, error) { + outerEvent, err := stf.TypedEventToEvent(tev) + if err != nil { + return nil, err + } + + return outerEvent.Attributes() + }, + Data: func() (json.RawMessage, error) { + buf := new(bytes.Buffer) + jm := &jsonpb.Marshaler{OrigName: true, EmitDefaults: true, AnyResolver: nil} + if err := jm.Marshal(buf, tev); err != nil { + return nil, err + } + + return buf.Bytes(), nil + }, + } + + e.ctx.events = append(e.ctx.events, ev) return nil } // EmitKV implements event.Manager. func (e *eventManager) EmitKV(eventType string, attrs ...event.Attribute) error { + ev := event.Event{ + Type: eventType, + Attributes: func() ([]event.Attribute, error) { + return attrs, nil + }, + Data: func() (json.RawMessage, error) { + return json.Marshal(attrs) + }, + } + + e.ctx.events = append(e.ctx.events, ev) return nil } @@ -232,3 +303,15 @@ func (h *HeaderService) HeaderInfo(ctx context.Context) header.Info { } return iCtx.header } + +var _ gas.Service = &GasService{} + +type GasService struct{} + +func (g *GasService) GasMeter(ctx context.Context) gas.Meter { + return GasMeterFromContext(ctx) +} + +func (g *GasService) GasConfig(ctx context.Context) gas.GasConfig { + return gas.GasConfig{} +} diff --git a/testutil/sims/address_helpers.go b/testutil/sims/address_helpers.go index f90225502b80..3254a2158290 100644 --- a/testutil/sims/address_helpers.go +++ b/testutil/sims/address_helpers.go @@ -35,7 +35,7 @@ func AddTestAddrsFromPubKeys(bankKeeper BankKeeper, stakingKeeper StakingKeeper, // AddTestAddrs constructs and returns accNum amount of accounts with an // initial balance of accAmt in random order -func AddTestAddrs(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx sdk.Context, accNum int, accAmt math.Int) []sdk.AccAddress { +func AddTestAddrs(bankKeeper BankKeeper, stakingKeeper StakingKeeper, ctx context.Context, accNum int, accAmt math.Int) []sdk.AccAddress { return addTestAddrs(bankKeeper, stakingKeeper, ctx, accNum, accAmt, CreateRandomAccounts) } From 25cbf9898388fcdf473911e66867e5ea9b177d12 Mon Sep 17 00:00:00 2001 From: testinginprod <98415576+testinginprod@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:46:03 +0100 Subject: [PATCH 54/62] fix(baseapp): hybrid handlers do not drop any (#22866) --- baseapp/grpcrouter_test.go | 25 ++++++++++++++++++ baseapp/internal/protocompat/protocompat.go | 28 ++++++++------------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/baseapp/grpcrouter_test.go b/baseapp/grpcrouter_test.go index b381fe8a277e..cc7e0476b2b3 100644 --- a/baseapp/grpcrouter_test.go +++ b/baseapp/grpcrouter_test.go @@ -95,6 +95,31 @@ func TestGRPCRouterHybridHandlers(t *testing.T) { } assertRouterBehaviour(helper) }) + + t.Run("any cached value is not dropped", func(t *testing.T) { + // ref: https://github.com/cosmos/cosmos-sdk/issues/22779 + qr := baseapp.NewGRPCQueryRouter() + interfaceRegistry := testdata.NewTestInterfaceRegistry() + testdata.RegisterInterfaces(interfaceRegistry) + qr.SetInterfaceRegistry(interfaceRegistry) + testdata.RegisterQueryServer(qr, testdata.QueryImpl{}) + helper := &baseapp.QueryServiceTestHelper{ + GRPCQueryRouter: qr, + Ctx: sdk.Context{}.WithContext(context.Background()), + } + + anyMsg, err := types.NewAnyWithValue(&testdata.Dog{}) + require.NoError(t, err) + + handler := qr.HybridHandlerByRequestName("testpb.TestAnyRequest")[0] + + resp := new(testdata.TestAnyResponse) + err = handler(helper.Ctx, &testdata.TestAnyRequest{ + AnyAnimal: anyMsg, + }, resp) + require.NoError(t, err) + require.NotNil(t, resp.HasAnimal.Animal.GetCachedValue()) + }) } func TestRegisterQueryServiceTwice(t *testing.T) { diff --git a/baseapp/internal/protocompat/protocompat.go b/baseapp/internal/protocompat/protocompat.go index 004efe635e2a..43c32df35376 100644 --- a/baseapp/internal/protocompat/protocompat.go +++ b/baseapp/internal/protocompat/protocompat.go @@ -6,7 +6,6 @@ import ( "reflect" gogoproto "github.com/cosmos/gogoproto/proto" - "github.com/golang/protobuf/proto" //nolint: staticcheck // needed because gogoproto.Merge does not work consistently. See NOTE: comments. "google.golang.org/grpc" proto2 "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" @@ -124,19 +123,13 @@ func makeGogoHybridHandler(prefMethod protoreflect.MethodDescriptor, cdc codec.B return fmt.Errorf("invalid request type %T, method %s does not accept protov2 messages", inReq, prefMethod.FullName()) } resp, err := method.Handler(handler, ctx, func(msg any) error { - // merge! ref: https://github.com/cosmos/cosmos-sdk/issues/18003 - // NOTE: using gogoproto.Merge will fail for some reason unknown to me, but - // using proto.Merge with gogo messages seems to work fine. - proto.Merge(msg.(gogoproto.Message), inReq) + setPointer(msg, inReq) return nil }, nil) if err != nil { return err } - // merge resp, ref: https://github.com/cosmos/cosmos-sdk/issues/18003 - // NOTE: using gogoproto.Merge will fail for some reason unknown to me, but - // using proto.Merge with gogo messages seems to work fine. - proto.Merge(outResp.(gogoproto.Message), resp.(gogoproto.Message)) + setPointer(outResp, resp) return nil }, nil } @@ -168,20 +161,13 @@ func makeGogoHybridHandler(prefMethod protoreflect.MethodDescriptor, cdc codec.B case gogoproto.Message: // we can just call the handler after making a copy of the message, for safety reasons. resp, err := method.Handler(handler, ctx, func(msg any) error { - // ref: https://github.com/cosmos/cosmos-sdk/issues/18003 - asGogoProto := msg.(gogoproto.Message) - // NOTE: using gogoproto.Merge will fail for some reason unknown to me, but - // using proto.Merge with gogo messages seems to work fine. - proto.Merge(asGogoProto, m) + setPointer(msg, m) return nil }, nil) if err != nil { return err } - // merge on the resp, ref: https://github.com/cosmos/cosmos-sdk/issues/18003 - // NOTE: using gogoproto.Merge will fail for some reason unknown to me, but - // using proto.Merge with gogo messages seems to work fine. - proto.Merge(outResp.(gogoproto.Message), resp.(gogoproto.Message)) + setPointer(outResp, resp) return nil default: panic("unreachable") @@ -246,3 +232,9 @@ func ResponseFullNameFromMethodDesc(sd *grpc.ServiceDesc, method grpc.MethodDesc } return methodDesc.Output().FullName(), nil } + +// since proto.Merge breaks due to the custom cosmos sdk any, we are forced to do this ugly setPointer hack. +// ref: https://github.com/cosmos/cosmos-sdk/issues/22779 +func setPointer(dst, src any) { + reflect.ValueOf(dst).Elem().Set(reflect.ValueOf(src).Elem()) +} From 256ec4f90277cadc0f976e89e10d3100cc820e50 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 13 Dec 2024 17:45:04 +0100 Subject: [PATCH 55/62] refactor(client/v2): remove gov dependency (#22867) --- client/v2/autocli/msg.go | 14 ++-- client/v2/go.mod | 4 +- client/v2/go.sum | 6 +- client/v2/internal/governance/gov.go | 99 ++++++++++++++++++++++++++++ simapp/go.mod | 2 +- simapp/go.sum | 4 +- simapp/v2/go.mod | 2 +- simapp/v2/go.sum | 4 +- tests/go.mod | 2 +- tests/go.sum | 4 +- x/feegrant/go.mod | 2 +- x/feegrant/go.sum | 4 +- x/gov/go.mod | 2 +- x/gov/go.sum | 4 +- x/group/go.mod | 2 +- x/group/go.sum | 4 +- x/params/go.mod | 2 +- x/params/go.sum | 4 +- x/upgrade/go.mod | 2 +- x/upgrade/go.sum | 4 +- 20 files changed, 131 insertions(+), 40 deletions(-) create mode 100644 client/v2/internal/governance/gov.go diff --git a/client/v2/autocli/msg.go b/client/v2/autocli/msg.go index 9b30a56fe375..795b965adacb 100644 --- a/client/v2/autocli/msg.go +++ b/client/v2/autocli/msg.go @@ -5,7 +5,6 @@ import ( "context" "fmt" - gogoproto "github.com/cosmos/gogoproto/proto" "github.com/spf13/cobra" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" @@ -14,16 +13,13 @@ import ( autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" "cosmossdk.io/client/v2/autocli/flag" "cosmossdk.io/client/v2/internal/flags" + "cosmossdk.io/client/v2/internal/governance" "cosmossdk.io/client/v2/internal/print" "cosmossdk.io/client/v2/internal/util" v2tx "cosmossdk.io/client/v2/tx" addresscodec "cosmossdk.io/core/address" "cosmossdk.io/core/transaction" - // the following will be extracted to a separate module - // https://github.com/cosmos/cosmos-sdk/issues/14403 - govcli "cosmossdk.io/x/gov/client/cli" - govtypes "cosmossdk.io/x/gov/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/cosmos-sdk/client" @@ -188,7 +184,7 @@ func (b *Builder) BuildMsgMethodCommand(descriptor protoreflect.MethodDescriptor // set gov proposal flags if command is a gov proposal if options.GovProposal { - govcli.AddGovPropFlagsToCmd(cmd) + governance.AddGovPropFlagsToCmd(cmd) cmd.Flags().Bool(flags.FlagNoProposal, false, "Skip gov proposal and submit a normal transaction") } @@ -203,7 +199,7 @@ func (b *Builder) handleGovProposal( addressCodec addresscodec.Codec, fd protoreflect.FieldDescriptor, ) error { - govAuthority := authtypes.NewModuleAddress(govtypes.ModuleName) + govAuthority := authtypes.NewModuleAddress(governance.ModuleName) authority, err := addressCodec.BytesToString(govAuthority.Bytes()) if err != nil { return fmt.Errorf("failed to convert gov authority: %w", err) @@ -216,7 +212,7 @@ func (b *Builder) handleGovProposal( return fmt.Errorf("failed to set signer on message, got %q: %w", signerFromFlag, err) } - proposal, err := govcli.ReadGovPropCmdFlags(signer, cmd.Flags()) + proposal, err := governance.ReadGovPropCmdFlags(signer, cmd.Flags()) if err != nil { return err } @@ -227,7 +223,7 @@ func (b *Builder) handleGovProposal( msg := dynamicpb.NewMessage(input.Descriptor()) proto.Merge(msg, input.Interface()) - if err := proposal.SetMsgs([]gogoproto.Message{msg}); err != nil { + if err := governance.SetGovMsgs(proposal, msg); err != nil { return fmt.Errorf("failed to set msg in proposal %w", err) } diff --git a/client/v2/go.mod b/client/v2/go.mod index f08d0e2730cd..d83a927dd0f3 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -7,8 +7,7 @@ require ( cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 - cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a - cosmossdk.io/x/tx v1.0.0-alpha.2 + cosmossdk.io/x/tx v1.0.0-alpha.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.53.0 github.com/spf13/cobra v1.8.1 @@ -182,6 +181,5 @@ replace github.com/cosmos/cosmos-sdk => ./../../ replace ( cosmossdk.io/store => ./../../store cosmossdk.io/x/bank => ./../../x/bank - cosmossdk.io/x/gov => ./../../x/gov cosmossdk.io/x/staking => ./../../x/staking ) diff --git a/client/v2/go.sum b/client/v2/go.sum index 76665291f2e3..ec732719eb37 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -22,10 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= -cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/client/v2/internal/governance/gov.go b/client/v2/internal/governance/gov.go new file mode 100644 index 000000000000..11db05fcea8d --- /dev/null +++ b/client/v2/internal/governance/gov.go @@ -0,0 +1,99 @@ +package governance + +import ( + "fmt" + + gogoproto "github.com/cosmos/gogoproto/proto" + gogoprotoany "github.com/cosmos/gogoproto/types/any" + "github.com/spf13/cobra" + "github.com/spf13/pflag" + "google.golang.org/protobuf/types/known/anypb" + + govv1 "cosmossdk.io/api/cosmos/gov/v1" + "cosmossdk.io/client/v2/internal/coins" +) + +const ( + // ModuleName is the name of the governance module name. + // It should match the module name of the cosmossdk.io/x/gov module. + ModuleName = "gov" + + FlagDeposit = "deposit" + FlagMetadata = "metadata" + FlagTitle = "title" + FlagSummary = "summary" + FlagExpedited = "expedited" +) + +// AddGovPropFlagsToCmd adds governance proposal flags to the provided command. +func AddGovPropFlagsToCmd(cmd *cobra.Command) { + cmd.Flags().String(FlagDeposit, "", "The deposit to include with the governance proposal") + cmd.Flags().String(FlagMetadata, "", "The metadata to include with the governance proposal") + cmd.Flags().String(FlagTitle, "", "The title to put on the governance proposal") + cmd.Flags().String(FlagSummary, "", "The summary to include with the governance proposal") + cmd.Flags().Bool(FlagExpedited, false, "Whether to expedite the governance proposal") +} + +// ReadGovPropCmdFlags parses a MsgSubmitProposal from the provided context and flags. +func ReadGovPropCmdFlags(proposer string, flagSet *pflag.FlagSet) (*govv1.MsgSubmitProposal, error) { + rv := &govv1.MsgSubmitProposal{} + + deposit, err := flagSet.GetString(FlagDeposit) + if err != nil { + return nil, fmt.Errorf("could not read deposit: %w", err) + } + if len(deposit) > 0 { + rv.InitialDeposit, err = coins.ParseCoinsNormalized(deposit) + if err != nil { + return nil, fmt.Errorf("invalid deposit: %w", err) + } + } + + rv.Metadata, err = flagSet.GetString(FlagMetadata) + if err != nil { + return nil, fmt.Errorf("could not read metadata: %w", err) + } + + rv.Title, err = flagSet.GetString(FlagTitle) + if err != nil { + return nil, fmt.Errorf("could not read title: %w", err) + } + + rv.Summary, err = flagSet.GetString(FlagSummary) + if err != nil { + return nil, fmt.Errorf("could not read summary: %w", err) + } + + expedited, err := flagSet.GetBool(FlagExpedited) + if err != nil { + return nil, fmt.Errorf("could not read expedited: %w", err) + } + if expedited { + rv.Expedited = true //nolint:staticcheck // We set it in case the message is made for an earlier version of the SDK + rv.ProposalType = govv1.ProposalType_PROPOSAL_TYPE_EXPEDITED + } + + rv.Proposer = proposer + + return rv, nil +} + +func SetGovMsgs(proposal *govv1.MsgSubmitProposal, msgs ...gogoproto.Message) error { + if len(msgs) == 0 { + return fmt.Errorf("zero messages is not supported") + } + + for _, msg := range msgs { + anyMsg, err := gogoprotoany.NewAnyWithCacheWithValue(msg) + if err != nil { + return err + } + + proposal.Messages = append(proposal.Messages, &anypb.Any{ + TypeUrl: anyMsg.TypeUrl, + Value: anyMsg.Value, + }) + } + + return nil +} diff --git a/simapp/go.mod b/simapp/go.mod index 7162e4f29919..dc11f6220eab 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -32,7 +32,7 @@ require ( cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 cosmossdk.io/x/slashing v0.0.0-00010101000000-000000000000 cosmossdk.io/x/staking v0.0.0-20240226161501-23359a0b6d91 - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // indirect cosmossdk.io/x/upgrade v0.0.0-20230613133644-0a778132a60f github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 github.com/cometbft/cometbft/api v1.0.0-rc2 diff --git a/simapp/go.sum b/simapp/go.sum index 6aafd5cb8aa5..7802baba96ab 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -208,8 +208,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/simapp/v2/go.mod b/simapp/v2/go.mod index 1d95f5af3373..816af4c4685e 100644 --- a/simapp/v2/go.mod +++ b/simapp/v2/go.mod @@ -68,7 +68,7 @@ require ( cosmossdk.io/server/v2/appmanager v0.0.0-20240802110823-cffeedff643d // indirect cosmossdk.io/server/v2/stf v0.0.0-20240708142107-25e99c54bac1 // indirect cosmossdk.io/store v1.1.1 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/simapp/v2/go.sum b/simapp/v2/go.sum index b327b7f9c70e..292eacfdf9d5 100644 --- a/simapp/v2/go.sum +++ b/simapp/v2/go.sum @@ -210,8 +210,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/tests/go.mod b/tests/go.mod index 44a6bbc9e160..388f24fefee1 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -15,7 +15,7 @@ require ( cosmossdk.io/x/feegrant v0.0.0-20230613133644-0a778132a60f cosmossdk.io/x/nft v0.0.0-20230613133644-0a778132a60f // indirect cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 - cosmossdk.io/x/tx v1.0.0-alpha.2 + cosmossdk.io/x/tx v1.0.0-alpha.3 cosmossdk.io/x/upgrade v0.0.0-20230613133644-0a778132a60f github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 github.com/cosmos/cosmos-proto v1.0.0-beta.5 diff --git a/tests/go.sum b/tests/go.sum index 0f294ffca5cb..94e9ee2f5b5e 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -208,8 +208,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 54ea2ee9658b..89343cc04350 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -41,7 +41,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index 43052e4e345d..ec732719eb37 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/gov/go.mod b/x/gov/go.mod index ef42c81921f4..6bfbfe4a1758 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -37,7 +37,7 @@ require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.2-20241120201313-68e42a58b301.1 // indirect buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/schema v0.4.0 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/gov/go.sum b/x/gov/go.sum index 43052e4e345d..ec732719eb37 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/group/go.mod b/x/group/go.mod index 82c6896e6626..f03b588731d9 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -40,7 +40,7 @@ require ( cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/group/go.sum b/x/group/go.sum index 14d587ae37e2..2cecff26523a 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/params/go.mod b/x/params/go.mod index a8e428dfde3a..94951d83264c 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -30,7 +30,7 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/collections v0.4.1-0.20241128094659-bd76b47e1d8b // indirect cosmossdk.io/schema v0.4.0 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/params/go.sum b/x/params/go.sum index 75ca03fbd33c..e977b87778cd 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index ffa3208ba68c..59fa7c5612fc 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -46,7 +46,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index be9f6719aded..34295868c7c7 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -212,8 +212,8 @@ cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 h1:XQJj9Dv9Gtze0l2TF79BU5lkP6MkUveTUuKICmxoz+o= cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190/go.mod h1:7WUGupOvmlHJoIMBz1JbObQxeo6/TDiuDBxmtod8HRg= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= From 615226093e5dee327167ef8d98c7bc4b83865e77 Mon Sep 17 00:00:00 2001 From: son trinh Date: Sun, 15 Dec 2024 18:13:55 +0700 Subject: [PATCH 56/62] refactor(tests/integration): Migrate mint and protocolpool integration tests to server v2 (#22859) --- tests/integration/mint/app_config.go | 26 --- tests/integration/mint/module_test.go | 30 --- tests/integration/protocolpool/app_config.go | 30 --- tests/integration/protocolpool/module_test.go | 137 -------------- tests/integration/v2/mint/module_test.go | 50 +++++ .../v2/protocolpool/module_test.go | 178 ++++++++++++++++++ 6 files changed, 228 insertions(+), 223 deletions(-) delete mode 100644 tests/integration/mint/app_config.go delete mode 100644 tests/integration/mint/module_test.go delete mode 100644 tests/integration/protocolpool/app_config.go delete mode 100644 tests/integration/protocolpool/module_test.go create mode 100644 tests/integration/v2/mint/module_test.go create mode 100644 tests/integration/v2/protocolpool/module_test.go diff --git a/tests/integration/mint/app_config.go b/tests/integration/mint/app_config.go deleted file mode 100644 index b074d723d9cb..000000000000 --- a/tests/integration/mint/app_config.go +++ /dev/null @@ -1,26 +0,0 @@ -package mint - -import ( - _ "cosmossdk.io/x/accounts" // import as blank for app wiring - _ "cosmossdk.io/x/bank" // import as blank for app wiring - _ "cosmossdk.io/x/consensus" // import as blank for app wiring - _ "cosmossdk.io/x/mint" // import as blank for app wiring - _ "cosmossdk.io/x/staking" // import as blank for app wiring - - "github.com/cosmos/cosmos-sdk/testutil/configurator" - _ "github.com/cosmos/cosmos-sdk/x/auth" // import as blank for app wiring - _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import as blank for app wiring - _ "github.com/cosmos/cosmos-sdk/x/genutil" // import as blank for app wiring -) - -var AppConfig = configurator.NewAppConfig( - configurator.AccountsModule(), - configurator.AuthModule(), - configurator.BankModule(), - configurator.StakingModule(), - configurator.TxModule(), - configurator.ValidateModule(), - configurator.ConsensusModule(), - configurator.GenutilModule(), - configurator.MintModule(), -) diff --git a/tests/integration/mint/module_test.go b/tests/integration/mint/module_test.go deleted file mode 100644 index e0d9896ac149..000000000000 --- a/tests/integration/mint/module_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package mint - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "cosmossdk.io/depinject" - "cosmossdk.io/log" - "cosmossdk.io/x/mint/types" - - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { - var accountKeeper authkeeper.AccountKeeper - - app, err := simtestutil.SetupAtGenesis( - depinject.Configs( - AppConfig, - depinject.Supply(log.NewNopLogger()), - ), &accountKeeper) - require.NoError(t, err) - - ctx := app.BaseApp.NewContext(false) - acc := accountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) - require.NotNil(t, acc) -} diff --git a/tests/integration/protocolpool/app_config.go b/tests/integration/protocolpool/app_config.go deleted file mode 100644 index 34f39a3111ac..000000000000 --- a/tests/integration/protocolpool/app_config.go +++ /dev/null @@ -1,30 +0,0 @@ -package protocolpool - -import ( - _ "cosmossdk.io/x/accounts" // import as blank for app wiring - _ "cosmossdk.io/x/bank" // import as blank for app wiring - _ "cosmossdk.io/x/consensus" // import as blank for app wiring - _ "cosmossdk.io/x/distribution" // import as blank for app wiring - _ "cosmossdk.io/x/mint" // import as blank for app wiring - _ "cosmossdk.io/x/protocolpool" // import as blank for app wiring - _ "cosmossdk.io/x/staking" // import as blank for app wiring - - "github.com/cosmos/cosmos-sdk/testutil/configurator" - _ "github.com/cosmos/cosmos-sdk/x/auth" // import as blank for app wiring - _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import as blank for app wiring - _ "github.com/cosmos/cosmos-sdk/x/genutil" // import as blank for app wiring -) - -var AppConfig = configurator.NewAppConfig( - configurator.AccountsModule(), - configurator.AuthModule(), - configurator.BankModule(), - configurator.StakingModule(), - configurator.TxModule(), - configurator.ValidateModule(), - configurator.ConsensusModule(), - configurator.GenutilModule(), - configurator.MintModule(), - configurator.DistributionModule(), - configurator.ProtocolPoolModule(), -) diff --git a/tests/integration/protocolpool/module_test.go b/tests/integration/protocolpool/module_test.go deleted file mode 100644 index 8a7afd427918..000000000000 --- a/tests/integration/protocolpool/module_test.go +++ /dev/null @@ -1,137 +0,0 @@ -package protocolpool - -import ( - "math/rand" - "testing" - "time" - - "github.com/stretchr/testify/require" - - "cosmossdk.io/core/header" - "cosmossdk.io/depinject" - "cosmossdk.io/log" - "cosmossdk.io/math" - bankkeeper "cosmossdk.io/x/bank/keeper" - "cosmossdk.io/x/mint/types" - protocolpoolkeeper "cosmossdk.io/x/protocolpool/keeper" - protocolpooltypes "cosmossdk.io/x/protocolpool/types" - stakingkeeper "cosmossdk.io/x/staking/keeper" - - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - sdk "github.com/cosmos/cosmos-sdk/types" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -// TestWithdrawAnytime tests if withdrawing funds many times vs withdrawing funds once -// yield the same end balance. -func TestWithdrawAnytime(t *testing.T) { - var accountKeeper authkeeper.AccountKeeper - var protocolpoolKeeper protocolpoolkeeper.Keeper - var bankKeeper bankkeeper.Keeper - var stakingKeeper *stakingkeeper.Keeper - - app, err := simtestutil.SetupAtGenesis( - depinject.Configs( - AppConfig, - depinject.Supply(log.NewNopLogger()), - ), &accountKeeper, &protocolpoolKeeper, &bankKeeper, &stakingKeeper) - require.NoError(t, err) - - ctx := app.BaseApp.NewContext(false).WithBlockHeight(1).WithHeaderInfo(header.Info{Height: 1}) - acc := accountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) - require.NotNil(t, acc) - - testAddrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 5, math.NewInt(1)) - testAddr0Str, err := accountKeeper.AddressCodec().BytesToString(testAddrs[0]) - require.NoError(t, err) - - msgServer := protocolpoolkeeper.NewMsgServerImpl(protocolpoolKeeper) - _, err = msgServer.CreateContinuousFund( - ctx, - &protocolpooltypes.MsgCreateContinuousFund{ - Authority: protocolpoolKeeper.GetAuthority(), - Recipient: testAddr0Str, - Percentage: math.LegacyMustNewDecFromStr("0.5"), - }, - ) - require.NoError(t, err) - - // increase the community pool by a bunch - for i := 0; i < 30; i++ { - ctx, err = simtestutil.NextBlock(app, ctx, time.Minute) - require.NoError(t, err) - - // withdraw funds randomly, but it must always land on the same end balance - if rand.Intn(100) > 50 { - _, err = msgServer.WithdrawContinuousFund(ctx, &protocolpooltypes.MsgWithdrawContinuousFund{ - RecipientAddress: testAddr0Str, - }) - require.NoError(t, err) - } - } - - pool, err := protocolpoolKeeper.GetCommunityPool(ctx) - require.NoError(t, err) - require.True(t, pool.IsAllGT(sdk.NewCoins(sdk.NewInt64Coin("stake", 100000)))) - - _, err = msgServer.WithdrawContinuousFund(ctx, &protocolpooltypes.MsgWithdrawContinuousFund{ - RecipientAddress: testAddr0Str, - }) - require.NoError(t, err) - - endBalance := bankKeeper.GetBalance(ctx, testAddrs[0], sdk.DefaultBondDenom) - require.Equal(t, "11883031stake", endBalance.String()) -} - -// TestExpireInTheMiddle tests if a continuous fund that expires without anyone -// calling the withdraw function, the funds are still distributed correctly. -func TestExpireInTheMiddle(t *testing.T) { - var accountKeeper authkeeper.AccountKeeper - var protocolpoolKeeper protocolpoolkeeper.Keeper - var bankKeeper bankkeeper.Keeper - var stakingKeeper *stakingkeeper.Keeper - - app, err := simtestutil.SetupAtGenesis( - depinject.Configs( - AppConfig, - depinject.Supply(log.NewNopLogger()), - ), &accountKeeper, &protocolpoolKeeper, &bankKeeper, &stakingKeeper) - require.NoError(t, err) - - ctx := app.BaseApp.NewContext(false).WithBlockHeight(1).WithHeaderInfo(header.Info{Height: 1}) - acc := accountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) - require.NotNil(t, acc) - - testAddrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 5, math.NewInt(1)) - testAddr0Str, err := accountKeeper.AddressCodec().BytesToString(testAddrs[0]) - require.NoError(t, err) - - msgServer := protocolpoolkeeper.NewMsgServerImpl(protocolpoolKeeper) - - expirationTime := ctx.BlockTime().Add(time.Minute * 2) - _, err = msgServer.CreateContinuousFund( - ctx, - &protocolpooltypes.MsgCreateContinuousFund{ - Authority: protocolpoolKeeper.GetAuthority(), - Recipient: testAddr0Str, - Percentage: math.LegacyMustNewDecFromStr("0.1"), - Expiry: &expirationTime, - }, - ) - require.NoError(t, err) - - // increase the community pool by a bunch - for i := 0; i < 30; i++ { - ctx, err = simtestutil.NextBlock(app, ctx, time.Minute) - require.NoError(t, err) - } - - _, err = msgServer.WithdrawContinuousFund(ctx, &protocolpooltypes.MsgWithdrawContinuousFund{ - RecipientAddress: testAddr0Str, - }) - require.NoError(t, err) - - endBalance := bankKeeper.GetBalance(ctx, testAddrs[0], sdk.DefaultBondDenom) - require.Equal(t, "237661stake", endBalance.String()) -} diff --git a/tests/integration/v2/mint/module_test.go b/tests/integration/v2/mint/module_test.go new file mode 100644 index 000000000000..97177f5a2bae --- /dev/null +++ b/tests/integration/v2/mint/module_test.go @@ -0,0 +1,50 @@ +package mint + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "cosmossdk.io/depinject" + "cosmossdk.io/log" + _ "cosmossdk.io/x/accounts" // import as blank for app wiring + _ "cosmossdk.io/x/bank" // import as blank for app wiring + _ "cosmossdk.io/x/consensus" // import as blank for app wiring + _ "cosmossdk.io/x/mint" // import as blank for app wiring + "cosmossdk.io/x/mint/types" + _ "cosmossdk.io/x/staking" // import as blank for app wiring + + "github.com/cosmos/cosmos-sdk/tests/integration/v2" + "github.com/cosmos/cosmos-sdk/testutil/configurator" + _ "github.com/cosmos/cosmos-sdk/x/auth" // import as blank for app wiring + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import as blank for app wiring + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + _ "github.com/cosmos/cosmos-sdk/x/genutil" // import as blank for app wiring +) + +func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { + var accountKeeper authkeeper.AccountKeeper + + moduleConfigs := []configurator.ModuleOption{ + configurator.AccountsModule(), + configurator.AuthModule(), + configurator.BankModule(), + configurator.StakingModule(), + configurator.TxModule(), + configurator.ValidateModule(), + configurator.ConsensusModule(), + configurator.GenutilModule(), + configurator.MintModule(), + } + + startupCfg := integration.DefaultStartUpConfig(t) + app, err := integration.NewApp( + depinject.Configs(configurator.NewAppV2Config(moduleConfigs...), depinject.Supply(log.NewNopLogger())), + startupCfg, &accountKeeper) + require.NoError(t, err) + + ctx := app.StateLatestContext(t) + acc := accountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) + require.NotNil(t, acc) +} diff --git a/tests/integration/v2/protocolpool/module_test.go b/tests/integration/v2/protocolpool/module_test.go new file mode 100644 index 000000000000..be74371dac43 --- /dev/null +++ b/tests/integration/v2/protocolpool/module_test.go @@ -0,0 +1,178 @@ +package protocolpool + +import ( + "math/rand" + "testing" + "time" + + "github.com/stretchr/testify/require" + + "cosmossdk.io/depinject" + "cosmossdk.io/log" + "cosmossdk.io/math" + _ "cosmossdk.io/x/accounts" // import as blank for app wiring + _ "cosmossdk.io/x/bank" // import as blank for app wiring + bankkeeper "cosmossdk.io/x/bank/keeper" + _ "cosmossdk.io/x/consensus" // import as blank for app wiring + _ "cosmossdk.io/x/distribution" // import as blank for app wiring + _ "cosmossdk.io/x/mint" // import as blank for app wiring + "cosmossdk.io/x/mint/types" + _ "cosmossdk.io/x/protocolpool" // import as blank for app wiring + protocolpoolkeeper "cosmossdk.io/x/protocolpool/keeper" + protocolpooltypes "cosmossdk.io/x/protocolpool/types" + _ "cosmossdk.io/x/staking" // import as blank for app wiring + stakingkeeper "cosmossdk.io/x/staking/keeper" + + "github.com/cosmos/cosmos-sdk/tests/integration/v2" + "github.com/cosmos/cosmos-sdk/testutil/configurator" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/x/auth" // import as blank for app wiring + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import as blank for app wiring + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + _ "github.com/cosmos/cosmos-sdk/x/genutil" // import as blank for app wiring +) + +var moduleConfigs = []configurator.ModuleOption{ + configurator.AccountsModule(), + configurator.AuthModule(), + configurator.BankModule(), + configurator.StakingModule(), + configurator.TxModule(), + configurator.ValidateModule(), + configurator.ConsensusModule(), + configurator.GenutilModule(), + configurator.MintModule(), + configurator.DistributionModule(), + configurator.ProtocolPoolModule(), +} + +type fixture struct { + accountKeeper authkeeper.AccountKeeper + protocolpoolKeeper protocolpoolkeeper.Keeper + bankKeeper bankkeeper.Keeper + stakingKeeper *stakingkeeper.Keeper +} + +// TestWithdrawAnytime tests if withdrawing funds many times vs withdrawing funds once +// yield the same end balance. +func TestWithdrawAnytime(t *testing.T) { + res := fixture{} + + startupCfg := integration.DefaultStartUpConfig(t) + startupCfg.HeaderService = &integration.HeaderService{} + + app, err := integration.NewApp( + depinject.Configs(configurator.NewAppV2Config(moduleConfigs...), depinject.Supply(log.NewNopLogger())), + startupCfg, &res.accountKeeper, &res.protocolpoolKeeper, &res.bankKeeper, &res.stakingKeeper) + require.NoError(t, err) + + ctx := app.StateLatestContext(t) + acc := res.accountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) + require.NotNil(t, acc) + + testAddrs := simtestutil.AddTestAddrs(res.bankKeeper, res.stakingKeeper, ctx, 5, math.NewInt(1)) + testAddr0Str, err := res.accountKeeper.AddressCodec().BytesToString(testAddrs[0]) + require.NoError(t, err) + + msgServer := protocolpoolkeeper.NewMsgServerImpl(res.protocolpoolKeeper) + _, err = msgServer.CreateContinuousFund( + ctx, + &protocolpooltypes.MsgCreateContinuousFund{ + Authority: res.protocolpoolKeeper.GetAuthority(), + Recipient: testAddr0Str, + Percentage: math.LegacyMustNewDecFromStr("0.5"), + }, + ) + require.NoError(t, err) + + // increase the community pool by a bunch + for i := 0; i < 30; i++ { + _, state := app.Deliver(t, ctx, nil) + _, err = app.Commit(state) + require.NoError(t, err) + + headerInfo := integration.HeaderInfoFromContext(ctx) + headerInfo.Time = headerInfo.Time.Add(time.Minute) + ctx = integration.SetHeaderInfo(ctx, headerInfo) + + // withdraw funds randomly, but it must always land on the same end balance + if rand.Intn(100) > 50 { + _, err = msgServer.WithdrawContinuousFund(ctx, &protocolpooltypes.MsgWithdrawContinuousFund{ + RecipientAddress: testAddr0Str, + }) + require.NoError(t, err) + } + } + + pool, err := res.protocolpoolKeeper.GetCommunityPool(ctx) + require.NoError(t, err) + require.True(t, pool.IsAllGT(sdk.NewCoins(sdk.NewInt64Coin("stake", 100000)))) + + _, err = msgServer.WithdrawContinuousFund(ctx, &protocolpooltypes.MsgWithdrawContinuousFund{ + RecipientAddress: testAddr0Str, + }) + require.NoError(t, err) + + endBalance := res.bankKeeper.GetBalance(ctx, testAddrs[0], sdk.DefaultBondDenom) + require.Equal(t, "11883031stake", endBalance.String()) +} + +// TestExpireInTheMiddle tests if a continuous fund that expires without anyone +// calling the withdraw function, the funds are still distributed correctly. +func TestExpireInTheMiddle(t *testing.T) { + res := fixture{} + + startupCfg := integration.DefaultStartUpConfig(t) + startupCfg.HeaderService = &integration.HeaderService{} + + app, err := integration.NewApp( + depinject.Configs(configurator.NewAppV2Config(moduleConfigs...), depinject.Supply(log.NewNopLogger())), + startupCfg, &res.accountKeeper, &res.protocolpoolKeeper, &res.bankKeeper, &res.stakingKeeper) + require.NoError(t, err) + + ctx := app.StateLatestContext(t) + + acc := res.accountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) + require.NotNil(t, acc) + + testAddrs := simtestutil.AddTestAddrs(res.bankKeeper, res.stakingKeeper, ctx, 5, math.NewInt(1)) + testAddr0Str, err := res.accountKeeper.AddressCodec().BytesToString(testAddrs[0]) + require.NoError(t, err) + + msgServer := protocolpoolkeeper.NewMsgServerImpl(res.protocolpoolKeeper) + + headerInfo := integration.HeaderInfoFromContext(ctx) + expirationTime := headerInfo.Time.Add(time.Minute * 2) + _, err = msgServer.CreateContinuousFund( + ctx, + &protocolpooltypes.MsgCreateContinuousFund{ + Authority: res.protocolpoolKeeper.GetAuthority(), + Recipient: testAddr0Str, + Percentage: math.LegacyMustNewDecFromStr("0.1"), + Expiry: &expirationTime, + }, + ) + require.NoError(t, err) + + // increase the community pool by a bunch + for i := 0; i < 30; i++ { + _, state := app.Deliver(t, ctx, nil) + _, err = app.Commit(state) + require.NoError(t, err) + + headerInfo := integration.HeaderInfoFromContext(ctx) + headerInfo.Time = headerInfo.Time.Add(time.Minute) + ctx = integration.SetHeaderInfo(ctx, headerInfo) + require.NoError(t, err) + } + + _, err = msgServer.WithdrawContinuousFund(ctx, &protocolpooltypes.MsgWithdrawContinuousFund{ + RecipientAddress: testAddr0Str, + }) + require.NoError(t, err) + + endBalance := res.bankKeeper.GetBalance(ctx, testAddrs[0], sdk.DefaultBondDenom) + require.Equal(t, "237661stake", endBalance.String()) +} From a7372d932ebdc9dbc947f2040066eff4a37674bc Mon Sep 17 00:00:00 2001 From: RiceChuan Date: Mon, 16 Dec 2024 07:50:19 +0800 Subject: [PATCH 57/62] docs: Spelling error. (#22872) Signed-off-by: RiceChuan --- client/tx/tx.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/tx/tx.go b/client/tx/tx.go index 4aa34b0a931c..8f3c7bcd229c 100644 --- a/client/tx/tx.go +++ b/client/tx/tx.go @@ -241,10 +241,10 @@ func checkMultipleSigners(tx authsigning.Tx) error { return nil } -// Sign signs a given tx with a named key. The bytes signed over are canconical. +// Sign signs a given tx with a named key. The bytes signed over are canonical. // The resulting signature will be added to the transaction builder overwriting the previous // ones if overwrite=true (otherwise, the signature will be appended). -// Signing a transaction with mutltiple signers in the DIRECT mode is not supported and will +// Signing a transaction with multiple signers in the DIRECT mode is not supported and will // return an error. // An error is returned upon failure. func Sign(ctx client.Context, txf Factory, name string, txBuilder client.TxBuilder, overwriteSig bool) error { From 6500a72e58ef9ad64776b34abd7bbabcda8c3cdd Mon Sep 17 00:00:00 2001 From: Andi <36215014+ChengenH@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:18:47 +0800 Subject: [PATCH 58/62] docs: fix spelling errors in the description (#22874) Signed-off-by: ChengenH --- baseapp/abci.go | 2 +- codec/collections.go | 2 +- server/v2/cometbft/abci.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/baseapp/abci.go b/baseapp/abci.go index 608ea1e70c88..3b956b4cef01 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -412,7 +412,7 @@ func (app *BaseApp) PrepareProposal(req *abci.PrepareProposalRequest) (resp *abc // Abort any running OE so it cannot overlap with `PrepareProposal`. This could happen if optimistic // `internalFinalizeBlock` from previous round takes a long time, but consensus has moved on to next round. - // Overlap is undesirable, since `internalFinalizeBlock` and `PrepareProoposal` could share access to + // Overlap is undesirable, since `internalFinalizeBlock` and `PrepareProposal` could share access to // in-memory structs depending on application implementation. // No-op if OE is not enabled. // Similar call to Abort() is done in `ProcessProposal`. diff --git a/codec/collections.go b/codec/collections.go index d21a9a92484d..ab6e91ad26fa 100644 --- a/codec/collections.go +++ b/codec/collections.go @@ -402,7 +402,7 @@ func protoCol(f protoreflect.FieldDescriptor) schema.Field { case protoreflect.EnumKind: // TODO: support enums col.Kind = schema.EnumKind - // use the full name to avoid collissions + // use the full name to avoid collisions col.ReferencedType = string(f.Enum().FullName()) col.ReferencedType = strings.ReplaceAll(col.ReferencedType, ".", "_") case protoreflect.MessageKind: diff --git a/server/v2/cometbft/abci.go b/server/v2/cometbft/abci.go index f97d6fa43b36..31e197737fd8 100644 --- a/server/v2/cometbft/abci.go +++ b/server/v2/cometbft/abci.go @@ -374,7 +374,7 @@ func (c *consensus[T]) PrepareProposal( // Abort any running OE so it cannot overlap with `PrepareProposal`. This could happen if optimistic // `internalFinalizeBlock` from previous round takes a long time, but consensus has moved on to next round. - // Overlap is undesirable, since `internalFinalizeBlock` and `PrepareProoposal` could share access to + // Overlap is undesirable, since `internalFinalizeBlock` and `PrepareProposal` could share access to // in-memory structs depending on application implementation. // No-op if OE is not enabled. // Similar call to Abort() is done in `ProcessProposal`. From 5761530e50b40f8a5e6f0d8b94b0851cf5327818 Mon Sep 17 00:00:00 2001 From: lilasxie Date: Mon, 16 Dec 2024 16:37:47 +0800 Subject: [PATCH 59/62] docs: correct `Continous` spelling to `Continuous` (#22880) --- .../lockup/continuous_locking_account_test.go | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/x/accounts/defaults/lockup/continuous_locking_account_test.go b/x/accounts/defaults/lockup/continuous_locking_account_test.go index 9add06fefd8f..475d38fceaaf 100644 --- a/x/accounts/defaults/lockup/continuous_locking_account_test.go +++ b/x/accounts/defaults/lockup/continuous_locking_account_test.go @@ -16,7 +16,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -func setupContinousAccount(t *testing.T, ctx context.Context, ss store.KVStoreService) *ContinuousLockingAccount { +func setupContinuousAccount(t *testing.T, ctx context.Context, ss store.KVStoreService) *ContinuousLockingAccount { t.Helper() deps := makeMockDependencies(ss) owner := "owner" //nolint:goconst // adding constants for this would impede readability @@ -33,13 +33,13 @@ func setupContinousAccount(t *testing.T, ctx context.Context, ss store.KVStoreSe return acc } -func TestContinousAccountDelegate(t *testing.T) { +func TestContinuousAccountDelegate(t *testing.T) { ctx, ss := newMockContext(t) sdkCtx := sdk.NewContext(nil, true, log.NewNopLogger()).WithContext(ctx).WithHeaderInfo(header.Info{ Time: time.Now(), }) - acc := setupContinousAccount(t, sdkCtx, ss) + acc := setupContinuousAccount(t, sdkCtx, ss) _, err := acc.Delegate(sdkCtx, &lockuptypes.MsgDelegate{ Sender: "owner", ValidatorAddress: "val_address", @@ -75,13 +75,13 @@ func TestContinousAccountDelegate(t *testing.T) { require.True(t, delFree.Equal(math.NewInt(1))) } -func TestContinousAccountUndelegate(t *testing.T) { +func TestContinuousAccountUndelegate(t *testing.T) { ctx, ss := newMockContext(t) sdkCtx := sdk.NewContext(nil, true, log.NewNopLogger()).WithContext(ctx).WithHeaderInfo(header.Info{ Time: time.Now(), }) - acc := setupContinousAccount(t, sdkCtx, ss) + acc := setupContinuousAccount(t, sdkCtx, ss) // Delegate first _, err := acc.Delegate(sdkCtx, &lockuptypes.MsgDelegate{ Sender: "owner", @@ -146,13 +146,13 @@ func TestContinousAccountUndelegate(t *testing.T) { require.True(t, delFree.Equal(math.ZeroInt())) } -func TestContinousAccountSendCoins(t *testing.T) { +func TestContinuousAccountSendCoins(t *testing.T) { ctx, ss := newMockContext(t) sdkCtx := sdk.NewContext(nil, true, log.NewNopLogger()).WithContext(ctx).WithHeaderInfo(header.Info{ Time: time.Now(), }) - acc := setupContinousAccount(t, sdkCtx, ss) + acc := setupContinuousAccount(t, sdkCtx, ss) _, err := acc.SendCoins(sdkCtx, &lockuptypes.MsgSend{ Sender: "owner", ToAddress: "receiver", @@ -176,13 +176,13 @@ func TestContinousAccountSendCoins(t *testing.T) { require.NoError(t, err) } -func TestContinousAccountWithdrawUnlockedCoins(t *testing.T) { +func TestContinuousAccountWithdrawUnlockedCoins(t *testing.T) { ctx, ss := newMockContext(t) sdkCtx := sdk.NewContext(nil, true, log.NewNopLogger()).WithContext(ctx).WithHeaderInfo(header.Info{ Time: time.Now(), }) - acc := setupContinousAccount(t, sdkCtx, ss) + acc := setupContinuousAccount(t, sdkCtx, ss) _, err := acc.WithdrawUnlockedCoins(sdkCtx, &lockuptypes.MsgWithdraw{ Withdrawer: "owner", ToAddress: "receiver", @@ -206,13 +206,13 @@ func TestContinousAccountWithdrawUnlockedCoins(t *testing.T) { require.NoError(t, err) } -func TestContinousAccountGetLockCoinInfo(t *testing.T) { +func TestContinuousAccountGetLockCoinInfo(t *testing.T) { ctx, ss := newMockContext(t) sdkCtx := sdk.NewContext(nil, true, log.NewNopLogger()).WithContext(ctx).WithHeaderInfo(header.Info{ Time: time.Now(), }) - acc := setupContinousAccount(t, sdkCtx, ss) + acc := setupContinuousAccount(t, sdkCtx, ss) unlocked, locked, err := acc.GetLockCoinsInfo(sdkCtx, time.Now()) require.NoError(t, err) From 8ff9f48bb49ac8b82faff9b9899dd954283159de Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 16 Dec 2024 10:04:23 +0100 Subject: [PATCH 60/62] chore: package release prep + update UPGRADING.md (#22864) --- README.md | 55 ++++++++++++++----------- RELEASE_PROCESS.md | 8 +++- UPGRADING.md | 14 +++++++ collections/CHANGELOG.md | 2 + core/testing/CHANGELOG.md | 3 ++ docs/build/building-modules/00-intro.md | 2 + schema/CHANGELOG.md | 4 ++ store/CHANGELOG.md | 21 ++++++++-- x/group/go.mod | 6 --- x/group/testutil/app_config.go | 1 - 10 files changed, 80 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 36883246e05f..18e635236824 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,6 @@ The Cosmos SDK is a framework for building blockchain applications. [CometBFT (BFT Consensus)](https://github.com/cometbft/cometbft) and the Cosmos SDK are written in the Go programming language. Cosmos SDK is used to build [Gaia](https://github.com/cosmos/gaia), the implementation of the Cosmos Hub. -**WARNING**: The Cosmos SDK has mostly stabilized, but we are still making some breaking changes. - **Note**: Always use the latest maintained [Go](https://go.dev/dl) version for building Cosmos SDK applications. ## Quick Start @@ -64,16 +62,23 @@ The IBC module for the Cosmos SDK has its own [cosmos/ibc-go repository](https:/ The version matrix below shows which versions of the Cosmos SDK, modules and libraries are compatible with each other. +> [!IMPORTANT] +> Cosmos SDK `v2` corresponds to a chain using the `runtime/v2`, `server/v2/**`, and `store/v2` packages. The `github.com/cosmos/cosmos-sdk` module has a less important role in a `v2` chain. + #### Core Dependencies Core dependencies are the core libraries that an application may depend on. Core dependencies not mentioned here as compatible across all maintained SDK versions. +See an exhaustive list of core dependencies at [cosmossdk.io](https://cosmossdk.io). -| Cosmos SDK | cosmossdk.io/core | cosmossdk.io/api | cosmossdk.io/x/tx | -| ---------- | ----------------- | ---------------- | ----------------- | -| 0.52.z | 1.y.z | 0.8.z | 1.y.z | -| 0.50.z | 0.11.z | 0.7.z | 0.13.z | -| 0.47.z | 0.5.z | 0.3.z | N/A | +| Version | v2 | 0.52.z | 0.50.z | 0.47.z | +| ------------------------ | ----- | --------- | -------------- | ------- | +| cosmossdk.io/core | 1.y.z | 1.y.z | 0.11.z | 0.5.z | +| cosmossdk.io/api | 0.8.z | 0.8.z | 0.7.z | 0.3.z | +| cosmossdk.io/x/tx | 1.y.z | 1.y.z | < 1.y.z | N/A | +| cosmossdk.io/store | N/A | >= 1.10.z | 1.0.0 >= 1.9.z | N/A | +| cosmossdk.io/store/v2 | 2.y.z | N/A | N/A | N/A | +| cosmossdk.io/collections | 1.y.z | 1.y.z | < 1.y.z | < 1.y.z | #### Module Dependencies @@ -83,24 +88,24 @@ Module Dependencies are the modules that an application may depend on and which > X signals that the module was not spun out into its own go.mod file. > N/A signals that the module was not available in the Cosmos SDK at that time. -| Cosmos SDK | 0.50.z | 0.52.z | -| --------------------------- | ------ | ------ | -| cosmossdk.io/x/accounts | N/A | 0.2.z | -| cosmossdk.io/x/bank | X | 0.2.z | -| cosmossdk.io/x/circuit | 0.1.z | 0.2.z | -| cosmossdk.io/x/consensus | X | 0.2.z | -| cosmossdk.io/x/distribution | X | 0.2.z | -| cosmossdk.io/x/epochs | N/A | 0.2.z | -| cosmossdk.io/x/evidence | 0.1.z | 0.2.z | -| cosmossdk.io/x/feegrant | 0.1.z | 0.2.z | -| cosmossdk.io/x/gov | X | 0.2.z | -| cosmossdk.io/x/group | X | 0.2.z | -| cosmossdk.io/x/mint | X | 0.2.z | -| cosmossdk.io/x/nft | 0.1.z | 0.2.z | -| cosmossdk.io/x/protocolpool | N/A | 0.2.z | -| cosmossdk.io/x/slashing | X | 0.2.z | -| cosmossdk.io/x/staking | X | 0.2.z | -| cosmossdk.io/x/upgrade | 0.1.z | 0.2.z | +| Cosmos SDK | v2 | 0.52.z | 0.50.z | +| --------------------------- | ----- | ------ | ------ | +| cosmossdk.io/x/accounts | 0.2.z | 0.2.z | N/A | +| cosmossdk.io/x/bank | 0.2.z | 0.2.z | X | +| cosmossdk.io/x/circuit | 0.2.z | 0.2.z | 0.1.z | +| cosmossdk.io/x/consensus | 0.2.z | 0.2.z | X | +| cosmossdk.io/x/distribution | 0.2.z | 0.2.z | X | +| cosmossdk.io/x/epochs | 0.2.z | 0.2.z | N/A | +| cosmossdk.io/x/evidence | 0.2.z | 0.2.z | 0.1.z | +| cosmossdk.io/x/feegrant | 0.2.z | 0.2.z | 0.1.z | +| cosmossdk.io/x/gov | 0.2.z | 0.2.z | X | +| cosmossdk.io/x/group | 0.2.z | 0.2.z | X | +| cosmossdk.io/x/mint | 0.2.z | 0.2.z | X | +| cosmossdk.io/x/nft | 0.2.z | 0.2.z | 0.1.z | +| cosmossdk.io/x/protocolpool | 0.2.z | 0.2.z | N/A | +| cosmossdk.io/x/slashing | 0.2.z | 0.2.z | X | +| cosmossdk.io/x/staking | 0.2.z | 0.2.z | X | +| cosmossdk.io/x/upgrade | 0.2.z | 0.2.z | 0.1.z | ## Disambiguation diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index d3b773e8dce4..ab1b2fa45783 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md @@ -236,6 +236,10 @@ Those modules can be considered as part of the Cosmos SDK, but features and impr * When a module is supposed to be used in an app (e.g `x/` modules), due to the dependency on the SDK, tagging a new version of a module must be done from a Cosmos SDK release branch. A compatibility matrix must be provided in the `README.md` of that module with the corresponding versions. * Modules that import the SDK but do not need to be imported in an app (`e.g. cosmovisor`) must be released from the `main` branch and follow the process defined below. +> [!IMPORTANT] +> A module depending on a non stabilized version of `github.com/cosmos/cosmos-sdk` (any version prior to the removal of baseapp, runtime, server) SHOULD NOT be tagged following semver. +> For instance, modules are still using 0ver until the main `github.com/cosmos/cosmos-sdk` has stabilized. + ### Modules that do not depend on the Cosmos SDK Modules that do not depend on the Cosmos SDK can be released at any time from the `main` branch of the Cosmos SDK repository. @@ -246,7 +250,9 @@ The Cosmos SDK uses a monorepo structure with multiple Go modules. Some componen Here's the strategy for managing this structure: -All modules that do not depend on the Cosmos SDK and tagged from main in a release branch must be removed from the release branch. +All modules that do not depend on the Cosmos SDK and tagged from main in a release branch **must be removed from the release branch**. + +There are two exceptions to this rule, due to the stabilization of core v1: `cosmossdk.io/x/tx` and `cosmossdk.io/store` are still tagged from the `release/v0.50.x` branch for `v0.50.x` releases. ### Rationale diff --git a/UPGRADING.md b/UPGRADING.md index 1f9ae2647d02..4e6c67a615d7 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -498,6 +498,16 @@ This change was made to allow legacy proposals to be compatible with server/v2. If you wish to migrate to server/v2, you should update your proposal handler to take in a `context.Context` and use services. On the other hand, if you wish to keep using baseapp, simply unwrap the sdk context in your proposal handler. +#### `x/mint` + +The `x/mint` module has been updated to work with a mint function [`MintFn`](https://docs.cosmos.network/v0.52/build/modules/mint#mintfn). + +When using the default inflation calculation function and runtime, no change is required. The depinject configuration of mint automatically sets it if none is provided. However, when not using runtime, the mint function must be set in on the mint keeper: + +```diff ++ mintKeeper.SetMintFn(keeper.DefaultMintFn(types.DefaultInflationCalculationFn, stakingKeeper, mintKeeper)) +``` + #### `x/protocolpool` Introducing a new `x/protocolpool` module to handle community pool funds. Its store must be added while upgrading to v0.52.x. @@ -532,6 +542,10 @@ storetypes.StoreUpgrades{ Introducing `x/validate` a module that is solely used for registering default ante/post handlers and global tx validators when using runtime and runtime/v2. If you wish to set your custom ante/post handlers, no need to use this module. You can however always extend them by adding extra tx validators (see `x/validate` documentation). +#### `tools/benchmark` + +Introducing [`tools/benchmark`](https://github.com/cosmos/cosmos-sdk/tree/main/tools/benchmark) a Cosmos SDK module for benchmarking your chain. It is a standalone module that can be added to your chain to stress test it. This module should NOT be added in a production environment. + ## [v0.50.x](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.0-alpha.0) ### Migration to CometBFT (Part 2) diff --git a/collections/CHANGELOG.md b/collections/CHANGELOG.md index 142263bc5050..b58e3190a56b 100644 --- a/collections/CHANGELOG.md +++ b/collections/CHANGELOG.md @@ -31,6 +31,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] +## [v1.0.0](https://github.com/cosmos/cosmos-sdk/releases/tag/collections%2Fv1.0.0) + ### Features * [#22641](https://github.com/cosmos/cosmos-sdk/pull/22641) Add reverse iterator support for `Triple`. diff --git a/core/testing/CHANGELOG.md b/core/testing/CHANGELOG.md index 6975f4ddb716..52646803689d 100644 --- a/core/testing/CHANGELOG.md +++ b/core/testing/CHANGELOG.md @@ -36,3 +36,6 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] +## [v0.0.1](https://github.com/cosmos/cosmos-sdk/releases/tag/core/testing%2Fv0.0.1) + +* Initial tag. diff --git a/docs/build/building-modules/00-intro.md b/docs/build/building-modules/00-intro.md index bd8e78a42380..10b21db77e18 100644 --- a/docs/build/building-modules/00-intro.md +++ b/docs/build/building-modules/00-intro.md @@ -63,6 +63,8 @@ While there are no definitive guidelines for writing modules, here are some impo The SDK provides a set of APIs that a module can implement, and a set of services that a module can use. Those APIs are defined in the `cosmossdk.io/core/appmodule` package, and are used to defined the module capabilities, which is used by `runtime` during the wiring of the application. +Whenever possible, a module should strive to use only the core APIs (`cosmossdk.io/core`) and not import the `github.com/cosmos/cosmos-sdk` module. This makes modules reusable accross SDK versions and reduces the risk of breaking changes. + Learn more about the core APIs for modules [here](../../learn/advanced/02-core.md). ## Main Components of Cosmos SDK Modules diff --git a/schema/CHANGELOG.md b/schema/CHANGELOG.md index 0c3c9d03857f..1ae1d7207eea 100644 --- a/schema/CHANGELOG.md +++ b/schema/CHANGELOG.md @@ -35,3 +35,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ # Changelog ## [Unreleased] + +## [v1.0.0](https://github.com/cosmos/cosmos-sdk/releases/tag/schema%2Fv1.0.0) + +Introduce `cosmossdk.io/schema` module. diff --git a/store/CHANGELOG.md b/store/CHANGELOG.md index 12e6c613d2ca..4d170bff0edc 100644 --- a/store/CHANGELOG.md +++ b/store/CHANGELOG.md @@ -23,16 +23,31 @@ Ref: https://keepachangelog.com/en/1.0.0/ # Changelog +> **Disclaimer**: Numbers from v1.0.x to v1.9.x are reserved for the v0.50 line. +> cosmossdk.io/store compatible with the v0.50 line is tagged from release/v0.50.x +> Numbers from v1.10.x onwards are reserved for the 0.52+ line. +> With Cosmos SDK v2 (with store/v2), CometBFT has been pushed to the boundaries, so issues like this +> are not expected to happen again. + ## [Unreleased] +## v1.10.0 (December 13, 2024) + ### Improvements -* (store) [#22305](https://github.com/cosmos/cosmos-sdk/pull/22305) Add `LatestVersion` to the `Committer` interface to get the latest version of the store. +* [#22305](https://github.com/cosmos/cosmos-sdk/pull/22305) Add `LatestVersion` to the `Committer` interface to get the latest version of the store. +* Upgrade IAVL to IAVL v1.3.x. ### Bug Fixes -* (store) [#20425](https://github.com/cosmos/cosmos-sdk/pull/20425) Fix nil pointer panic when query historical state where a new store don't exist. -* (store) [#20644](https://github.com/cosmos/cosmos-sdk/pull/20644) Avoid nil error on not exhausted payload stream. +* [#20425](https://github.com/cosmos/cosmos-sdk/pull/20425) Fix nil pointer panic when query historical state where a new store don't exist. +* [#20644](https://github.com/cosmos/cosmos-sdk/pull/20644) Avoid nil error on not exhausted payload stream. + +## v1.1.1 (September 06, 2024) + +### Improvements + +* [#21574](https://github.com/cosmos/cosmos-sdk/pull/21574) Upgrade IAVL to IAVL 1.2.0. ## v1.1.0 (March 20, 2024) diff --git a/x/group/go.mod b/x/group/go.mod index f03b588731d9..55ede2550228 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -13,7 +13,6 @@ require ( cosmossdk.io/math v1.4.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/accounts v0.0.0-20240913065641-0064ccbce64e - cosmossdk.io/x/authz v0.0.0-00010101000000-000000000000 cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a @@ -187,13 +186,8 @@ replace ( cosmossdk.io/client/v2 => ../../client/v2 cosmossdk.io/store => ../../store cosmossdk.io/x/accounts => ../accounts - cosmossdk.io/x/accounts/defaults/base => ../accounts/defaults/base - cosmossdk.io/x/accounts/defaults/lockup => ../accounts/defaults/lockup - cosmossdk.io/x/accounts/defaults/multisig => ../accounts/defaults/multisig - cosmossdk.io/x/authz => ../authz cosmossdk.io/x/bank => ../bank cosmossdk.io/x/consensus => ../consensus - cosmossdk.io/x/distribution => ../distribution cosmossdk.io/x/epochs => ../epochs cosmossdk.io/x/gov => ../gov cosmossdk.io/x/mint => ../mint diff --git a/x/group/testutil/app_config.go b/x/group/testutil/app_config.go index 017808f605d7..7d5c25768057 100644 --- a/x/group/testutil/app_config.go +++ b/x/group/testutil/app_config.go @@ -2,7 +2,6 @@ package testutil import ( _ "cosmossdk.io/x/accounts" // import as blank for app wiring - _ "cosmossdk.io/x/authz" // import as blank for app wiring _ "cosmossdk.io/x/bank" // import as blank for app wiring _ "cosmossdk.io/x/consensus" // import as blank for app wiring _ "cosmossdk.io/x/group/module" // import as blank for app wiring From 2c2249ffd3a9040e361757896acb03130a83dfc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 09:06:36 +0000 Subject: [PATCH 61/62] build(deps): Bump cosmossdk.io/x/tx from 1.0.0-alpha.2 to 1.0.0-alpha.3 (#22873) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- runtime/v2/go.mod | 2 +- runtime/v2/go.sum | 4 ++-- server/v2/cometbft/go.mod | 2 +- server/v2/cometbft/go.sum | 4 ++-- systemtests/go.mod | 4 ++-- systemtests/go.sum | 16 ++++++++-------- tests/systemtests/go.mod | 4 ++-- tests/systemtests/go.sum | 16 ++++++++-------- tools/benchmark/go.mod | 2 +- tools/benchmark/go.sum | 4 ++-- tools/confix/go.mod | 2 +- tools/confix/go.sum | 4 ++-- tools/cosmovisor/go.mod | 2 +- tools/cosmovisor/go.sum | 4 ++-- tools/hubl/go.mod | 2 +- tools/hubl/go.sum | 4 ++-- x/accounts/defaults/base/go.mod | 2 +- x/accounts/defaults/base/go.sum | 4 ++-- x/accounts/defaults/lockup/go.mod | 2 +- x/accounts/defaults/lockup/go.sum | 4 ++-- x/accounts/defaults/multisig/go.mod | 2 +- x/accounts/defaults/multisig/go.sum | 4 ++-- x/accounts/go.mod | 2 +- x/accounts/go.sum | 4 ++-- x/authz/go.mod | 2 +- x/authz/go.sum | 4 ++-- x/bank/go.mod | 2 +- x/bank/go.sum | 4 ++-- x/circuit/go.mod | 2 +- x/circuit/go.sum | 4 ++-- x/consensus/go.mod | 2 +- x/consensus/go.sum | 4 ++-- x/distribution/go.mod | 2 +- x/distribution/go.sum | 4 ++-- x/epochs/go.mod | 2 +- x/epochs/go.sum | 4 ++-- x/evidence/go.mod | 2 +- x/evidence/go.sum | 4 ++-- x/mint/go.mod | 2 +- x/mint/go.sum | 4 ++-- x/nft/go.mod | 2 +- x/nft/go.sum | 4 ++-- x/protocolpool/go.mod | 2 +- x/protocolpool/go.sum | 4 ++-- x/slashing/go.mod | 2 +- x/slashing/go.sum | 4 ++-- x/staking/go.mod | 2 +- x/staking/go.sum | 4 ++-- 50 files changed, 89 insertions(+), 89 deletions(-) diff --git a/go.mod b/go.mod index 4d0e521ef960..bfcf507bfaac 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 - cosmossdk.io/x/tx v1.0.0-alpha.2 + cosmossdk.io/x/tx v1.0.0-alpha.3 github.com/99designs/keyring v1.2.2 github.com/bgentry/speakeasy v0.2.0 github.com/cometbft/cometbft v1.0.0-rc2.0.20241127125717-4ce33b646ac9 diff --git a/go.sum b/go.sum index f1af3b4f4f52..73bf461b7b37 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/runtime/v2/go.mod b/runtime/v2/go.mod index a0975546c9eb..bf07d1b02849 100644 --- a/runtime/v2/go.mod +++ b/runtime/v2/go.mod @@ -19,7 +19,7 @@ require ( cosmossdk.io/server/v2/appmanager v0.0.0-00010101000000-000000000000 cosmossdk.io/server/v2/stf v0.0.0-00010101000000-000000000000 cosmossdk.io/store/v2 v2.0.0-00010101000000-000000000000 - cosmossdk.io/x/tx v1.0.0-alpha.2 + cosmossdk.io/x/tx v1.0.0-alpha.3 github.com/cosmos/gogoproto v1.7.0 github.com/stretchr/testify v1.10.0 google.golang.org/grpc v1.68.1 diff --git a/runtime/v2/go.sum b/runtime/v2/go.sum index adb23b18780e..7966515ebb89 100644 --- a/runtime/v2/go.sum +++ b/runtime/v2/go.sum @@ -14,8 +14,8 @@ cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod index 87bc8fcf1a99..f9200593be85 100644 --- a/server/v2/cometbft/go.mod +++ b/server/v2/cometbft/go.mod @@ -49,7 +49,7 @@ require ( cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/server/v2/cometbft/go.sum b/server/v2/cometbft/go.sum index ecadd947bdef..74bb315ef159 100644 --- a/server/v2/cometbft/go.sum +++ b/server/v2/cometbft/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/systemtests/go.mod b/systemtests/go.mod index 9e6a46461706..6dd0621a1350 100644 --- a/systemtests/go.mod +++ b/systemtests/go.mod @@ -22,7 +22,7 @@ require ( cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/store v1.1.0 // indirect - cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect @@ -149,7 +149,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect golang.org/x/crypto v0.31.0 // indirect - golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect + golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect diff --git a/systemtests/go.sum b/systemtests/go.sum index fe1ffbe02a9b..74ccd8271e8a 100644 --- a/systemtests/go.sum +++ b/systemtests/go.sum @@ -16,8 +16,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= -cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894 h1:kHEvzVqpNv/9pnaEPBsgE/FMc+cVmWjSsInRufkZkpQ= -cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894/go.mod h1:Tb6/tpONmtL5qFdOMdv1pdvrtJNxcazZBoz04HB71ss= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= @@ -772,8 +772,8 @@ golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ss golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= -golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= 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= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -787,8 +787,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.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= @@ -920,8 +920,8 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= +golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= 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= diff --git a/tests/systemtests/go.mod b/tests/systemtests/go.mod index 0a56f317aedf..9048c0474bad 100644 --- a/tests/systemtests/go.mod +++ b/tests/systemtests/go.mod @@ -16,7 +16,7 @@ require ( cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/store v1.1.0 // indirect - cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect @@ -149,7 +149,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.12.0 // indirect golang.org/x/crypto v0.31.0 // indirect - golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect + golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/net v0.32.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect diff --git a/tests/systemtests/go.sum b/tests/systemtests/go.sum index 2192c5c4cfbe..5f9f9fb513b7 100644 --- a/tests/systemtests/go.sum +++ b/tests/systemtests/go.sum @@ -18,8 +18,8 @@ cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= cosmossdk.io/systemtests v1.0.0-rc.3 h1:W1ZdfHtWxbzRCiBwcMb1nMKkmUNyAcHapJOrfh1lX20= cosmossdk.io/systemtests v1.0.0-rc.3/go.mod h1:B3RY1tY/iwLjQ9MUTz+GsiXV9gEdS8mfUvSQtWUwaAo= -cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894 h1:kHEvzVqpNv/9pnaEPBsgE/FMc+cVmWjSsInRufkZkpQ= -cosmossdk.io/x/tx v0.13.3-0.20240419091757-db5906b1e894/go.mod h1:Tb6/tpONmtL5qFdOMdv1pdvrtJNxcazZBoz04HB71ss= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= @@ -774,8 +774,8 @@ golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ss golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= -golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= 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= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -789,8 +789,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.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= @@ -922,8 +922,8 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= +golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= 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= diff --git a/tools/benchmark/go.mod b/tools/benchmark/go.mod index 5e5cec640d64..e2d0cbed15cb 100644 --- a/tools/benchmark/go.mod +++ b/tools/benchmark/go.mod @@ -25,7 +25,7 @@ require ( cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/tools/benchmark/go.sum b/tools/benchmark/go.sum index 53463ab82492..cae75a20a657 100644 --- a/tools/benchmark/go.sum +++ b/tools/benchmark/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/tools/confix/go.mod b/tools/confix/go.mod index 7ed3d6815705..3aa8a6821c4a 100644 --- a/tools/confix/go.mod +++ b/tools/confix/go.mod @@ -21,7 +21,7 @@ require ( cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/store v1.1.1 // indirect - cosmossdk.io/x/tx v0.13.5 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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.1 // indirect diff --git a/tools/confix/go.sum b/tools/confix/go.sum index 11d2536db9bb..7aa02c13e83f 100644 --- a/tools/confix/go.sum +++ b/tools/confix/go.sum @@ -16,8 +16,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= -cosmossdk.io/x/tx v0.13.5 h1:FdnU+MdmFWn1pTsbfU0OCf2u6mJ8cqc1H4OMG418MLw= -cosmossdk.io/x/tx v0.13.5/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index f5c2dce34512..2e3e371f21c8 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -29,7 +29,7 @@ require ( cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/store v1.1.1 // indirect - cosmossdk.io/x/tx v0.13.5 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/tools/cosmovisor/go.sum b/tools/cosmovisor/go.sum index 2e56948e4141..d9cb21cfc90b 100644 --- a/tools/cosmovisor/go.sum +++ b/tools/cosmovisor/go.sum @@ -204,8 +204,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= -cosmossdk.io/x/tx v0.13.5 h1:FdnU+MdmFWn1pTsbfU0OCf2u6mJ8cqc1H4OMG418MLw= -cosmossdk.io/x/tx v0.13.5/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= 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= diff --git a/tools/hubl/go.mod b/tools/hubl/go.mod index 0268b07802f1..dc2fd3e229ae 100644 --- a/tools/hubl/go.mod +++ b/tools/hubl/go.mod @@ -21,7 +21,7 @@ require ( cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/store v1.1.1 // indirect - cosmossdk.io/x/tx v0.13.5 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/tools/hubl/go.sum b/tools/hubl/go.sum index 66a6d2a94a51..36a17dd47b5e 100644 --- a/tools/hubl/go.sum +++ b/tools/hubl/go.sum @@ -18,8 +18,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= -cosmossdk.io/x/tx v0.13.5 h1:FdnU+MdmFWn1pTsbfU0OCf2u6mJ8cqc1H4OMG418MLw= -cosmossdk.io/x/tx v0.13.5/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= diff --git a/x/accounts/defaults/base/go.mod b/x/accounts/defaults/base/go.mod index dece393fd520..fdb18cca2852 100644 --- a/x/accounts/defaults/base/go.mod +++ b/x/accounts/defaults/base/go.mod @@ -8,7 +8,7 @@ require ( cosmossdk.io/core v1.0.0-alpha.6 cosmossdk.io/depinject v1.1.0 cosmossdk.io/x/accounts v0.0.0-20240913065641-0064ccbce64e - cosmossdk.io/x/tx v1.0.0-alpha.2 + cosmossdk.io/x/tx v1.0.0-alpha.3 github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/gogoproto v1.7.0 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 diff --git a/x/accounts/defaults/base/go.sum b/x/accounts/defaults/base/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/accounts/defaults/base/go.sum +++ b/x/accounts/defaults/base/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/defaults/lockup/go.mod b/x/accounts/defaults/lockup/go.mod index 0534cdef7ef6..2dc11f2c7014 100644 --- a/x/accounts/defaults/lockup/go.mod +++ b/x/accounts/defaults/lockup/go.mod @@ -35,7 +35,7 @@ require ( cosmossdk.io/math v1.4.0 cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/accounts/defaults/lockup/go.sum b/x/accounts/defaults/lockup/go.sum index 53463ab82492..cae75a20a657 100644 --- a/x/accounts/defaults/lockup/go.sum +++ b/x/accounts/defaults/lockup/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/defaults/multisig/go.mod b/x/accounts/defaults/multisig/go.mod index 4425bf78a023..ba1c9c160ded 100644 --- a/x/accounts/defaults/multisig/go.mod +++ b/x/accounts/defaults/multisig/go.mod @@ -26,7 +26,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/accounts/defaults/multisig/go.sum b/x/accounts/defaults/multisig/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/accounts/defaults/multisig/go.sum +++ b/x/accounts/defaults/multisig/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index b1752791ac31..b2c1d94b7a92 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -9,7 +9,7 @@ require ( cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/depinject v1.1.0 cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 - cosmossdk.io/x/tx v1.0.0-alpha.2 + cosmossdk.io/x/tx v1.0.0-alpha.3 github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/gogoproto v1.7.0 github.com/spf13/cobra v1.8.1 diff --git a/x/accounts/go.sum b/x/accounts/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/authz/go.mod b/x/authz/go.mod index 76b9cc775c1f..a762b2fe2de2 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -12,7 +12,7 @@ require ( cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 - cosmossdk.io/x/tx v1.0.0-alpha.2 + cosmossdk.io/x/tx v1.0.0-alpha.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/gogoproto v1.7.0 diff --git a/x/authz/go.sum b/x/authz/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/bank/go.mod b/x/bank/go.mod index e6ab51efabdb..04010a834251 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -32,7 +32,7 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/core/testing v0.0.0-20241108153815-606544c7be7e cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/bank/go.sum b/x/bank/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index fe781e36ac2c..9aef5db125db 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -27,7 +27,7 @@ require ( cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/circuit/go.sum b/x/circuit/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/consensus/go.mod b/x/consensus/go.mod index 2b450f223fc8..d17d144dc8a4 100644 --- a/x/consensus/go.mod +++ b/x/consensus/go.mod @@ -30,7 +30,7 @@ require ( cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/consensus/go.sum b/x/consensus/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/consensus/go.sum +++ b/x/consensus/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 371467d7a20b..491199219b7a 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -31,7 +31,7 @@ require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/distribution/go.sum b/x/distribution/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/epochs/go.mod b/x/epochs/go.mod index 81e819e6d4c5..0ef67424de53 100644 --- a/x/epochs/go.mod +++ b/x/epochs/go.mod @@ -29,7 +29,7 @@ require ( cosmossdk.io/math v1.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/epochs/go.sum b/x/epochs/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/epochs/go.sum +++ b/x/epochs/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index 277b2221a183..d216fe0ab115 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -31,7 +31,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/evidence/go.sum b/x/evidence/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/mint/go.mod b/x/mint/go.mod index 401c781f143c..8276030c4729 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -32,7 +32,7 @@ require ( cosmossdk.io/schema v0.4.0 cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/mint/go.sum b/x/mint/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/nft/go.mod b/x/nft/go.mod index ea3a1d4a5425..b754dcf18764 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -29,7 +29,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/nft/go.sum b/x/nft/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index c6fecab24c31..2ba83bfb51e6 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -30,7 +30,7 @@ require ( cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index f4f508892a49..570a564c3e3d 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -32,7 +32,7 @@ require ( cosmossdk.io/log v1.5.0 // indirect cosmossdk.io/schema v0.4.0 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/slashing/go.sum b/x/slashing/go.sum index 8b9ef5de1c3d..e6ce3ad420eb 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= diff --git a/x/staking/go.mod b/x/staking/go.mod index 8982c11556ca..4eddd3f3c72f 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -31,7 +31,7 @@ require ( require ( buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.2-20240130113600-88ef6483f90f.1 // indirect cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91 // indirect - cosmossdk.io/x/tx v1.0.0-alpha.2 // indirect + cosmossdk.io/x/tx v1.0.0-alpha.3 // 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 diff --git a/x/staking/go.sum b/x/staking/go.sum index de52bdd1c15c..922863ae72ec 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -22,8 +22,8 @@ cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/schema v0.4.0 h1:TrBs5BUnGqniAwEBVsjiisrAk3h3DK/zHLU1O8fRnO0= cosmossdk.io/schema v0.4.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ= -cosmossdk.io/x/tx v1.0.0-alpha.2 h1:UW80FMm7B0fiAMsrfe5+HabSJ3XBg+tQa6/GK9prqWk= -cosmossdk.io/x/tx v1.0.0-alpha.2/go.mod h1:r4yTKSJ7ZCCR95YbBfY3nfvbgNw6m9F6f25efWYYQWo= +cosmossdk.io/x/tx v1.0.0-alpha.3 h1:+55/JFH5QRqnFhOI2heH3DKsaNL0RpXcJOQNzUvHiaQ= +cosmossdk.io/x/tx v1.0.0-alpha.3/go.mod h1:h4pQ/j6Gfu8goB1R3Jbl4qY4RjYVNAsoylcleTXdSRg= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= From 234cdc45f2a87243f706c32e5f9ef8a635f36d25 Mon Sep 17 00:00:00 2001 From: Marko Date: Mon, 16 Dec 2024 02:48:54 -0800 Subject: [PATCH 62/62] refactor(x/staking)!: removing unbonding queue index (#22795) --- api/cosmos/staking/v1beta1/staking.pulsar.go | 406 ++-- simapp/sim_test.go | 1 - .../staking/keeper/deterministic_test.go | 8 +- .../staking/keeper/msg_server_test.go | 1 - .../integration/staking/keeper/slash_test.go | 12 +- .../staking/keeper/unbonding_test.go | 460 ----- x/staking/CHANGELOG.md | 3 + x/staking/keeper/delegation.go | 50 +- x/staking/keeper/delegation_test.go | 30 +- x/staking/keeper/grpc_query.go | 1 - x/staking/keeper/keeper.go | 8 - x/staking/keeper/msg_server_test.go | 2 +- x/staking/keeper/slash.go | 4 +- x/staking/keeper/unbonding.go | 450 ----- x/staking/keeper/unbonding_test.go | 346 ---- x/staking/keeper/val_state_change.go | 15 - x/staking/keeper/validator.go | 21 +- x/staking/migrations/v6/keys.go | 3 + x/staking/migrations/v6/store.go | 3 + .../cosmos/staking/v1beta1/staking.proto | 2 +- x/staking/testutil/expected_keepers_mocks.go | 14 - x/staking/types/delegation.go | 46 +- x/staking/types/delegation_test.go | 14 +- x/staking/types/expected_keepers.go | 1 - x/staking/types/hooks.go | 9 - x/staking/types/keys.go | 4 - x/staking/types/staking.pb.go | 1721 +++++++++-------- 27 files changed, 1127 insertions(+), 2508 deletions(-) delete mode 100644 tests/integration/staking/keeper/unbonding_test.go delete mode 100644 x/staking/keeper/unbonding.go delete mode 100644 x/staking/keeper/unbonding_test.go diff --git a/api/cosmos/staking/v1beta1/staking.pulsar.go b/api/cosmos/staking/v1beta1/staking.pulsar.go index 6c301f72e05d..1453eb53c79d 100644 --- a/api/cosmos/staking/v1beta1/staking.pulsar.go +++ b/api/cosmos/staking/v1beta1/staking.pulsar.go @@ -15459,6 +15459,8 @@ type UnbondingDelegationEntry struct { // balance defines the tokens to receive at completion. Balance string `protobuf:"bytes,4,opt,name=balance,proto3" json:"balance,omitempty"` // Incrementing id that uniquely identifies this entry + // + // Deprecated: Do not use. UnbondingId uint64 `protobuf:"varint,5,opt,name=unbonding_id,json=unbondingId,proto3" json:"unbonding_id,omitempty"` // Strictly positive if this entry's unbonding has been stopped by external modules UnbondingOnHoldRefCount int64 `protobuf:"varint,6,opt,name=unbonding_on_hold_ref_count,json=unbondingOnHoldRefCount,proto3" json:"unbonding_on_hold_ref_count,omitempty"` @@ -15512,6 +15514,7 @@ func (x *UnbondingDelegationEntry) GetBalance() string { return "" } +// Deprecated: Do not use. func (x *UnbondingDelegationEntry) GetUnbondingId() uint64 { if x != nil { return x.UnbondingId @@ -16316,7 +16319,7 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, - 0x1f, 0x00, 0x22, 0x9b, 0x03, 0x0a, 0x18, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x1f, 0x00, 0x22, 0x9f, 0x03, 0x0a, 0x18, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, @@ -16335,208 +16338,209 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, - 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x62, - 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x1b, - 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x6c, - 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x6e, 0x48, 0x6f, - 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, - 0x22, 0x9f, 0x03, 0x0a, 0x11, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, - 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, - 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, - 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, - 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x44, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, - 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x3c, - 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, - 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x6e, - 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x04, 0xe8, 0xa0, - 0x1f, 0x01, 0x22, 0xdd, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, - 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x73, - 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, - 0x1f, 0x00, 0x22, 0xeb, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4f, 0x0a, - 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x98, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x45, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, - 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6e, - 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, - 0x6f, 0x6e, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x84, 0x01, 0x0a, 0x13, 0x6d, 0x69, 0x6e, - 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x54, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xf2, 0xde, 0x1f, 0x1a, 0x79, - 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x6d, 0x69, - 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, - 0x49, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x52, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, - 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, - 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x22, 0xa9, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, - 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xcd, 0x01, 0x0a, - 0x19, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x72, 0x65, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x72, 0x65, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x45, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0c, 0x75, 0x6e, 0x62, + 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, + 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, + 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x04, + 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x9f, 0x03, 0x0a, 0x11, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, + 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, - 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xc9, 0x01, 0x0a, - 0x14, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x72, 0x65, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x07, 0x65, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, - 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, - 0x6c, 0x12, 0x71, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x45, 0xc8, 0xde, - 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x11, 0x6e, - 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x41, 0xc8, 0xde, 0x1f, - 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, - 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x0d, 0x62, 0x6f, - 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, - 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x3a, 0x08, 0xe8, 0xa0, - 0x1f, 0x01, 0xf0, 0xa0, 0x1f, 0x01, 0x22, 0x5e, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, - 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2e, 0x61, 0x62, 0x63, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, - 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xd0, 0x02, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x73, 0x50, - 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x56, 0x0a, 0x0f, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, - 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, - 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x6e, - 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x56, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, - 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, - 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, - 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, 0x66, 0x65, 0x65, 0x3a, - 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x53, 0x0a, 0x19, 0x56, 0x61, 0x6c, - 0x41, 0x64, 0x64, 0x72, 0x73, 0x4f, 0x66, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, - 0x6e, 0x73, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2a, 0xb6, - 0x01, 0x0a, 0x0a, 0x42, 0x6f, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, - 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0f, 0x8a, 0x9d, 0x20, 0x0b, - 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x14, 0x42, - 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, - 0x44, 0x45, 0x44, 0x10, 0x01, 0x1a, 0x0c, 0x8a, 0x9d, 0x20, 0x08, 0x55, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x0d, - 0x8a, 0x9d, 0x20, 0x09, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, - 0x12, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4f, 0x4e, - 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0x0a, 0x8a, 0x9d, 0x20, 0x06, 0x42, 0x6f, 0x6e, 0x64, 0x65, - 0x64, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x2a, 0x5d, 0x0a, 0x0a, 0x49, 0x6e, 0x66, 0x72, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, - 0x13, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x57, 0x4e, - 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x42, 0xdc, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, - 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x50, 0x0a, + 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, + 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x44, 0x73, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xdd, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, + 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, + 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x44, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x07, + 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, 0xa0, + 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x98, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x68, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x62, 0x6f, 0x6e, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x84, 0x01, 0x0a, + 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x54, 0xc8, 0xde, 0x1f, 0x00, + 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, + 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xf2, + 0xde, 0x1f, 0x1a, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xd2, 0xb4, 0x2d, + 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0e, + 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x3a, 0x24, + 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, + 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, + 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, + 0x22, 0xcd, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, + 0x0a, 0x12, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x11, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, + 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, + 0x22, 0xc9, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x72, 0x65, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, + 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x01, 0x0a, + 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x71, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, + 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x45, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, + 0xde, 0x1f, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x42, 0x6f, 0x6e, 0x64, + 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x0d, 0x62, 0x6f, 0x6e, 0x64, + 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x41, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, + 0x1f, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, + 0x2a, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x3a, 0x08, 0xe8, 0xa0, 0x1f, 0x01, 0xf0, 0xa0, 0x1f, 0x01, 0x22, 0x5e, 0x0a, 0x10, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x46, + 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2e, 0x61, 0x62, 0x63, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xd0, 0x02, 0x0a, 0x19, 0x43, + 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x56, 0x0a, 0x0f, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x5f, + 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x6f, 0x6c, + 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x56, 0x0a, 0x0f, 0x6e, + 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, + 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, + 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x0a, 0x03, 0x66, + 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, + 0x66, 0x65, 0x65, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x53, 0x0a, + 0x19, 0x56, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x73, 0x4f, 0x66, 0x52, 0x6f, 0x74, 0x61, 0x74, + 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x18, 0xd2, + 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x73, 0x2a, 0xb6, 0x01, 0x0a, 0x0a, 0x42, 0x6f, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x2c, 0x0a, 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0f, + 0x8a, 0x9d, 0x20, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, + 0x26, 0x0a, 0x14, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, + 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x01, 0x1a, 0x0c, 0x8a, 0x9d, 0x20, 0x08, 0x55, + 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x49, 0x4e, 0x47, + 0x10, 0x02, 0x1a, 0x0d, 0x8a, 0x9d, 0x20, 0x09, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x22, 0x0a, 0x12, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0x0a, 0x8a, 0x9d, 0x20, 0x06, 0x42, + 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x2a, 0x5d, 0x0a, 0x0a, 0x49, + 0x6e, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, + 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x10, + 0x01, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x44, 0x4f, 0x57, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x42, 0xdc, 0x01, 0x0a, 0x1a, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/simapp/sim_test.go b/simapp/sim_test.go index 0fa1a5a472ca..a4fa3cd02d22 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -100,7 +100,6 @@ func TestAppImportExport(t *testing.T) { skipPrefixes := map[string][][]byte{ stakingtypes.StoreKey: { stakingtypes.UnbondingQueueKey, stakingtypes.RedelegationQueueKey, stakingtypes.ValidatorQueueKey, - stakingtypes.UnbondingIDKey, stakingtypes.UnbondingIndexKey, stakingtypes.UnbondingTypeKey, }, authzkeeper.StoreKey: {authzkeeper.GrantQueuePrefix}, feegrant.StoreKey: {feegrant.FeeAllowanceQueueKeyPrefix}, diff --git a/tests/integration/staking/keeper/deterministic_test.go b/tests/integration/staking/keeper/deterministic_test.go index 77f99c9d32ee..a9aa427d4294 100644 --- a/tests/integration/staking/keeper/deterministic_test.go +++ b/tests/integration/staking/keeper/deterministic_test.go @@ -552,7 +552,7 @@ func TestGRPCValidatorUnbondingDelegations(t *testing.T) { ValidatorAddr: validator.OperatorAddress, } - testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.ValidatorUnbondingDelegations, 3719, false) + testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.ValidatorUnbondingDelegations, 3707, false) } func TestGRPCDelegation(t *testing.T) { @@ -632,7 +632,7 @@ func TestGRPCUnbondingDelegation(t *testing.T) { DelegatorAddr: delegator1, } - testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.UnbondingDelegation, 1621, false) + testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.UnbondingDelegation, 1615, false) } func TestGRPCDelegatorDelegations(t *testing.T) { @@ -755,7 +755,7 @@ func TestGRPCDelegatorUnbondingDelegations(t *testing.T) { DelegatorAddr: delegator1, } - testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.DelegatorUnbondingDelegations, 1302, false) + testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.DelegatorUnbondingDelegations, 1290, false) } func TestGRPCDelegatorValidators(t *testing.T) { @@ -875,7 +875,7 @@ func TestGRPCRedelegations(t *testing.T) { DstValidatorAddr: validator2, } - testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.Redelegations, 3926, false) + testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.Redelegations, 3920, false) } func TestGRPCParams(t *testing.T) { diff --git a/tests/integration/staking/keeper/msg_server_test.go b/tests/integration/staking/keeper/msg_server_test.go index cea78ae9f1f7..3691d508d190 100644 --- a/tests/integration/staking/keeper/msg_server_test.go +++ b/tests/integration/staking/keeper/msg_server_test.go @@ -58,7 +58,6 @@ func TestCancelUnbondingDelegation(t *testing.T) { delegatorAddr, validatorAddr, 10, ctx.HeaderInfo().Time.Add(time.Minute*10), unbondingAmount.Amount, - 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), ) diff --git a/tests/integration/staking/keeper/slash_test.go b/tests/integration/staking/keeper/slash_test.go index f9620b9e05cc..c5ff1edba6c9 100644 --- a/tests/integration/staking/keeper/slash_test.go +++ b/tests/integration/staking/keeper/slash_test.go @@ -79,7 +79,7 @@ func TestSlashUnbondingDelegation(t *testing.T) { // set an unbonding delegation with expiration timestamp (beyond which the // unbonding delegation shouldn't be slashed) ubd := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 0, - time.Unix(5, 0), math.NewInt(10), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + time.Unix(5, 0), math.NewInt(10), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetUnbondingDelegation(f.sdkCtx, ubd)) @@ -138,7 +138,7 @@ func TestSlashRedelegation(t *testing.T) { // set a redelegation with an expiration timestamp beyond which the // redelegation shouldn't be slashed rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, - time.Unix(5, 0), math.NewInt(10), math.LegacyNewDec(10), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + time.Unix(5, 0), math.NewInt(10), math.LegacyNewDec(10), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rd)) @@ -285,7 +285,7 @@ func TestSlashWithUnbondingDelegation(t *testing.T) { // set an unbonding delegation with expiration timestamp beyond which the // unbonding delegation shouldn't be slashed ubdTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 4) - ubd := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 11, time.Unix(0, 0), ubdTokens, 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + ubd := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 11, time.Unix(0, 0), ubdTokens, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetUnbondingDelegation(f.sdkCtx, ubd)) // slash validator for the first time @@ -415,7 +415,7 @@ func TestSlashWithRedelegation(t *testing.T) { // set a redelegation rdTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 6) - rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdTokens, math.LegacyNewDecFromInt(rdTokens), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdTokens, math.LegacyNewDecFromInt(rdTokens), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rd)) // set the associated delegation @@ -573,7 +573,7 @@ func TestSlashBoth(t *testing.T) { // set a redelegation with expiration timestamp beyond which the // redelegation shouldn't be slashed rdATokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 6) - rdA := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdATokens, math.LegacyNewDecFromInt(rdATokens), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + rdA := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdATokens, math.LegacyNewDecFromInt(rdATokens), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rdA)) // set the associated delegation @@ -584,7 +584,7 @@ func TestSlashBoth(t *testing.T) { // unbonding delegation shouldn't be slashed) ubdATokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 4) ubdA := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 11, - time.Unix(0, 0), ubdATokens, 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + time.Unix(0, 0), ubdATokens, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetUnbondingDelegation(f.sdkCtx, ubdA)) bondedCoins := sdk.NewCoins(sdk.NewCoin(bondDenom, rdATokens.MulRaw(2))) diff --git a/tests/integration/staking/keeper/unbonding_test.go b/tests/integration/staking/keeper/unbonding_test.go deleted file mode 100644 index 7a39f4ab20dd..000000000000 --- a/tests/integration/staking/keeper/unbonding_test.go +++ /dev/null @@ -1,460 +0,0 @@ -package keeper_test - -import ( - "testing" - "time" - - "go.uber.org/mock/gomock" - "gotest.tools/v3/assert" - - "cosmossdk.io/core/header" - "cosmossdk.io/math" - banktestutil "cosmossdk.io/x/bank/testutil" - stakingkeeper "cosmossdk.io/x/staking/keeper" - "cosmossdk.io/x/staking/testutil" - "cosmossdk.io/x/staking/types" - - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// SetupUnbondingTests creates two validators and setup mocked staking hooks for testing unbonding -func SetupUnbondingTests(t *testing.T, f *fixture, hookCalled *bool, ubdeID *uint64) (bondDenom string, addrDels []sdk.AccAddress, addrVals []sdk.ValAddress) { - t.Helper() - // setup hooks - mockCtrl := gomock.NewController(t) - mockStackingHooks := testutil.NewMockStakingHooks(mockCtrl) - mockStackingHooks.EXPECT().AfterDelegationModified(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterUnbondingInitiated(gomock.Any(), gomock.Any()).DoAndReturn(func(ctx sdk.Context, id uint64) error { - *hookCalled = true - // save id - *ubdeID = id - // call back to stop unbonding - err := f.stakingKeeper.PutUnbondingOnHold(f.sdkCtx, id) - assert.NilError(t, err) - - return nil - }).AnyTimes() - mockStackingHooks.EXPECT().AfterValidatorBeginUnbonding(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterValidatorBonded(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterValidatorCreated(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterValidatorRemoved(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeDelegationCreated(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeDelegationRemoved(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeDelegationSharesModified(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeValidatorModified(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeValidatorSlashed(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterConsensusPubKeyUpdate(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - f.stakingKeeper.SetHooks(types.NewMultiStakingHooks(mockStackingHooks)) - - addrDels = simtestutil.AddTestAddrsIncremental(f.bankKeeper, f.stakingKeeper, f.sdkCtx, 2, math.NewInt(10000)) - addrVals = simtestutil.ConvertAddrsToValAddrs(addrDels) - - valTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 10) - startTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 20) - - bondDenom, err := f.stakingKeeper.BondDenom(f.sdkCtx) - assert.NilError(t, err) - notBondedPool := f.stakingKeeper.GetNotBondedPool(f.sdkCtx) - - assert.NilError(t, banktestutil.FundModuleAccount(f.sdkCtx, f.bankKeeper, notBondedPool.GetName(), sdk.NewCoins(sdk.NewCoin(bondDenom, startTokens)))) - f.accountKeeper.SetModuleAccount(f.sdkCtx, notBondedPool) - - // Create a validator - validator1 := testutil.NewValidator(t, addrVals[0], PKs[0]) - validator1, issuedShares1 := validator1.AddTokensFromDel(valTokens) - assert.DeepEqual(t, valTokens, issuedShares1.RoundInt()) - - validator1 = stakingkeeper.TestingUpdateValidator(f.stakingKeeper, f.sdkCtx, validator1, true) - assert.Assert(math.IntEq(t, valTokens, validator1.BondedTokens())) - assert.Assert(t, validator1.IsBonded()) - - // Create a delegator - delegation := types.NewDelegation(addrDels[0].String(), addrVals[0].String(), issuedShares1) - assert.NilError(t, f.stakingKeeper.SetDelegation(f.sdkCtx, delegation)) - - // Create a validator to redelegate to - validator2 := testutil.NewValidator(t, addrVals[1], PKs[1]) - validator2, issuedShares2 := validator2.AddTokensFromDel(valTokens) - assert.DeepEqual(t, valTokens, issuedShares2.RoundInt()) - - validator2 = stakingkeeper.TestingUpdateValidator(f.stakingKeeper, f.sdkCtx, validator2, true) - assert.Equal(t, types.Bonded, validator2.Status) - assert.Assert(t, validator2.IsBonded()) - - return bondDenom, addrDels, addrVals -} - -func doUnbondingDelegation( - t *testing.T, - stakingKeeper *stakingkeeper.Keeper, - bankKeeper types.BankKeeper, - ctx sdk.Context, - bondDenom string, - addrDels []sdk.AccAddress, - addrVals []sdk.ValAddress, - hookCalled *bool, -) (completionTime time.Time, bondedAmt, notBondedAmt math.Int) { - t.Helper() - // UNDELEGATE - // Save original bonded and unbonded amounts - bondedAmt1 := bankKeeper.GetBalance(ctx, stakingKeeper.GetBondedPool(ctx).GetAddress(), bondDenom).Amount - notBondedAmt1 := bankKeeper.GetBalance(ctx, stakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount - - var err error - undelegateAmount := math.LegacyNewDec(1) - completionTime, undelegatedAmount, err := stakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], undelegateAmount) - assert.NilError(t, err) - assert.Assert(t, undelegateAmount.Equal(math.LegacyNewDecFromInt(undelegatedAmount))) - // check that the unbonding actually happened - bondedAmt2 := bankKeeper.GetBalance(ctx, stakingKeeper.GetBondedPool(ctx).GetAddress(), bondDenom).Amount - notBondedAmt2 := bankKeeper.GetBalance(ctx, stakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount - // Bonded amount is less - assert.Assert(math.IntEq(t, bondedAmt1.SubRaw(1), bondedAmt2)) - // Unbonded amount is more - assert.Assert(math.IntEq(t, notBondedAmt1.AddRaw(1), notBondedAmt2)) - - // Check that the unbonding happened- we look up the entry and see that it has the correct number of shares - unbondingDelegations, err := stakingKeeper.GetUnbondingDelegationsFromValidator(ctx, addrVals[0]) - assert.NilError(t, err) - assert.DeepEqual(t, math.NewInt(1), unbondingDelegations[0].Entries[0].Balance) - - // check that our hook was called - assert.Assert(t, *hookCalled) - - return completionTime, bondedAmt2, notBondedAmt2 -} - -func doRedelegation( - t *testing.T, - stakingKeeper *stakingkeeper.Keeper, - ctx sdk.Context, - addrDels []sdk.AccAddress, - addrVals []sdk.ValAddress, - hookCalled *bool, -) (completionTime time.Time) { - t.Helper() - var err error - completionTime, err = stakingKeeper.BeginRedelegation(ctx, addrDels[0], addrVals[0], addrVals[1], math.LegacyNewDec(1)) - assert.NilError(t, err) - - // Check that the redelegation happened- we look up the entry and see that it has the correct number of shares - redelegations, err := stakingKeeper.GetRedelegationsFromSrcValidator(ctx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 1, len(redelegations)) - assert.DeepEqual(t, math.LegacyNewDec(1), redelegations[0].Entries[0].SharesDst) - - // check that our hook was called - assert.Assert(t, *hookCalled) - - return completionTime -} - -func doValidatorUnbonding( - t *testing.T, - stakingKeeper *stakingkeeper.Keeper, - ctx sdk.Context, - addrVal sdk.ValAddress, - hookCalled *bool, -) (validator types.Validator) { - t.Helper() - validator, found := stakingKeeper.GetValidator(ctx, addrVal) - assert.Assert(t, found) - // Check that status is bonded - assert.Equal(t, types.BondStatus(3), validator.Status) - - validator, err := stakingKeeper.BeginUnbondingValidator(ctx, validator) - assert.NilError(t, err) - - // Check that status is unbonding - assert.Equal(t, types.BondStatus(2), validator.Status) - - // check that our hook was called - assert.Assert(t, *hookCalled) - - return validator -} - -func TestValidatorUnbondingOnHold1(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - _, _, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - - // Start unbonding first validator - validator := doValidatorUnbonding(t, f.stakingKeeper, f.sdkCtx, addrVals[0], &hookCalled) - - completionTime := validator.UnbondingTime - completionHeight := validator.UnbondingHeight - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - err := f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - // Try to unbond validator - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that validator unbonding is not complete (is not mature yet) - validator, found := f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[0]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonding, validator.Status) - unbondingVals, err := f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 1, len(unbondingVals)) - assert.Equal(t, validator.OperatorAddress, unbondingVals[0]) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime.Add(time.Duration(1))}) - f.sdkCtx = f.sdkCtx.WithBlockHeight(completionHeight + 1) - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that validator unbonding is complete - validator, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[0]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonded, validator.Status) - unbondingVals, err = f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 0, len(unbondingVals)) -} - -func TestValidatorUnbondingOnHold2(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ubdeIDs []uint64 - ) - - _, _, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - - // Start unbonding first validator - validator1 := doValidatorUnbonding(t, f.stakingKeeper, f.sdkCtx, addrVals[0], &hookCalled) - ubdeIDs = append(ubdeIDs, ubdeID) - - // Reset hookCalled flag - hookCalled = false - - // Start unbonding second validator - validator2 := doValidatorUnbonding(t, f.stakingKeeper, f.sdkCtx, addrVals[1], &hookCalled) - ubdeIDs = append(ubdeIDs, ubdeID) - - // Check that there are two unbonding operations - assert.Equal(t, 2, len(ubdeIDs)) - - // Check that both validators have same unbonding time - assert.Equal(t, validator1.UnbondingTime, validator2.UnbondingTime) - - completionTime := validator1.UnbondingTime - completionHeight := validator1.UnbondingHeight - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime.Add(time.Duration(1))}) - f.sdkCtx = f.sdkCtx.WithBlockHeight(completionHeight + 1) - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that unbonding is not complete for both validators - validator1, found := f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[0]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonding, validator1.Status) - validator2, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[1]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonding, validator2.Status) - unbondingVals, err := f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 2, len(unbondingVals)) - assert.Equal(t, validator1.OperatorAddress, unbondingVals[0]) - assert.Equal(t, validator2.OperatorAddress, unbondingVals[1]) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - err = f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeIDs[0]) - assert.NilError(t, err) - - // Try again to unbond validators - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that unbonding is complete for validator1, but not for validator2 - validator1, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[0]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonded, validator1.Status) - validator2, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[1]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonding, validator2.Status) - unbondingVals, err = f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 1, len(unbondingVals)) - assert.Equal(t, validator2.OperatorAddress, unbondingVals[0]) - - // Unbonding for validator2 can complete - err = f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeIDs[1]) - assert.NilError(t, err) - - // Try again to unbond validators - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that unbonding is complete for validator2 - validator2, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[1]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonded, validator2.Status) - unbondingVals, err = f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 0, len(unbondingVals)) -} - -func TestRedelegationOnHold1(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - // _, app, ctx := createTestInput(t) - _, addrDels, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - completionTime := doRedelegation(t, f.stakingKeeper, f.sdkCtx, addrDels, addrVals, &hookCalled) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - err := f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - // Redelegation is not complete - still exists - redelegations, err := f.stakingKeeper.GetRedelegationsFromSrcValidator(f.sdkCtx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 1, len(redelegations)) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime}) - _, err = f.stakingKeeper.CompleteRedelegation(f.sdkCtx, addrDels[0], addrVals[0], addrVals[1]) - assert.NilError(t, err) - - // Redelegation is complete and record is gone - redelegations, err = f.stakingKeeper.GetRedelegationsFromSrcValidator(f.sdkCtx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 0, len(redelegations)) -} - -func TestRedelegationOnHold2(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - // _, app, ctx := createTestInput(t) - _, addrDels, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - completionTime := doRedelegation(t, f.stakingKeeper, f.sdkCtx, addrDels, addrVals, &hookCalled) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime}) - _, err := f.stakingKeeper.CompleteRedelegation(f.sdkCtx, addrDels[0], addrVals[0], addrVals[1]) - assert.NilError(t, err) - - // Redelegation is not complete - still exists - redelegations, err := f.stakingKeeper.GetRedelegationsFromSrcValidator(f.sdkCtx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 1, len(redelegations)) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - err = f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - // Redelegation is complete and record is gone - redelegations, err = f.stakingKeeper.GetRedelegationsFromSrcValidator(f.sdkCtx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 0, len(redelegations)) -} - -func TestUnbondingDelegationOnHold1(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - // _, app, ctx := createTestInput(t) - bondDenom, addrDels, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - for _, addr := range addrDels { - acc := f.accountKeeper.NewAccountWithAddress(f.sdkCtx, addr) - f.accountKeeper.SetAccount(f.sdkCtx, acc) - } - completionTime, bondedAmt1, notBondedAmt1 := doUnbondingDelegation(t, f.stakingKeeper, f.bankKeeper, f.sdkCtx, bondDenom, addrDels, addrVals, &hookCalled) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - err := f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - bondedAmt3 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - notBondedAmt3 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetNotBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - - // Bonded and unbonded amounts are the same as before because the completionTime has not yet passed and so the - // unbondingDelegation has not completed - assert.Assert(math.IntEq(t, bondedAmt1, bondedAmt3)) - assert.Assert(math.IntEq(t, notBondedAmt1, notBondedAmt3)) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime}) - _, err = f.stakingKeeper.CompleteUnbonding(f.sdkCtx, addrDels[0], addrVals[0]) - assert.NilError(t, err) - - // Check that the unbonding was finally completed - bondedAmt5 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - notBondedAmt5 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetNotBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - - assert.Assert(math.IntEq(t, bondedAmt1, bondedAmt5)) - // Not bonded amount back to what it was originally - assert.Assert(math.IntEq(t, notBondedAmt1.SubRaw(1), notBondedAmt5)) -} - -func TestUnbondingDelegationOnHold2(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - // _, app, ctx := createTestInput(t) - bondDenom, addrDels, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - for _, addr := range addrDels { - acc := f.accountKeeper.NewAccountWithAddress(f.sdkCtx, addr) - f.accountKeeper.SetAccount(f.sdkCtx, acc) - } - completionTime, bondedAmt1, notBondedAmt1 := doUnbondingDelegation(t, f.stakingKeeper, f.bankKeeper, f.sdkCtx, bondDenom, addrDels, addrVals, &hookCalled) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime}) - _, err := f.stakingKeeper.CompleteUnbonding(f.sdkCtx, addrDels[0], addrVals[0]) - assert.NilError(t, err) - - bondedAmt3 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - notBondedAmt3 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetNotBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - - // Bonded and unbonded amounts are the same as before because the completionTime has not yet passed and so the - // unbondingDelegation has not completed - assert.Assert(math.IntEq(t, bondedAmt1, bondedAmt3)) - assert.Assert(math.IntEq(t, notBondedAmt1, notBondedAmt3)) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - err = f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - // Check that the unbonding was finally completed - bondedAmt5 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - notBondedAmt5 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetNotBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - - assert.Assert(math.IntEq(t, bondedAmt1, bondedAmt5)) - // Not bonded amount back to what it was originally - assert.Assert(math.IntEq(t, notBondedAmt1.SubRaw(1), notBondedAmt5)) -} diff --git a/x/staking/CHANGELOG.md b/x/staking/CHANGELOG.md index 49cd67798b9f..9f2cc16823c1 100644 --- a/x/staking/CHANGELOG.md +++ b/x/staking/CHANGELOG.md @@ -104,6 +104,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#21315](https://github.com/cosmos/cosmos-sdk/pull/21315) New struct `Metadata` to store extra validator information. * New field `Metadata` introduced in `types`: `Description`. * The signature of `NewDescription` has changed to accept an extra argument of type `Metadata`. +* [#22795](https://github.com/cosmos/cosmos-sdk/pull/22795) `NewUnbondingDelegationEntry`, `NewUnbondingDelegation`, `AddEntry`, `NewRedelegationEntry`, `NewRedelegation` and `NewRedelegationEntryResponse` no longer take an ID in there function signatures. +* [#22795](https://github.com/cosmos/cosmos-sdk/pull/22795) AfterUnbondingInitiated hook has been removed as it is no longer required by ICS. ### State Breaking changes @@ -111,3 +113,4 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#18142](https://github.com/cosmos/cosmos-sdk/pull/18142) Introduce `key_rotation_fee` param to calculate fees while rotating the keys * [#19740](https://github.com/cosmos/cosmos-sdk/pull/19740) `InitGenesis` and `ExportGenesis` module code and keeper code do not panic but return errors. * [#20845](https://github.com/cosmoc/cosmos-sdk/pull/20845) Remove HistoricalInfo from the staking modules storage +* [#22795](https://github.com/cosmos/cosmos-sdk/pull/22795) Keys `stakingtypes.UnbondingIDKey, stakingtypes.UnbondingIndexKey, stakingtypes.UnbondingTypeKey` have been removed as they are no longer required by ICS. diff --git a/x/staking/keeper/delegation.go b/x/staking/keeper/delegation.go index 69ad3843ee9c..fcb3faa6438f 100644 --- a/x/staking/keeper/delegation.go +++ b/x/staking/keeper/delegation.go @@ -310,17 +310,11 @@ func (k Keeper) SetUnbondingDelegationEntry( ctx context.Context, delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, creationHeight int64, minTime time.Time, balance math.Int, ) (types.UnbondingDelegation, error) { - id, err := k.IncrementUnbondingID(ctx) - if err != nil { - return types.UnbondingDelegation{}, err - } - - isNewUbdEntry := true ubd, err := k.GetUnbondingDelegation(ctx, delegatorAddr, validatorAddr) if err == nil { - isNewUbdEntry = ubd.AddEntry(creationHeight, minTime, balance, id) + ubd.AddEntry(creationHeight, minTime, balance) } else if errors.Is(err, types.ErrNoUnbondingDelegation) { - ubd = types.NewUnbondingDelegation(delegatorAddr, validatorAddr, creationHeight, minTime, balance, id, k.validatorAddressCodec, k.authKeeper.AddressCodec()) + ubd = types.NewUnbondingDelegation(delegatorAddr, validatorAddr, creationHeight, minTime, balance, k.validatorAddressCodec, k.authKeeper.AddressCodec()) } else { return ubd, err } @@ -329,18 +323,6 @@ func (k Keeper) SetUnbondingDelegationEntry( return ubd, err } - // only call the hook for new entries since - // calls to AfterUnbondingInitiated are not idempotent - if isNewUbdEntry { - // Add to the UBDByUnbondingOp index to look up the UBD by the UBDE ID - if err = k.SetUnbondingDelegationByUnbondingID(ctx, ubd, id); err != nil { - return ubd, err - } - - if err := k.Hooks().AfterUnbondingInitiated(ctx, id); err != nil { - return ubd, fmt.Errorf("failed to call after unbonding initiated hook: %w", err) - } - } return ubd, nil } @@ -528,17 +510,12 @@ func (k Keeper) SetRedelegationEntry(ctx context.Context, minTime time.Time, balance math.Int, sharesSrc, sharesDst math.LegacyDec, ) (types.Redelegation, error) { - id, err := k.IncrementUnbondingID(ctx) - if err != nil { - return types.Redelegation{}, err - } - red, err := k.Redelegations.Get(ctx, collections.Join3(delegatorAddr.Bytes(), validatorSrcAddr.Bytes(), validatorDstAddr.Bytes())) if err == nil { - red.AddEntry(creationHeight, minTime, balance, sharesDst, id) + red.AddEntry(creationHeight, minTime, balance, sharesDst) } else if errors.Is(err, collections.ErrNotFound) { red = types.NewRedelegation(delegatorAddr, validatorSrcAddr, - validatorDstAddr, creationHeight, minTime, balance, sharesDst, id, k.validatorAddressCodec, k.authKeeper.AddressCodec()) + validatorDstAddr, creationHeight, minTime, balance, sharesDst, k.validatorAddressCodec, k.authKeeper.AddressCodec()) } else { return types.Redelegation{}, err } @@ -547,15 +524,6 @@ func (k Keeper) SetRedelegationEntry(ctx context.Context, return types.Redelegation{}, err } - // Add to the UBDByEntry index to look up the UBD by the UBDE ID - if err = k.SetRedelegationByUnbondingID(ctx, red, id); err != nil { - return types.Redelegation{}, err - } - - if err := k.Hooks().AfterUnbondingInitiated(ctx, id); err != nil { - return types.Redelegation{}, fmt.Errorf("failed to call after unbonding initiated hook: %w", err) - } - return red, nil } @@ -996,12 +964,9 @@ func (k Keeper) CompleteUnbonding(ctx context.Context, delAddr sdk.AccAddress, v // loop through all the entries and complete unbonding mature entries for i := 0; i < len(ubd.Entries); i++ { entry := ubd.Entries[i] - if entry.IsMature(ctxTime) && !entry.OnHold() { + if entry.IsMature(ctxTime) { ubd.RemoveEntry(int64(i)) i-- - if err = k.DeleteUnbondingIndex(ctx, entry.UnbondingId); err != nil { - return nil, err - } // track undelegation only when remaining or truncated shares are non-zero if !entry.Balance.IsZero() { @@ -1136,12 +1101,9 @@ func (k Keeper) CompleteRedelegation( // loop through all the entries and complete mature redelegation entries for i := 0; i < len(red.Entries); i++ { entry := red.Entries[i] - if entry.IsMature(ctxTime) && !entry.OnHold() { + if entry.IsMature(ctxTime) { red.RemoveEntry(int64(i)) i-- - if err = k.DeleteUnbondingIndex(ctx, entry.UnbondingId); err != nil { - return nil, err - } if !entry.InitialBalance.IsZero() { balances = balances.Add(sdk.NewCoin(bondDenom, entry.InitialBalance)) diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index 00ee26d4bda8..397a3b456afe 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -286,7 +286,6 @@ func (s *KeeperTestSuite) TestUnbondingDelegation() { 0, time.Unix(0, 0).UTC(), math.NewInt(5), - 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), ) @@ -343,8 +342,8 @@ func (s *KeeperTestSuite) TestUnbondingDelegationsFromValidator() { 0, time.Unix(0, 0).UTC(), math.NewInt(5), - 0, - address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), + address.NewBech32Codec("cosmosvaloper"), + address.NewBech32Codec("cosmos"), ) // set and retrieve a record @@ -716,7 +715,7 @@ func (s *KeeperTestSuite) TestGetRedelegationsFromSrcValidator() { rd := stakingtypes.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, time.Unix(0, 0), math.NewInt(5), - math.LegacyNewDec(5), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + math.LegacyNewDec(5), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) // set and retrieve a record err := keeper.SetRedelegation(ctx, rd) @@ -746,7 +745,7 @@ func (s *KeeperTestSuite) TestRedelegation() { rd := stakingtypes.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, time.Unix(0, 0).UTC(), math.NewInt(5), - math.LegacyNewDec(5), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + math.LegacyNewDec(5), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) // test shouldn't have and redelegations has, err := keeper.HasReceivingRedelegation(ctx, addrDels[0], addrVals[1]) @@ -1107,14 +1106,14 @@ func (s *KeeperTestSuite) TestUnbondingDelegationAddEntry() { creationHeight, time.Unix(0, 0).UTC(), math.NewInt(10), - 0, - address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), + address.NewBech32Codec("cosmosvaloper"), + address.NewBech32Codec("cosmos"), ) var initialEntries []stakingtypes.UnbondingDelegationEntry initialEntries = append(initialEntries, ubd.Entries...) require.Len(initialEntries, 1) - isNew := ubd.AddEntry(creationHeight, time.Unix(0, 0).UTC(), math.NewInt(5), 1) + isNew := ubd.AddEntry(creationHeight, time.Unix(0, 0).UTC(), math.NewInt(5)) require.False(isNew) require.Len(ubd.Entries, 1) // entry was merged require.NotEqual(initialEntries, ubd.Entries) @@ -1123,7 +1122,7 @@ func (s *KeeperTestSuite) TestUnbondingDelegationAddEntry() { require.Equal(ubd.Entries[0].Balance, math.NewInt(15)) // 10 from previous + 5 from merged newCreationHeight := int64(11) - isNew = ubd.AddEntry(newCreationHeight, time.Unix(1, 0).UTC(), math.NewInt(5), 2) + isNew = ubd.AddEntry(newCreationHeight, time.Unix(1, 0).UTC(), math.NewInt(5)) require.True(isNew) require.Len(ubd.Entries, 2) // entry was appended require.NotEqual(initialEntries, ubd.Entries) @@ -1131,7 +1130,6 @@ func (s *KeeperTestSuite) TestUnbondingDelegationAddEntry() { require.Equal(newCreationHeight, ubd.Entries[1].CreationHeight) require.Equal(ubd.Entries[0].Balance, math.NewInt(15)) require.Equal(ubd.Entries[1].Balance, math.NewInt(5)) - require.NotEqual(ubd.Entries[0].UnbondingId, ubd.Entries[1].UnbondingId) // appended entry has a new unbondingID } func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() { @@ -1149,8 +1147,8 @@ func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() { creationHeight, time.Unix(0, 0).UTC(), math.NewInt(5), - 0, - address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), + address.NewBech32Codec("cosmosvaloper"), + address.NewBech32Codec("cosmos"), ) // set and retrieve a record @@ -1180,8 +1178,7 @@ func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() { require.Len(resUnbonding.Entries, 1) require.NotEqual(initialEntries, resUnbonding.Entries) require.Equal(creationHeight, resUnbonding.Entries[0].CreationHeight) - require.Equal(initialEntries[0].UnbondingId, resUnbonding.Entries[0].UnbondingId) // initial unbondingID remains unchanged - require.Equal(resUnbonding.Entries[0].Balance, math.NewInt(10)) // 5 from previous entry + 5 from merged entry + require.Equal(resUnbonding.Entries[0].Balance, math.NewInt(10)) // 5 from previous entry + 5 from merged entry // set unbonding delegation entry for newCreationHeight // new entry is expected to be appended to the existing entries @@ -1202,11 +1199,6 @@ func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() { require.NotEqual(resUnbonding.Entries[0], resUnbonding.Entries[1]) require.Equal(creationHeight, resUnbonding.Entries[0].CreationHeight) require.Equal(newCreationHeight, resUnbonding.Entries[1].CreationHeight) - - // unbondingID is incremented on every call to SetUnbondingDelegationEntry - // unbondingID == 1 was skipped because the entry was merged with the existing entry with unbondingID == 0 - // unbondingID comes from a global counter -> gaps in unbondingIDs are OK as long as every unbondingID is unique - require.Equal(uint64(2), resUnbonding.Entries[1].UnbondingId) } func (s *KeeperTestSuite) TestUndelegateWithDustShare() { diff --git a/x/staking/keeper/grpc_query.go b/x/staking/keeper/grpc_query.go index aaf61daf4707..47dd44b95773 100644 --- a/x/staking/keeper/grpc_query.go +++ b/x/staking/keeper/grpc_query.go @@ -648,7 +648,6 @@ func redelegationsToRedelegationResponses(ctx context.Context, k *Keeper, redels entry.SharesDst, entry.InitialBalance, val.TokensFromShares(entry.SharesDst).TruncateInt(), - entry.UnbondingId, ) } diff --git a/x/staking/keeper/keeper.go b/x/staking/keeper/keeper.go index 876c9ae97df3..13884f06622c 100644 --- a/x/staking/keeper/keeper.go +++ b/x/staking/keeper/keeper.go @@ -70,17 +70,12 @@ type Keeper struct { LastTotalPower collections.Item[math.Int] // DelegationsByValidator key: valAddr+delAddr | value: none used (index key for delegations by validator index) DelegationsByValidator collections.Map[collections.Pair[sdk.ValAddress, sdk.AccAddress], []byte] - UnbondingID collections.Sequence // ValidatorByConsensusAddress key: consAddr | value: valAddr ValidatorByConsensusAddress collections.Map[sdk.ConsAddress, sdk.ValAddress] - // UnbondingType key: unbondingID | value: index of UnbondingType - UnbondingType collections.Map[uint64, uint64] // Redelegations key: AccAddr+SrcValAddr+DstValAddr | value: Redelegation Redelegations collections.Map[collections.Triple[[]byte, []byte, []byte], types.Redelegation] // Delegations key: AccAddr+valAddr | value: Delegation Delegations collections.Map[collections.Pair[sdk.AccAddress, sdk.ValAddress], types.Delegation] - // UnbondingIndex key:UnbondingID | value: ubdKey (ubdKey = [UnbondingDelegationKey(Prefix)+len(delAddr)+delAddr+len(valAddr)+valAddr]) - UnbondingIndex collections.Map[uint64, []byte] // UnbondingQueue key: Timestamp | value: DVPairs [delAddr+valAddr] UnbondingQueue collections.Map[time.Time, types.DVPairs] // Validators key: valAddr | value: Validator @@ -178,14 +173,12 @@ func NewKeeper( ), collections.BytesValue, ), - UnbondingID: collections.NewSequence(sb, types.UnbondingIDKey, "unbonding_id"), ValidatorByConsensusAddress: collections.NewMap( sb, types.ValidatorsByConsAddrKey, "validator_by_cons_addr", sdk.LengthPrefixedAddressKey(sdk.ConsAddressKey).WithName("cons_address"), //nolint: staticcheck // sdk.LengthPrefixedAddressKey is needed to retain state compatibility collcodec.KeyToValueCodec(sdk.ValAddressKey), ), - UnbondingType: collections.NewMap(sb, types.UnbondingTypeKey, "unbonding_type", collections.Uint64Key.WithName("unbonding_id"), collections.Uint64Value), // key format is: 52 | lengthPrefixedBytes(AccAddr) | lengthPrefixedBytes(SrcValAddr) | lengthPrefixedBytes(DstValAddr) Redelegations: collections.NewMap( sb, types.RedelegationKey, @@ -200,7 +193,6 @@ func NewKeeper( ), codec.CollValue[types.Redelegation](cdc), ), - UnbondingIndex: collections.NewMap(sb, types.UnbondingIndexKey, "unbonding_index", collections.Uint64Key.WithName("index"), collections.BytesValue.WithName("ubd_key")), UnbondingDelegationByValIndex: collections.NewMap( sb, types.UnbondingDelegationByValIndexKey, "unbonding_delegation_by_val_index", diff --git a/x/staking/keeper/msg_server_test.go b/x/staking/keeper/msg_server_test.go index d87a90b7f5c1..8fd52b5c7fda 100644 --- a/x/staking/keeper/msg_server_test.go +++ b/x/staking/keeper/msg_server_test.go @@ -939,7 +939,7 @@ func (s *KeeperTestSuite) TestMsgCancelUnbondingDelegation() { require.NoError(err) require.Equal(del, resDel) - ubd := types.NewUnbondingDelegation(Addr, ValAddr, 10, ctx.HeaderInfo().Time.Add(time.Minute*10), shares.RoundInt(), 0, keeper.ValidatorAddressCodec(), ak.AddressCodec()) + ubd := types.NewUnbondingDelegation(Addr, ValAddr, 10, ctx.HeaderInfo().Time.Add(time.Minute*10), shares.RoundInt(), keeper.ValidatorAddressCodec(), ak.AddressCodec()) require.NoError(keeper.SetUnbondingDelegation(ctx, ubd)) resUnbond, err := keeper.GetUnbondingDelegation(ctx, Addr, ValAddr) require.NoError(err) diff --git a/x/staking/keeper/slash.go b/x/staking/keeper/slash.go index c7623d6b5c37..976142b57e1a 100644 --- a/x/staking/keeper/slash.go +++ b/x/staking/keeper/slash.go @@ -254,7 +254,7 @@ func (k Keeper) SlashUnbondingDelegation(ctx context.Context, unbondingDelegatio continue } - if entry.IsMature(now) && !entry.OnHold() { + if entry.IsMature(now) { // Unbonding delegation no longer eligible for slashing, skip it continue } @@ -346,7 +346,7 @@ func (k Keeper) SlashRedelegation(ctx context.Context, srcValidator types.Valida case entry.CreationHeight < infractionHeight: continue // Unbonding delegation no longer eligible for slashing, skip it - case entry.IsMature(now) && !entry.OnHold(): + case entry.IsMature(now): continue // Slash the unbonding delegation default: diff --git a/x/staking/keeper/unbonding.go b/x/staking/keeper/unbonding.go deleted file mode 100644 index 7e3a9cd96193..000000000000 --- a/x/staking/keeper/unbonding.go +++ /dev/null @@ -1,450 +0,0 @@ -package keeper - -import ( - "context" - "errors" - - "cosmossdk.io/collections" - errorsmod "cosmossdk.io/errors" - "cosmossdk.io/x/staking/types" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// IncrementUnbondingID increments and returns a unique ID for an unbonding operation -func (k Keeper) IncrementUnbondingID(ctx context.Context) (unbondingID uint64, err error) { - unbondingID, err = k.UnbondingID.Next(ctx) - if err != nil { - return 0, err - } - unbondingID++ - - return unbondingID, err -} - -// DeleteUnbondingIndex removes a mapping from UnbondingId to unbonding operation -func (k Keeper) DeleteUnbondingIndex(ctx context.Context, id uint64) error { - return k.UnbondingIndex.Remove(ctx, id) -} - -// GetUnbondingType returns the enum type of unbonding which is any of -// {UnbondingDelegation | Redelegation | ValidatorUnbonding} -func (k Keeper) GetUnbondingType(ctx context.Context, id uint64) (unbondingType types.UnbondingType, err error) { - ubdType, err := k.UnbondingType.Get(ctx, id) - if errors.Is(err, collections.ErrNotFound) { - return unbondingType, types.ErrNoUnbondingType - } - return types.UnbondingType(ubdType), err -} - -// SetUnbondingType sets the enum type of unbonding which is any of -// {UnbondingDelegation | Redelegation | ValidatorUnbonding} -func (k Keeper) SetUnbondingType(ctx context.Context, id uint64, unbondingType types.UnbondingType) error { - return k.UnbondingType.Set(ctx, id, uint64(unbondingType)) -} - -// GetUnbondingDelegationByUnbondingID returns a unbonding delegation that has an unbonding delegation entry with a certain ID -func (k Keeper) GetUnbondingDelegationByUnbondingID(ctx context.Context, id uint64) (ubd types.UnbondingDelegation, err error) { - ubdKey, err := k.UnbondingIndex.Get(ctx, id) // ubdKey => [UnbondingDelegationKey(Prefix)+len(delAddr)+delAddr+len(valAddr)+valAddr] - if err != nil { - if errors.Is(err, collections.ErrNotFound) { - return types.UnbondingDelegation{}, types.ErrNoUnbondingDelegation - } - return types.UnbondingDelegation{}, err - } - - if ubdKey == nil { - return types.UnbondingDelegation{}, types.ErrNoUnbondingDelegation - } - - // remove prefix bytes and length bytes (since ubdKey obtained is prefixed by UnbondingDelegationKey prefix and length of the address) - delAddr := ubdKey[2 : (len(ubdKey)/2)+1] - // remove prefix length bytes - valAddr := ubdKey[2+len(ubdKey)/2:] - - ubd, err = k.UnbondingDelegations.Get(ctx, collections.Join(delAddr, valAddr)) - if err != nil { - if errors.Is(err, collections.ErrNotFound) { - return types.UnbondingDelegation{}, types.ErrNoUnbondingDelegation - } - return types.UnbondingDelegation{}, err - } - - return ubd, nil -} - -// GetRedelegationByUnbondingID returns a unbonding delegation that has an unbonding delegation entry with a certain ID -func (k Keeper) GetRedelegationByUnbondingID(ctx context.Context, id uint64) (red types.Redelegation, err error) { - store := k.KVStoreService.OpenKVStore(ctx) - - redKey, err := k.UnbondingIndex.Get(ctx, id) - if err != nil { - if errors.Is(err, collections.ErrNotFound) { - return types.Redelegation{}, types.ErrNoRedelegation - } - return types.Redelegation{}, err - } - - if redKey == nil { - return types.Redelegation{}, types.ErrNoRedelegation - } - - value, err := store.Get(redKey) - if err != nil { - return types.Redelegation{}, err - } - - if value == nil { - return types.Redelegation{}, types.ErrNoRedelegation - } - - red, err = types.UnmarshalRED(k.cdc, value) - // An error here means that what we got wasn't the right type - if err != nil { - return types.Redelegation{}, err - } - - return red, nil -} - -// GetValidatorByUnbondingID returns the validator that is unbonding with a certain unbonding op ID -func (k Keeper) GetValidatorByUnbondingID(ctx context.Context, id uint64) (val types.Validator, err error) { - store := k.KVStoreService.OpenKVStore(ctx) - - valKey, err := k.UnbondingIndex.Get(ctx, id) - if err != nil { - if errors.Is(err, collections.ErrNotFound) { - return types.Validator{}, types.ErrNoValidatorFound - } - return types.Validator{}, err - } - - if valKey == nil { - return types.Validator{}, types.ErrNoValidatorFound - } - - value, err := store.Get(valKey) - if err != nil { - return types.Validator{}, err - } - - if value == nil { - return types.Validator{}, types.ErrNoValidatorFound - } - - val, err = types.UnmarshalValidator(k.cdc, value) - // An error here means that what we got wasn't the right type - if err != nil { - return types.Validator{}, err - } - - return val, nil -} - -// SetUnbondingDelegationByUnbondingID sets an index to look up an UnbondingDelegation -// by the unbondingID of an UnbondingDelegationEntry that it contains Note, it does not -// set the unbonding delegation itself, use SetUnbondingDelegation(ctx, ubd) for that -func (k Keeper) SetUnbondingDelegationByUnbondingID(ctx context.Context, ubd types.UnbondingDelegation, id uint64) error { - delAddr, err := k.authKeeper.AddressCodec().StringToBytes(ubd.DelegatorAddress) - if err != nil { - return err - } - valAddr, err := k.validatorAddressCodec.StringToBytes(ubd.ValidatorAddress) - if err != nil { - return err - } - - ubdKey := types.GetUBDKey(delAddr, valAddr) - if err = k.UnbondingIndex.Set(ctx, id, ubdKey); err != nil { - return err - } - - // Set unbonding type so that we know how to deserialize it later - return k.SetUnbondingType(ctx, id, types.UnbondingType_UnbondingDelegation) -} - -// SetRedelegationByUnbondingID sets an index to look up a Redelegation by the unbondingID of a RedelegationEntry that it contains -// Note, it does not set the redelegation itself, use SetRedelegation(ctx, red) for that -func (k Keeper) SetRedelegationByUnbondingID(ctx context.Context, red types.Redelegation, id uint64) error { - delAddr, err := k.authKeeper.AddressCodec().StringToBytes(red.DelegatorAddress) - if err != nil { - return err - } - - valSrcAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorSrcAddress) - if err != nil { - return err - } - - valDstAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorDstAddress) - if err != nil { - return err - } - - redKey := types.GetREDKey(delAddr, valSrcAddr, valDstAddr) - if err = k.UnbondingIndex.Set(ctx, id, redKey); err != nil { - return err - } - - // Set unbonding type so that we know how to deserialize it later - return k.SetUnbondingType(ctx, id, types.UnbondingType_Redelegation) -} - -// SetValidatorByUnbondingID sets an index to look up a Validator by the unbondingID corresponding to its current unbonding -// Note, it does not set the validator itself, use SetValidator(ctx, val) for that -func (k Keeper) SetValidatorByUnbondingID(ctx context.Context, val types.Validator, id uint64) error { - valAddr, err := k.validatorAddressCodec.StringToBytes(val.OperatorAddress) - if err != nil { - return err - } - - valKey := types.GetValidatorKey(valAddr) - if err = k.UnbondingIndex.Set(ctx, id, valKey); err != nil { - return err - } - - // Set unbonding type so that we know how to deserialize it later - return k.SetUnbondingType(ctx, id, types.UnbondingType_ValidatorUnbonding) -} - -// unbondingDelegationEntryArrayIndex and redelegationEntryArrayIndex are utilities to find -// at which position in the Entries array the entry with a given id is -func unbondingDelegationEntryArrayIndex(ubd types.UnbondingDelegation, id uint64) (index int, err error) { - for i, entry := range ubd.Entries { - // we find the entry with the right ID - if entry.UnbondingId == id { - return i, nil - } - } - - return 0, types.ErrNoUnbondingDelegation -} - -func redelegationEntryArrayIndex(red types.Redelegation, id uint64) (index int, err error) { - for i, entry := range red.Entries { - // we find the entry with the right ID - if entry.UnbondingId == id { - return i, nil - } - } - - return 0, types.ErrNoRedelegation -} - -// UnbondingCanComplete allows a stopped unbonding operation, such as an -// unbonding delegation, a redelegation, or a validator unbonding to complete. -// In order for the unbonding operation with `id` to eventually complete, every call -// to PutUnbondingOnHold(id) must be matched by a call to UnbondingCanComplete(id). -func (k Keeper) UnbondingCanComplete(ctx context.Context, id uint64) error { - unbondingType, err := k.GetUnbondingType(ctx, id) - if err != nil { - return err - } - - switch unbondingType { - case types.UnbondingType_UnbondingDelegation: - if err := k.unbondingDelegationEntryCanComplete(ctx, id); err != nil { - return err - } - case types.UnbondingType_Redelegation: - if err := k.redelegationEntryCanComplete(ctx, id); err != nil { - return err - } - case types.UnbondingType_ValidatorUnbonding: - if err := k.validatorUnbondingCanComplete(ctx, id); err != nil { - return err - } - default: - return types.ErrUnbondingNotFound - } - - return nil -} - -func (k Keeper) unbondingDelegationEntryCanComplete(ctx context.Context, id uint64) error { - ubd, err := k.GetUnbondingDelegationByUnbondingID(ctx, id) - if err != nil { - return err - } - - i, err := unbondingDelegationEntryArrayIndex(ubd, id) - if err != nil { - return err - } - - // The entry must be on hold - if !ubd.Entries[i].OnHold() { - return errorsmod.Wrapf( - types.ErrUnbondingOnHoldRefCountNegative, - "undelegation unbondingID(%d), expecting UnbondingOnHoldRefCount > 0, got %T", - id, ubd.Entries[i].UnbondingOnHoldRefCount, - ) - } - ubd.Entries[i].UnbondingOnHoldRefCount-- - - // Check if entry is matured. - if !ubd.Entries[i].OnHold() && ubd.Entries[i].IsMature(k.HeaderService.HeaderInfo(ctx).Time) { - // If matured, complete it. - delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(ubd.DelegatorAddress) - if err != nil { - return err - } - - bondDenom, err := k.BondDenom(ctx) - if err != nil { - return err - } - - // track undelegation only when remaining or truncated shares are non-zero - if !ubd.Entries[i].Balance.IsZero() { - amt := sdk.NewCoin(bondDenom, ubd.Entries[i].Balance) - if err := k.bankKeeper.UndelegateCoinsFromModuleToAccount( - ctx, types.NotBondedPoolName, delegatorAddress, sdk.NewCoins(amt), - ); err != nil { - return err - } - } - - // Remove entry - ubd.RemoveEntry(int64(i)) - // Remove from the UnbondingIndex - err = k.DeleteUnbondingIndex(ctx, id) - if err != nil { - return err - } - - } - - // set the unbonding delegation or remove it if there are no more entries - if len(ubd.Entries) == 0 { - return k.RemoveUnbondingDelegation(ctx, ubd) - } - - return k.SetUnbondingDelegation(ctx, ubd) -} - -func (k Keeper) redelegationEntryCanComplete(ctx context.Context, id uint64) error { - red, err := k.GetRedelegationByUnbondingID(ctx, id) - if err != nil { - return err - } - - i, err := redelegationEntryArrayIndex(red, id) - if err != nil { - return err - } - - // The entry must be on hold - if !red.Entries[i].OnHold() { - return errorsmod.Wrapf( - types.ErrUnbondingOnHoldRefCountNegative, - "redelegation unbondingID(%d), expecting UnbondingOnHoldRefCount > 0, got %T", - id, red.Entries[i].UnbondingOnHoldRefCount, - ) - } - red.Entries[i].UnbondingOnHoldRefCount-- - - headerInfo := k.HeaderService.HeaderInfo(ctx) - if !red.Entries[i].OnHold() && red.Entries[i].IsMature(headerInfo.Time) { - // If matured, complete it. - // Remove entry - red.RemoveEntry(int64(i)) - // Remove from the Unbonding index - if err = k.DeleteUnbondingIndex(ctx, id); err != nil { - return err - } - } - - // set the redelegation or remove it if there are no more entries - if len(red.Entries) == 0 { - return k.RemoveRedelegation(ctx, red) - } - - return k.SetRedelegation(ctx, red) -} - -func (k Keeper) validatorUnbondingCanComplete(ctx context.Context, id uint64) error { - val, err := k.GetValidatorByUnbondingID(ctx, id) - if err != nil { - return err - } - - if val.UnbondingOnHoldRefCount <= 0 { - return errorsmod.Wrapf( - types.ErrUnbondingOnHoldRefCountNegative, - "val(%s), expecting UnbondingOnHoldRefCount > 0, got %T", - val.OperatorAddress, val.UnbondingOnHoldRefCount, - ) - } - val.UnbondingOnHoldRefCount-- - return k.SetValidator(ctx, val) -} - -// PutUnbondingOnHold allows an external module to stop an unbonding operation, -// such as an unbonding delegation, a redelegation, or a validator unbonding. -// In order for the unbonding operation with `id` to eventually complete, every call -// to PutUnbondingOnHold(id) must be matched by a call to UnbondingCanComplete(id). -func (k Keeper) PutUnbondingOnHold(ctx context.Context, id uint64) error { - unbondingType, err := k.GetUnbondingType(ctx, id) - if err != nil { - return err - } - switch unbondingType { - case types.UnbondingType_UnbondingDelegation: - if err := k.putUnbondingDelegationEntryOnHold(ctx, id); err != nil { - return err - } - case types.UnbondingType_Redelegation: - if err := k.putRedelegationEntryOnHold(ctx, id); err != nil { - return err - } - case types.UnbondingType_ValidatorUnbonding: - if err := k.putValidatorOnHold(ctx, id); err != nil { - return err - } - default: - return types.ErrUnbondingNotFound - } - - return nil -} - -func (k Keeper) putUnbondingDelegationEntryOnHold(ctx context.Context, id uint64) error { - ubd, err := k.GetUnbondingDelegationByUnbondingID(ctx, id) - if err != nil { - return err - } - - i, err := unbondingDelegationEntryArrayIndex(ubd, id) - if err != nil { - return err - } - - ubd.Entries[i].UnbondingOnHoldRefCount++ - return k.SetUnbondingDelegation(ctx, ubd) -} - -func (k Keeper) putRedelegationEntryOnHold(ctx context.Context, id uint64) error { - red, err := k.GetRedelegationByUnbondingID(ctx, id) - if err != nil { - return err - } - - i, err := redelegationEntryArrayIndex(red, id) - if err != nil { - return err - } - - red.Entries[i].UnbondingOnHoldRefCount++ - return k.SetRedelegation(ctx, red) -} - -func (k Keeper) putValidatorOnHold(ctx context.Context, id uint64) error { - val, err := k.GetValidatorByUnbondingID(ctx, id) - if err != nil { - return err - } - - val.UnbondingOnHoldRefCount++ - return k.SetValidator(ctx, val) -} diff --git a/x/staking/keeper/unbonding_test.go b/x/staking/keeper/unbonding_test.go deleted file mode 100644 index 1749ac04aa68..000000000000 --- a/x/staking/keeper/unbonding_test.go +++ /dev/null @@ -1,346 +0,0 @@ -package keeper_test - -import ( - "time" - - "cosmossdk.io/math" - "cosmossdk.io/x/staking/testutil" - "cosmossdk.io/x/staking/types" - - addresscodec "github.com/cosmos/cosmos-sdk/codec/address" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (s *KeeperTestSuite) TestIncrementUnbondingID() { - for i := 1; i < 10; i++ { - id, err := s.stakingKeeper.IncrementUnbondingID(s.ctx) - s.Require().NoError(err) - s.Require().Equal(uint64(i), id) - } -} - -func (s *KeeperTestSuite) TestUnbondingTypeAccessors() { - require := s.Require() - cases := []struct { - exists bool - name string - expected types.UnbondingType - }{ - { - name: "existing 1", - exists: true, - expected: types.UnbondingType_UnbondingDelegation, - }, - { - name: "existing 2", - exists: true, - expected: types.UnbondingType_Redelegation, - }, - { - name: "not existing", - exists: false, - }, - } - - for i, tc := range cases { - s.Run(tc.name, func() { - if tc.exists { - require.NoError(s.stakingKeeper.SetUnbondingType(s.ctx, uint64(i), tc.expected)) - } - - unbondingType, err := s.stakingKeeper.GetUnbondingType(s.ctx, uint64(i)) - if tc.exists { - require.NoError(err) - require.Equal(tc.expected, unbondingType) - } else { - require.ErrorIs(err, types.ErrNoUnbondingType) - } - }) - } -} - -func (s *KeeperTestSuite) TestUnbondingDelegationByUnbondingIDAccessors() { - delAddrs, valAddrs := createValAddrs(2) - require := s.Require() - - type exists struct { - setUnbondingDelegation bool - setUnbondingDelegationByUnbondingID bool - } - - cases := []struct { - exists exists - name string - expected types.UnbondingDelegation - }{ - { - name: "existing 1", - exists: exists{true, true}, - expected: types.NewUnbondingDelegation( - delAddrs[0], - valAddrs[0], - 0, - time.Unix(0, 0).UTC(), - math.NewInt(5), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - { - name: "not existing 1", - exists: exists{false, true}, - expected: types.NewUnbondingDelegation( - delAddrs[1], - valAddrs[1], - 0, - time.Unix(0, 0).UTC(), - math.NewInt(5), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - { - name: "not existing 2", - exists: exists{false, false}, - expected: types.NewUnbondingDelegation( - delAddrs[0], - valAddrs[0], - 0, - time.Unix(0, 0).UTC(), - math.NewInt(5), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - } - - for i, tc := range cases { - s.Run(tc.name, func() { - if tc.exists.setUnbondingDelegation { - require.NoError(s.stakingKeeper.SetUnbondingDelegation(s.ctx, tc.expected)) - } - - if tc.exists.setUnbondingDelegationByUnbondingID { - require.NoError(s.stakingKeeper.SetUnbondingDelegationByUnbondingID(s.ctx, tc.expected, uint64(i))) - } - - ubd, err := s.stakingKeeper.GetUnbondingDelegationByUnbondingID(s.ctx, uint64(i)) - if tc.exists.setUnbondingDelegation && tc.exists.setUnbondingDelegationByUnbondingID { - require.NoError(err) - require.Equal(tc.expected, ubd) - } else { - require.ErrorIs(err, types.ErrNoUnbondingDelegation) - } - }) - } -} - -func (s *KeeperTestSuite) TestRedelegationByUnbondingIDAccessors() { - delAddrs, valAddrs := createValAddrs(2) - require := s.Require() - - type exists struct { - setRedelegation bool - setRedelegationByUnbondingID bool - } - - cases := []struct { - exists exists - name string - expected types.Redelegation - }{ - { - name: "existing 1", - exists: exists{true, true}, - expected: types.NewRedelegation( - delAddrs[0], - valAddrs[0], - valAddrs[1], - 0, - time.Unix(5, 0).UTC(), - math.NewInt(10), - math.LegacyNewDec(10), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - { - name: "not existing 1", - exists: exists{false, true}, - expected: types.NewRedelegation( - delAddrs[1], - valAddrs[0], - valAddrs[1], - 0, - time.Unix(5, 0).UTC(), - math.NewInt(10), - math.LegacyNewDec(10), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - { - name: "not existing 2", - exists: exists{false, false}, - expected: types.NewRedelegation( - delAddrs[1], - valAddrs[1], - valAddrs[0], - 0, - time.Unix(5, 0).UTC(), - math.NewInt(10), - math.LegacyNewDec(10), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - } - - for i, tc := range cases { - s.Run(tc.name, func() { - if tc.exists.setRedelegation { - require.NoError(s.stakingKeeper.SetRedelegation(s.ctx, tc.expected)) - } - - if tc.exists.setRedelegationByUnbondingID { - require.NoError(s.stakingKeeper.SetRedelegationByUnbondingID(s.ctx, tc.expected, uint64(i))) - } - - red, err := s.stakingKeeper.GetRedelegationByUnbondingID(s.ctx, uint64(i)) - if tc.exists.setRedelegation && tc.exists.setRedelegationByUnbondingID { - require.NoError(err) - require.Equal(tc.expected, red) - } else { - require.ErrorIs(err, types.ErrNoRedelegation) - } - }) - } -} - -func (s *KeeperTestSuite) TestValidatorByUnbondingIDAccessors() { - _, valAddrs := createValAddrs(3) - require := s.Require() - - type exists struct { - setValidator bool - setValidatorByUnbondingID bool - } - - cases := []struct { - exists exists - name string - validator types.Validator - }{ - { - name: "existing 1", - exists: exists{true, true}, - validator: testutil.NewValidator(s.T(), valAddrs[0], PKs[0]), - }, - { - name: "not existing 1", - exists: exists{false, true}, - validator: testutil.NewValidator(s.T(), valAddrs[1], PKs[1]), - }, - { - name: "not existing 2", - exists: exists{false, false}, - validator: testutil.NewValidator(s.T(), valAddrs[2], PKs[0]), - }, - } - - for i, tc := range cases { - s.Run(tc.name, func() { - if tc.exists.setValidator { - require.NoError(s.stakingKeeper.SetValidator(s.ctx, tc.validator)) - } - - if tc.exists.setValidatorByUnbondingID { - require.NoError(s.stakingKeeper.SetValidatorByUnbondingID(s.ctx, tc.validator, uint64(i))) - } - - val, err := s.stakingKeeper.GetValidatorByUnbondingID(s.ctx, uint64(i)) - if tc.exists.setValidator && tc.exists.setValidatorByUnbondingID { - require.NoError(err) - require.Equal(tc.validator, val) - } else { - require.ErrorIs(err, types.ErrNoValidatorFound) - } - }) - } -} - -func (s *KeeperTestSuite) TestUnbondingCanComplete() { - delAddrs, valAddrs := createValAddrs(3) - require := s.Require() - - unbondingID := uint64(1) - - // no unbondingID set - err := s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrNoUnbondingType) - - // unbonding delegation - require.NoError(s.stakingKeeper.SetUnbondingType(s.ctx, unbondingID, types.UnbondingType_UnbondingDelegation)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrNoUnbondingDelegation) - - ubd := types.NewUnbondingDelegation( - delAddrs[0], - valAddrs[0], - 0, - time.Unix(0, 0).UTC(), - math.NewInt(5), - unbondingID, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ) - require.NoError(s.stakingKeeper.SetUnbondingDelegation(s.ctx, ubd)) - require.NoError(s.stakingKeeper.SetUnbondingDelegationByUnbondingID(s.ctx, ubd, unbondingID)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrUnbondingOnHoldRefCountNegative) - - err = s.stakingKeeper.PutUnbondingOnHold(s.ctx, unbondingID) - require.NoError(err) - s.bankKeeper.EXPECT().UndelegateCoinsFromModuleToAccount(s.ctx, types.NotBondedPoolName, delAddrs[0], sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(5)))).Return(nil) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.NoError(err) - - // redelegation - unbondingID++ - require.NoError(s.stakingKeeper.SetUnbondingType(s.ctx, unbondingID, types.UnbondingType_Redelegation)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrNoRedelegation) - - red := types.NewRedelegation( - delAddrs[0], - valAddrs[0], - valAddrs[1], - 0, - time.Unix(5, 0).UTC(), - math.NewInt(10), - math.LegacyNewDec(10), - unbondingID, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ) - require.NoError(s.stakingKeeper.SetRedelegation(s.ctx, red)) - require.NoError(s.stakingKeeper.SetRedelegationByUnbondingID(s.ctx, red, unbondingID)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrUnbondingOnHoldRefCountNegative) - - require.NoError(s.stakingKeeper.PutUnbondingOnHold(s.ctx, unbondingID)) - require.NoError(s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID)) - - // validator unbonding - unbondingID++ - require.NoError(s.stakingKeeper.SetUnbondingType(s.ctx, unbondingID, types.UnbondingType_ValidatorUnbonding)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrNoValidatorFound) - - val := testutil.NewValidator(s.T(), valAddrs[0], PKs[0]) - require.NoError(s.stakingKeeper.SetValidator(s.ctx, val)) - require.NoError(s.stakingKeeper.SetValidatorByUnbondingID(s.ctx, val, unbondingID)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrUnbondingOnHoldRefCountNegative) - - require.NoError(s.stakingKeeper.PutUnbondingOnHold(s.ctx, unbondingID)) - require.NoError(s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID)) -} diff --git a/x/staking/keeper/val_state_change.go b/x/staking/keeper/val_state_change.go index 867dc89dd5cb..866cc1ce0a2d 100644 --- a/x/staking/keeper/val_state_change.go +++ b/x/staking/keeper/val_state_change.go @@ -456,11 +456,6 @@ func (k Keeper) BeginUnbondingValidator(ctx context.Context, validator types.Val return validator, fmt.Errorf("should not already be unbonded or unbonding, validator: %v", validator) } - id, err := k.IncrementUnbondingID(ctx) - if err != nil { - return validator, err - } - validator = validator.UpdateStatus(types.Unbonding) headerInfo := k.HeaderService.HeaderInfo(ctx) @@ -468,8 +463,6 @@ func (k Keeper) BeginUnbondingValidator(ctx context.Context, validator types.Val validator.UnbondingTime = headerInfo.Time.Add(params.UnbondingTime) validator.UnbondingHeight = headerInfo.Height - validator.UnbondingIds = append(validator.UnbondingIds, id) - // save the now unbonded validator record and power index if err = k.SetValidator(ctx, validator); err != nil { return validator, err @@ -499,14 +492,6 @@ func (k Keeper) BeginUnbondingValidator(ctx context.Context, validator types.Val return validator, err } - if err := k.SetValidatorByUnbondingID(ctx, validator, id); err != nil { - return validator, err - } - - if err := k.Hooks().AfterUnbondingInitiated(ctx, id); err != nil { - return validator, err - } - return validator, nil } diff --git a/x/staking/keeper/validator.go b/x/staking/keeper/validator.go index 7ce5cae9822a..61e42bdf8008 100644 --- a/x/staking/keeper/validator.go +++ b/x/staking/keeper/validator.go @@ -545,36 +545,19 @@ func (k Keeper) unbondMatureValidators( return errors.New("unexpected validator in unbonding queue; status was not unbonding") } - // if the ref count is not zero, early exit. - if val.UnbondingOnHoldRefCount != 0 { - return nil - } - - // otherwise do proper unbonding - for _, id := range val.UnbondingIds { - if err = k.DeleteUnbondingIndex(ctx, id); err != nil { - return err - } - } - val, err = k.UnbondingToUnbonded(ctx, val) if err != nil { return err } - if val.GetDelegatorShares().IsZero() { - str, err := k.validatorAddressCodec.StringToBytes(val.GetOperator()) + addr, err := k.validatorAddressCodec.StringToBytes(val.OperatorAddress) if err != nil { return err } - if err = k.RemoveValidator(ctx, str); err != nil { + if err := k.RemoveValidator(ctx, addr); err != nil { return err } - } else { - // remove unbonding ids - val.UnbondingIds = []uint64{} } - // remove validator from queue if err = k.DeleteValidatorQueue(ctx, val); err != nil { return err diff --git a/x/staking/migrations/v6/keys.go b/x/staking/migrations/v6/keys.go index 252d7ce50396..5c3b1a913350 100644 --- a/x/staking/migrations/v6/keys.go +++ b/x/staking/migrations/v6/keys.go @@ -3,6 +3,9 @@ package v6 import "cosmossdk.io/collections" var ( + UnbondingTypeKey = collections.NewPrefix(57) // prefix for an index containing the type of unbonding operations + UnbondingIDKey = collections.NewPrefix(55) // key for the counter for the incrementing id for UnbondingOperations + UnbondingIndexKey = collections.NewPrefix(56) // prefix for an index for looking up unbonding operations by their IDs ValidatorUpdatesKey = collections.NewPrefix(97) HistoricalInfoKey = collections.NewPrefix(80) // prefix for the historical info ) diff --git a/x/staking/migrations/v6/store.go b/x/staking/migrations/v6/store.go index 93de43ec51fa..98b4cb446faa 100644 --- a/x/staking/migrations/v6/store.go +++ b/x/staking/migrations/v6/store.go @@ -13,5 +13,8 @@ import ( func MigrateStore(ctx context.Context, store storetypes.KVStore, cdc codec.BinaryCodec) error { store.Delete(ValidatorUpdatesKey) store.Delete(HistoricalInfoKey) + store.Delete(UnbondingIDKey) + store.Delete(UnbondingIndexKey) + store.Delete(UnbondingTypeKey) return nil } diff --git a/x/staking/proto/cosmos/staking/v1beta1/staking.proto b/x/staking/proto/cosmos/staking/v1beta1/staking.proto index 495fa0020cfd..78b87250c3bb 100644 --- a/x/staking/proto/cosmos/staking/v1beta1/staking.proto +++ b/x/staking/proto/cosmos/staking/v1beta1/staking.proto @@ -259,7 +259,7 @@ message UnbondingDelegationEntry { (gogoproto.nullable) = false ]; // Incrementing id that uniquely identifies this entry - uint64 unbonding_id = 5; + uint64 unbonding_id = 5 [deprecated = true]; // Strictly positive if this entry's unbonding has been stopped by external modules int64 unbonding_on_hold_ref_count = 6; diff --git a/x/staking/testutil/expected_keepers_mocks.go b/x/staking/testutil/expected_keepers_mocks.go index d2bd42c4505d..04a942f2d3ca 100644 --- a/x/staking/testutil/expected_keepers_mocks.go +++ b/x/staking/testutil/expected_keepers_mocks.go @@ -611,20 +611,6 @@ func (mr *MockStakingHooksMockRecorder) AfterDelegationModified(ctx, delAddr, va return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AfterDelegationModified", reflect.TypeOf((*MockStakingHooks)(nil).AfterDelegationModified), ctx, delAddr, valAddr) } -// AfterUnbondingInitiated mocks base method. -func (m *MockStakingHooks) AfterUnbondingInitiated(ctx context.Context, id uint64) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AfterUnbondingInitiated", ctx, id) - ret0, _ := ret[0].(error) - return ret0 -} - -// AfterUnbondingInitiated indicates an expected call of AfterUnbondingInitiated. -func (mr *MockStakingHooksMockRecorder) AfterUnbondingInitiated(ctx, id any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AfterUnbondingInitiated", reflect.TypeOf((*MockStakingHooks)(nil).AfterUnbondingInitiated), ctx, id) -} - // AfterValidatorBeginUnbonding mocks base method. func (m *MockStakingHooks) AfterValidatorBeginUnbonding(ctx context.Context, consAddr types1.ConsAddress, valAddr types1.ValAddress) error { m.ctrl.T.Helper() diff --git a/x/staking/types/delegation.go b/x/staking/types/delegation.go index fad9ae19ab76..c7754d9a8412 100644 --- a/x/staking/types/delegation.go +++ b/x/staking/types/delegation.go @@ -66,13 +66,12 @@ func (d Delegations) String() (out string) { return strings.TrimSpace(out) } -func NewUnbondingDelegationEntry(creationHeight int64, completionTime time.Time, balance math.Int, unbondingID uint64) UnbondingDelegationEntry { +func NewUnbondingDelegationEntry(creationHeight int64, completionTime time.Time, balance math.Int) UnbondingDelegationEntry { return UnbondingDelegationEntry{ CreationHeight: creationHeight, CompletionTime: completionTime, InitialBalance: balance, Balance: balance, - UnbondingId: unbondingID, UnbondingOnHoldRefCount: 0, } } @@ -82,26 +81,6 @@ func (e UnbondingDelegationEntry) IsMature(currentTime time.Time) bool { return !e.CompletionTime.After(currentTime) } -// OnHold - is the current entry on hold due to external modules -func (e UnbondingDelegationEntry) OnHold() bool { - return e.UnbondingOnHoldRefCount > 0 -} - -// return the unbonding delegation entry -func MustMarshalUBDE(cdc codec.BinaryCodec, ubd UnbondingDelegationEntry) []byte { - return cdc.MustMarshal(&ubd) -} - -// unmarshal a unbonding delegation entry from a store value -func MustUnmarshalUBDE(cdc codec.BinaryCodec, value []byte) UnbondingDelegationEntry { - ubd, err := UnmarshalUBDE(cdc, value) - if err != nil { - panic(err) - } - - return ubd -} - // unmarshal a unbonding delegation entry from a store value func UnmarshalUBDE(cdc codec.BinaryCodec, value []byte) (ubd UnbondingDelegationEntry, err error) { err = cdc.Unmarshal(value, &ubd) @@ -111,7 +90,7 @@ func UnmarshalUBDE(cdc codec.BinaryCodec, value []byte) (ubd UnbondingDelegation // NewUnbondingDelegation - create a new unbonding delegation object func NewUnbondingDelegation( delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, - creationHeight int64, minTime time.Time, balance math.Int, id uint64, + creationHeight int64, minTime time.Time, balance math.Int, valAc, delAc address.Codec, ) UnbondingDelegation { valAddr, err := valAc.BytesToString(validatorAddr) @@ -126,13 +105,13 @@ func NewUnbondingDelegation( DelegatorAddress: delAddr, ValidatorAddress: valAddr, Entries: []UnbondingDelegationEntry{ - NewUnbondingDelegationEntry(creationHeight, minTime, balance, id), + NewUnbondingDelegationEntry(creationHeight, minTime, balance), }, } } // AddEntry - append entry to the unbonding delegation -func (ubd *UnbondingDelegation) AddEntry(creationHeight int64, minTime time.Time, balance math.Int, unbondingID uint64) bool { +func (ubd *UnbondingDelegation) AddEntry(creationHeight int64, minTime time.Time, balance math.Int) bool { // Check the entries exists with creation_height and complete_time entryIndex := -1 for index, ubdEntry := range ubd.Entries { @@ -152,7 +131,7 @@ func (ubd *UnbondingDelegation) AddEntry(creationHeight int64, minTime time.Time return false } // append the new unbond delegation entry - entry := NewUnbondingDelegationEntry(creationHeight, minTime, balance, unbondingID) + entry := NewUnbondingDelegationEntry(creationHeight, minTime, balance) ubd.Entries = append(ubd.Entries, entry) return true } @@ -194,13 +173,12 @@ func (ubds UnbondingDelegations) String() (out string) { return strings.TrimSpace(out) } -func NewRedelegationEntry(creationHeight int64, completionTime time.Time, balance math.Int, sharesDst math.LegacyDec, id uint64) RedelegationEntry { +func NewRedelegationEntry(creationHeight int64, completionTime time.Time, balance math.Int, sharesDst math.LegacyDec) RedelegationEntry { return RedelegationEntry{ CreationHeight: creationHeight, CompletionTime: completionTime, InitialBalance: balance, SharesDst: sharesDst, - UnbondingId: id, UnbondingOnHoldRefCount: 0, } } @@ -217,7 +195,7 @@ func (e RedelegationEntry) OnHold() bool { func NewRedelegation( delegatorAddr sdk.AccAddress, validatorSrcAddr, validatorDstAddr sdk.ValAddress, - creationHeight int64, minTime time.Time, balance math.Int, sharesDst math.LegacyDec, id uint64, + creationHeight int64, minTime time.Time, balance math.Int, sharesDst math.LegacyDec, valAc, delAc address.Codec, ) Redelegation { valSrcAddr, err := valAc.BytesToString(validatorSrcAddr) @@ -238,14 +216,14 @@ func NewRedelegation( ValidatorSrcAddress: valSrcAddr, ValidatorDstAddress: valDstAddr, Entries: []RedelegationEntry{ - NewRedelegationEntry(creationHeight, minTime, balance, sharesDst, id), + NewRedelegationEntry(creationHeight, minTime, balance, sharesDst), }, } } // AddEntry - append entry to the unbonding delegation -func (red *Redelegation) AddEntry(creationHeight int64, minTime time.Time, balance math.Int, sharesDst math.LegacyDec, id uint64) { - entry := NewRedelegationEntry(creationHeight, minTime, balance, sharesDst, id) +func (red *Redelegation) AddEntry(creationHeight int64, minTime time.Time, balance math.Int, sharesDst math.LegacyDec) { + entry := NewRedelegationEntry(creationHeight, minTime, balance, sharesDst) red.Entries = append(red.Entries, entry) } @@ -341,10 +319,10 @@ func NewRedelegationResponse( // NewRedelegationEntryResponse creates a new RedelegationEntryResponse instance. func NewRedelegationEntryResponse( - creationHeight int64, completionTime time.Time, sharesDst math.LegacyDec, initialBalance, balance math.Int, unbondingID uint64, + creationHeight int64, completionTime time.Time, sharesDst math.LegacyDec, initialBalance, balance math.Int, ) RedelegationEntryResponse { return RedelegationEntryResponse{ - RedelegationEntry: NewRedelegationEntry(creationHeight, completionTime, initialBalance, sharesDst, unbondingID), + RedelegationEntry: NewRedelegationEntry(creationHeight, completionTime, initialBalance, sharesDst), Balance: balance, } } diff --git a/x/staking/types/delegation_test.go b/x/staking/types/delegation_test.go index 3452ce51744c..61d36bbf02f1 100644 --- a/x/staking/types/delegation_test.go +++ b/x/staking/types/delegation_test.go @@ -50,7 +50,7 @@ func TestDelegationString(t *testing.T) { func TestUnbondingDelegationEqual(t *testing.T) { ubd1 := types.NewUnbondingDelegation(sdk.AccAddress(valAddr1), valAddr2, 0, - time.Unix(0, 0), math.NewInt(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + time.Unix(0, 0), math.NewInt(0), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) ubd2 := ubd1 ok := ubd1.String() == ubd2.String() @@ -67,7 +67,7 @@ func TestUnbondingDelegationEqual(t *testing.T) { func TestUnbondingDelegationString(t *testing.T) { ubd := types.NewUnbondingDelegation(sdk.AccAddress(valAddr1), valAddr2, 0, - time.Unix(0, 0), math.NewInt(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + time.Unix(0, 0), math.NewInt(0), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) require.NotEmpty(t, ubd.String()) } @@ -75,10 +75,10 @@ func TestUnbondingDelegationString(t *testing.T) { func TestRedelegationEqual(t *testing.T) { r1 := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0, time.Unix(0, 0), math.NewInt(0), - math.LegacyNewDec(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + math.LegacyNewDec(0), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) r2 := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0, time.Unix(0, 0), math.NewInt(0), - math.LegacyNewDec(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + math.LegacyNewDec(0), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) require.True(t, proto.Equal(&r1, &r2)) r2.Entries[0].SharesDst = math.LegacyNewDec(10) @@ -89,7 +89,7 @@ func TestRedelegationEqual(t *testing.T) { func TestRedelegationString(t *testing.T) { r := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0, time.Unix(0, 0), math.NewInt(0), - math.LegacyNewDec(10), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + math.LegacyNewDec(10), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) require.NotEmpty(t, r.String()) } @@ -145,8 +145,8 @@ func TestRedelegationResponses(t *testing.T) { require.NoError(t, err) entries := []types.RedelegationEntryResponse{ - types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5), 0), - types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5), 0), + types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5)), + types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5)), } rdr1 := types.NewRedelegationResponse(addr1, vAddr2, vAddr3, entries) rdr2 := types.NewRedelegationResponse(addr2, vAddr1, vAddr3, entries) diff --git a/x/staking/types/expected_keepers.go b/x/staking/types/expected_keepers.go index e757c2c2b586..a67b52887b33 100644 --- a/x/staking/types/expected_keepers.go +++ b/x/staking/types/expected_keepers.go @@ -105,7 +105,6 @@ type StakingHooks interface { BeforeDelegationRemoved(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error // Must be called when a delegation is removed AfterDelegationModified(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error BeforeValidatorSlashed(ctx context.Context, valAddr sdk.ValAddress, fraction math.LegacyDec) error - AfterUnbondingInitiated(ctx context.Context, id uint64) error AfterConsensusPubKeyUpdate(ctx context.Context, oldPubKey, newPubKey cryptotypes.PubKey, rotationFee sdk.Coin) error } diff --git a/x/staking/types/hooks.go b/x/staking/types/hooks.go index 6cf0581b6e53..cb5a6099d4e7 100644 --- a/x/staking/types/hooks.go +++ b/x/staking/types/hooks.go @@ -109,15 +109,6 @@ func (h MultiStakingHooks) BeforeValidatorSlashed(ctx context.Context, valAddr s return nil } -func (h MultiStakingHooks) AfterUnbondingInitiated(ctx context.Context, id uint64) error { - for i := range h { - if err := h[i].AfterUnbondingInitiated(ctx, id); err != nil { - return err - } - } - return nil -} - func (h MultiStakingHooks) AfterConsensusPubKeyUpdate(ctx context.Context, oldPubKey, newPubKey cryptotypes.PubKey, rotationFee sdk.Coin) error { for i := range h { if err := h[i].AfterConsensusPubKeyUpdate(ctx, oldPubKey, newPubKey, rotationFee); err != nil { diff --git a/x/staking/types/keys.go b/x/staking/types/keys.go index 03335a9a8372..7228716a7700 100644 --- a/x/staking/types/keys.go +++ b/x/staking/types/keys.go @@ -49,10 +49,6 @@ var ( RedelegationByValSrcIndexKey = collections.NewPrefix(53) // prefix for each key for a redelegation, by source validator operator RedelegationByValDstIndexKey = collections.NewPrefix(54) // prefix for each key for a redelegation, by destination validator operator - UnbondingIDKey = collections.NewPrefix(55) // key for the counter for the incrementing id for UnbondingOperations - UnbondingIndexKey = collections.NewPrefix(56) // prefix for an index for looking up unbonding operations by their IDs - UnbondingTypeKey = collections.NewPrefix(57) // prefix for an index containing the type of unbonding operations - UnbondingQueueKey = collections.NewPrefix(65) // prefix for the timestamps in unbonding queue RedelegationQueueKey = collections.NewPrefix(66) // prefix for the timestamps in redelegations queue ValidatorQueueKey = collections.NewPrefix(67) // prefix for the timestamps in validator queue diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 1a6ae219a100..47691b5dff7f 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -793,7 +793,7 @@ type UnbondingDelegationEntry struct { // balance defines the tokens to receive at completion. Balance cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=balance,proto3,customtype=cosmossdk.io/math.Int" json:"balance"` // Incrementing id that uniquely identifies this entry - UnbondingId uint64 `protobuf:"varint,5,opt,name=unbonding_id,json=unbondingId,proto3" json:"unbonding_id,omitempty"` + UnbondingId uint64 `protobuf:"varint,5,opt,name=unbonding_id,json=unbondingId,proto3" json:"unbonding_id,omitempty"` // Deprecated: Do not use. // Strictly positive if this entry's unbonding has been stopped by external modules UnbondingOnHoldRefCount int64 `protobuf:"varint,6,opt,name=unbonding_on_hold_ref_count,json=unbondingOnHoldRefCount,proto3" json:"unbonding_on_hold_ref_count,omitempty"` } @@ -845,6 +845,7 @@ func (m *UnbondingDelegationEntry) GetCompletionTime() time.Time { return time.Time{} } +// Deprecated: Do not use. func (m *UnbondingDelegationEntry) GetUnbondingId() uint64 { if m != nil { return m.UnbondingId @@ -1449,142 +1450,142 @@ func init() { } var fileDescriptor_64c30c6cf92913c9 = []byte{ - // 2150 bytes of a gzipped FileDescriptorProto + // 2154 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0x4b, 0x6c, 0x1b, 0xc7, - 0x19, 0xd6, 0x92, 0x34, 0x25, 0xfe, 0x14, 0x45, 0x6a, 0xfc, 0xa2, 0xe8, 0x58, 0x92, 0x19, 0x37, + 0x19, 0xd6, 0x92, 0x0c, 0x25, 0xfe, 0x14, 0x45, 0x6a, 0xfc, 0xa2, 0xe8, 0x58, 0x92, 0x19, 0x27, 0x91, 0xdd, 0x98, 0x8c, 0xdc, 0xc2, 0x05, 0x84, 0x20, 0x85, 0x29, 0xca, 0x36, 0x93, 0x58, 0x52, 0x97, 0xa2, 0xfa, 0x40, 0x9b, 0xc5, 0x70, 0x77, 0x48, 0x6d, 0x45, 0xee, 0xb2, 0x3b, 0x43, 0xd9, - 0xbc, 0xf7, 0x10, 0xb8, 0x28, 0x90, 0x53, 0x11, 0xa0, 0x30, 0x6a, 0xa0, 0x97, 0xf6, 0x96, 0x83, - 0xd1, 0x7b, 0x6f, 0x69, 0x81, 0x02, 0x86, 0x4f, 0x45, 0x80, 0xba, 0x85, 0x7d, 0x48, 0xd0, 0x5c, - 0xda, 0x9e, 0x7a, 0x2c, 0xe6, 0xb1, 0x0f, 0x8a, 0xa2, 0x65, 0xc9, 0x41, 0x11, 0xb4, 0x17, 0x62, - 0x67, 0xe6, 0xff, 0xbf, 0x99, 0xff, 0x3d, 0xf3, 0x13, 0x2e, 0x9a, 0x2e, 0xed, 0xba, 0xb4, 0x4c, - 0x19, 0xde, 0xb5, 0x9d, 0x76, 0x79, 0x6f, 0xb9, 0x49, 0x18, 0x5e, 0xf6, 0xc7, 0xa5, 0x9e, 0xe7, - 0x32, 0x17, 0x9d, 0x91, 0x54, 0x25, 0x7f, 0x56, 0x51, 0x15, 0x66, 0x71, 0xd7, 0x76, 0xdc, 0xb2, - 0xf8, 0x95, 0xa4, 0x85, 0x57, 0x4c, 0xb7, 0x4b, 0x58, 0xb3, 0xc5, 0xca, 0xb8, 0x69, 0xda, 0xe5, - 0xbd, 0xe5, 0x32, 0x1b, 0xf4, 0x08, 0x55, 0xab, 0xe7, 0x83, 0x55, 0x31, 0xbb, 0x7f, 0x79, 0x5e, - 0x9d, 0xa6, 0x89, 0x29, 0x09, 0x8e, 0x62, 0xba, 0xb6, 0xa3, 0xd6, 0xe7, 0xe4, 0xba, 0x21, 0x46, - 0x65, 0x75, 0x28, 0xb9, 0x74, 0xaa, 0xed, 0xb6, 0x5d, 0x39, 0xcf, 0xbf, 0x7c, 0x86, 0xb6, 0xeb, - 0xb6, 0x3b, 0xa4, 0x2c, 0x46, 0xcd, 0x7e, 0xab, 0x8c, 0x9d, 0x81, 0xbf, 0xd7, 0xfe, 0x25, 0xab, - 0xef, 0x61, 0x66, 0xbb, 0xfe, 0x5e, 0x0b, 0xfb, 0xd7, 0x99, 0xdd, 0x25, 0x94, 0xe1, 0x6e, 0x4f, - 0x12, 0x14, 0x3f, 0xd2, 0x60, 0xe6, 0x96, 0x4d, 0x99, 0xeb, 0xd9, 0x26, 0xee, 0xd4, 0x9c, 0x96, - 0x8b, 0xde, 0x82, 0xe4, 0x0e, 0xc1, 0x16, 0xf1, 0xf2, 0xda, 0xa2, 0xb6, 0x94, 0xbe, 0x3a, 0x57, - 0xf2, 0xe5, 0x2d, 0x49, 0x31, 0xf7, 0x96, 0x4b, 0xb7, 0x04, 0x41, 0x25, 0xf5, 0xc9, 0x93, 0x85, - 0x89, 0xdf, 0x7c, 0xf6, 0xf1, 0x65, 0x4d, 0x57, 0x3c, 0xa8, 0x0a, 0xc9, 0x3d, 0xdc, 0xa1, 0x84, - 0xe5, 0x63, 0x8b, 0xf1, 0xa5, 0xf4, 0xd5, 0x0b, 0xa5, 0x83, 0xd5, 0x5e, 0xda, 0xc6, 0x1d, 0xdb, - 0xc2, 0xcc, 0x1d, 0x46, 0x91, 0xbc, 0x2b, 0xb1, 0xbc, 0x56, 0xfc, 0x45, 0x0c, 0xb2, 0xab, 0x6e, - 0xb7, 0x6b, 0x53, 0x6a, 0xbb, 0x8e, 0x8e, 0x19, 0xa1, 0xe8, 0x1d, 0x48, 0x78, 0x98, 0x11, 0x71, - 0xb2, 0x54, 0xe5, 0x1a, 0x67, 0xfc, 0xf4, 0xc9, 0xc2, 0x39, 0xb9, 0x05, 0xb5, 0x76, 0x4b, 0xb6, - 0x5b, 0xee, 0x62, 0xb6, 0x53, 0x7a, 0x8f, 0xb4, 0xb1, 0x39, 0xa8, 0x12, 0xf3, 0xf1, 0xc3, 0x2b, - 0xa0, 0x4e, 0x50, 0x25, 0xa6, 0xdc, 0x45, 0x60, 0xa0, 0xef, 0xc0, 0x54, 0x17, 0xdf, 0x35, 0x04, - 0x5e, 0xec, 0xa5, 0xf0, 0x26, 0xbb, 0xf8, 0x2e, 0x3f, 0x1f, 0x7a, 0x1f, 0xb2, 0x1c, 0xd2, 0xdc, - 0xc1, 0x4e, 0x9b, 0x48, 0xe4, 0xf8, 0x4b, 0x21, 0x67, 0xba, 0xf8, 0xee, 0xaa, 0x40, 0xe3, 0xf8, - 0x2b, 0x89, 0xcf, 0x1f, 0x2c, 0x68, 0xc5, 0xdf, 0x6b, 0x00, 0xa1, 0x62, 0x10, 0x86, 0x9c, 0x19, - 0x8c, 0xc4, 0xa6, 0x54, 0x59, 0xee, 0xf5, 0x71, 0xba, 0xdf, 0xa7, 0xd6, 0x4a, 0x86, 0x1f, 0xef, - 0xd1, 0x93, 0x05, 0x4d, 0xee, 0x9a, 0x35, 0x47, 0xd4, 0x9e, 0xee, 0xf7, 0x2c, 0xcc, 0x88, 0xc1, - 0xfd, 0x47, 0x68, 0x2b, 0x7d, 0xb5, 0x50, 0x92, 0xce, 0x55, 0xf2, 0x9d, 0xab, 0xb4, 0xe5, 0x3b, - 0x97, 0x04, 0xfc, 0xf0, 0xaf, 0x3e, 0x20, 0x48, 0x6e, 0xbe, 0xae, 0x64, 0xf8, 0xa7, 0x06, 0xe9, - 0x2a, 0xa1, 0xa6, 0x67, 0xf7, 0xb8, 0xbb, 0xa2, 0x3c, 0x4c, 0x76, 0x5d, 0xc7, 0xde, 0x55, 0x5e, - 0x97, 0xd2, 0xfd, 0x21, 0x2a, 0xc0, 0x94, 0x6d, 0x11, 0x87, 0xd9, 0x6c, 0x20, 0xcd, 0xa4, 0x07, - 0x63, 0xce, 0x75, 0x87, 0x34, 0xa9, 0xed, 0xeb, 0x59, 0xf7, 0x87, 0xe8, 0x12, 0xe4, 0x28, 0x31, - 0xfb, 0x9e, 0xcd, 0x06, 0x86, 0xe9, 0x3a, 0x0c, 0x9b, 0x2c, 0x9f, 0x10, 0x24, 0x59, 0x7f, 0x7e, - 0x55, 0x4e, 0x73, 0x10, 0x8b, 0x30, 0x6c, 0x77, 0x68, 0xfe, 0x84, 0x04, 0x51, 0x43, 0x74, 0x13, - 0xa6, 0xba, 0x84, 0x61, 0x0b, 0x33, 0x9c, 0x4f, 0x0a, 0x99, 0x17, 0xc7, 0x69, 0xf4, 0xb6, 0xa2, - 0x13, 0xce, 0x2c, 0xa4, 0x9e, 0xd0, 0x03, 0x66, 0x25, 0x73, 0x0b, 0xa6, 0x7c, 0x32, 0xf4, 0x1a, - 0x64, 0x7b, 0x9e, 0xdb, 0xb2, 0x3b, 0xc4, 0xe8, 0xd9, 0xa6, 0xd1, 0xf7, 0x6c, 0x25, 0x77, 0x46, - 0x4d, 0x6f, 0xda, 0x66, 0xc3, 0xb3, 0xd1, 0x1b, 0x80, 0xa8, 0x6b, 0xda, 0xb8, 0x63, 0xec, 0x60, - 0xc7, 0xea, 0x10, 0x4e, 0x49, 0x45, 0x68, 0xa5, 0xf4, 0x9c, 0x5c, 0xb9, 0x25, 0x16, 0x1a, 0x9e, - 0x4d, 0xd5, 0x3e, 0xf7, 0x27, 0x21, 0x15, 0x44, 0x17, 0x5a, 0x85, 0x9c, 0xdb, 0x23, 0x1e, 0xff, - 0x36, 0xb0, 0x65, 0x79, 0x84, 0x52, 0x15, 0x3e, 0xf9, 0xc7, 0x0f, 0xaf, 0x9c, 0x52, 0xf2, 0x5c, - 0x97, 0x2b, 0x75, 0xe6, 0xd9, 0x4e, 0x5b, 0xcf, 0xfa, 0x1c, 0x6a, 0x1a, 0x7d, 0x9f, 0xfb, 0x98, - 0x43, 0x89, 0x43, 0xfb, 0xd4, 0xe8, 0xf5, 0x9b, 0xbb, 0x64, 0xa0, 0xbc, 0xe0, 0xd4, 0x88, 0x17, - 0x5c, 0x77, 0x06, 0x95, 0xfc, 0x1f, 0x43, 0x68, 0xd3, 0x1b, 0xf4, 0x98, 0x5b, 0xda, 0xec, 0x37, - 0xdf, 0x25, 0x03, 0xee, 0x5b, 0x0a, 0x67, 0x53, 0xc0, 0xa0, 0x33, 0x90, 0xfc, 0x31, 0xb6, 0x3b, - 0xc4, 0x12, 0x26, 0x9c, 0xd2, 0xd5, 0x08, 0xad, 0x40, 0x92, 0x32, 0xcc, 0xfa, 0x54, 0xd8, 0x6d, - 0xe6, 0x6a, 0x71, 0x9c, 0xea, 0x2b, 0xae, 0x63, 0xd5, 0x05, 0xa5, 0xae, 0x38, 0xd0, 0x2a, 0x24, - 0x99, 0xbb, 0x4b, 0x1c, 0x65, 0xd1, 0xca, 0xd7, 0x55, 0xf8, 0x9d, 0x1e, 0x0d, 0xbf, 0x9a, 0xc3, - 0x22, 0x81, 0x57, 0x73, 0x98, 0xae, 0x58, 0xd1, 0x0f, 0x21, 0x67, 0x91, 0x0e, 0x69, 0x0b, 0xcd, - 0xd1, 0x1d, 0xec, 0x11, 0x2a, 0xbc, 0x20, 0x55, 0x59, 0x3e, 0x72, 0x34, 0xeb, 0xd9, 0x00, 0xaa, - 0x2e, 0x90, 0xd0, 0x26, 0xa4, 0xad, 0xd0, 0xff, 0xf3, 0x93, 0x42, 0x99, 0xaf, 0x8e, 0x93, 0x31, - 0x12, 0x2a, 0xd1, 0x74, 0x19, 0x85, 0xe0, 0x2e, 0xdf, 0x77, 0x9a, 0xae, 0x63, 0xd9, 0x4e, 0xdb, - 0xd8, 0x21, 0x76, 0x7b, 0x87, 0xe5, 0xa7, 0x16, 0xb5, 0xa5, 0xb8, 0x9e, 0x0d, 0xe6, 0x6f, 0x89, - 0x69, 0xb4, 0x09, 0x33, 0x21, 0xa9, 0x08, 0xe9, 0xd4, 0x51, 0x43, 0x3a, 0x13, 0x00, 0x70, 0x12, - 0x74, 0x1b, 0x20, 0x4c, 0x1a, 0x79, 0x10, 0x68, 0xc5, 0xc3, 0xd3, 0x4f, 0x54, 0x98, 0x08, 0x00, - 0x72, 0xe0, 0x64, 0xd7, 0x76, 0x0c, 0x4a, 0x3a, 0x2d, 0x43, 0x69, 0x8e, 0xe3, 0xa6, 0x85, 0xfa, - 0xdf, 0x3e, 0x82, 0x35, 0x3f, 0x7d, 0x78, 0x25, 0x2b, 0x47, 0x57, 0xa8, 0xb5, 0xbb, 0xf8, 0x66, - 0xe9, 0x9b, 0xdf, 0xd2, 0x67, 0xbb, 0xb6, 0x53, 0x27, 0x9d, 0x56, 0x35, 0x00, 0x46, 0x6f, 0xc1, - 0xb9, 0x50, 0x21, 0xae, 0x63, 0xec, 0xb8, 0x1d, 0xcb, 0xf0, 0x48, 0xcb, 0x30, 0xdd, 0xbe, 0xc3, - 0xf2, 0xd3, 0x42, 0x8d, 0x67, 0x03, 0x92, 0x0d, 0xe7, 0x96, 0xdb, 0xb1, 0x74, 0xd2, 0x5a, 0xe5, - 0xcb, 0xe8, 0x55, 0x08, 0xb5, 0x61, 0xd8, 0x16, 0xcd, 0x67, 0x16, 0xe3, 0x4b, 0x09, 0x7d, 0x3a, - 0x98, 0xac, 0x59, 0x74, 0x65, 0xea, 0x83, 0x07, 0x0b, 0x13, 0x9f, 0x3f, 0x58, 0x98, 0x28, 0xde, - 0x80, 0xe9, 0x6d, 0xdc, 0x51, 0xa1, 0x45, 0x28, 0xba, 0x06, 0x29, 0xec, 0x0f, 0xf2, 0x1a, 0x0f, - 0xed, 0xe7, 0x84, 0x66, 0x48, 0x5a, 0xfc, 0xad, 0x06, 0xc9, 0xea, 0xf6, 0x26, 0xb6, 0x3d, 0xb4, - 0x06, 0xb3, 0xa1, 0xaf, 0xbe, 0x68, 0x94, 0x87, 0xee, 0xed, 0x87, 0xf9, 0x3a, 0xcc, 0xee, 0xf9, - 0x89, 0x23, 0x80, 0x91, 0xb5, 0xf1, 0xc2, 0xe3, 0x87, 0x57, 0xce, 0x2b, 0x98, 0x20, 0xb9, 0xec, - 0xc3, 0xdb, 0xdb, 0x37, 0x1f, 0x91, 0xf9, 0x1d, 0x98, 0x94, 0x47, 0xa5, 0xe8, 0xdb, 0x70, 0xa2, - 0xc7, 0x3f, 0x84, 0xa8, 0xe9, 0xab, 0xf3, 0x63, 0x7d, 0x5e, 0xd0, 0x47, 0x3d, 0x44, 0xf2, 0x15, - 0x7f, 0x16, 0x03, 0xa8, 0x6e, 0x6f, 0x6f, 0x79, 0x76, 0xaf, 0x43, 0xd8, 0x97, 0x25, 0x7b, 0x03, - 0x4e, 0x87, 0xb2, 0x53, 0xcf, 0x3c, 0xba, 0xfc, 0x27, 0x03, 0xfe, 0xba, 0x67, 0x1e, 0x08, 0x6b, - 0x51, 0x16, 0xc0, 0xc6, 0x8f, 0x0e, 0x5b, 0xa5, 0x6c, 0x54, 0xb3, 0xdf, 0x83, 0x74, 0xa8, 0x0c, - 0x8a, 0x6a, 0x30, 0xc5, 0xd4, 0xb7, 0x52, 0x70, 0x71, 0xbc, 0x82, 0x7d, 0xb6, 0xa8, 0x92, 0x03, - 0xf6, 0xe2, 0xbf, 0x35, 0x80, 0x48, 0x8c, 0x7c, 0x35, 0x7d, 0x0c, 0xd5, 0x20, 0xa9, 0x92, 0x73, - 0xfc, 0xb8, 0xc9, 0x59, 0x01, 0x44, 0x94, 0xfa, 0xf3, 0x18, 0x9c, 0x6c, 0xf8, 0xd1, 0xfb, 0xd5, - 0xd7, 0x41, 0x03, 0x26, 0x89, 0xc3, 0x3c, 0x5b, 0x28, 0x81, 0xdb, 0xfc, 0xcd, 0x71, 0x36, 0x3f, - 0x40, 0xa8, 0x35, 0x87, 0x79, 0x83, 0xa8, 0x07, 0xf8, 0x58, 0x11, 0x7d, 0xfc, 0x32, 0x0e, 0xf9, - 0x71, 0xac, 0xe8, 0x75, 0xc8, 0x9a, 0x1e, 0x11, 0x13, 0x7e, 0xdd, 0xd1, 0x44, 0xc2, 0x9c, 0xf1, - 0xa7, 0x55, 0xd9, 0xd1, 0x81, 0xdf, 0x2c, 0xb9, 0x73, 0x71, 0xd2, 0xe3, 0x5d, 0x25, 0x67, 0x42, - 0x04, 0x51, 0x78, 0xb6, 0x20, 0x6b, 0x3b, 0x36, 0xe3, 0x37, 0xa4, 0x26, 0xee, 0x60, 0xc7, 0xf4, - 0xaf, 0xdc, 0x47, 0xaa, 0xf9, 0x33, 0x0a, 0xa3, 0x22, 0x21, 0xd0, 0x1a, 0x4c, 0xfa, 0x68, 0x89, - 0xa3, 0xa3, 0xf9, 0xbc, 0xe8, 0x02, 0x4c, 0x47, 0x0b, 0x83, 0xb8, 0x8d, 0x24, 0xf4, 0x74, 0xa4, - 0x2e, 0x1c, 0x56, 0x79, 0x92, 0xcf, 0xad, 0x3c, 0xea, 0xc2, 0xf7, 0xab, 0x38, 0xcc, 0xea, 0xc4, - 0xfa, 0xdf, 0x37, 0xcb, 0x26, 0x80, 0x0c, 0x55, 0x9e, 0x49, 0x95, 0x65, 0x8e, 0x11, 0xef, 0x29, - 0x09, 0x52, 0xa5, 0xec, 0xbf, 0x65, 0xa1, 0xbf, 0xc4, 0x60, 0x3a, 0x6a, 0xa1, 0xff, 0xcb, 0xa2, - 0x85, 0xd6, 0xc3, 0x34, 0x95, 0x10, 0x69, 0xea, 0xd2, 0xb8, 0x34, 0x35, 0xe2, 0xcd, 0x87, 0xe4, - 0xa7, 0x2f, 0xe2, 0x90, 0xdc, 0xc4, 0x1e, 0xee, 0x52, 0xb4, 0x31, 0x72, 0xb7, 0xf5, 0xdb, 0x18, - 0xfb, 0x9d, 0xb9, 0xaa, 0x7a, 0x25, 0xd2, 0x97, 0x3f, 0x1a, 0x77, 0xb5, 0xfd, 0x1a, 0xcc, 0xf0, - 0x47, 0x7d, 0x20, 0x90, 0x54, 0x6e, 0x46, 0xbc, 0xcd, 0x03, 0xe9, 0x29, 0x5a, 0x80, 0x34, 0x27, - 0x0b, 0xf3, 0x30, 0xa7, 0x81, 0x2e, 0xbe, 0xbb, 0x26, 0x67, 0xd0, 0x32, 0xa0, 0x9d, 0xa0, 0xd3, - 0x62, 0x84, 0x8a, 0xd0, 0x96, 0x32, 0x95, 0x58, 0x5e, 0xd3, 0x67, 0xc3, 0x55, 0x9f, 0xe5, 0x3c, - 0x00, 0x3f, 0x89, 0x61, 0x11, 0xc7, 0xed, 0xaa, 0xd7, 0x69, 0x8a, 0xcf, 0x54, 0xf9, 0x04, 0xfa, - 0xa9, 0x26, 0xaf, 0xc9, 0xfb, 0x9e, 0xff, 0xea, 0x95, 0xb2, 0xf5, 0x02, 0x81, 0xf1, 0xaf, 0x27, - 0x0b, 0x85, 0x01, 0xee, 0x76, 0x56, 0x8a, 0x07, 0xe0, 0x14, 0x0f, 0xea, 0x48, 0xf0, 0xcb, 0xf3, - 0x70, 0xfb, 0x00, 0xd5, 0x20, 0xb7, 0x4b, 0x06, 0x86, 0xe7, 0x32, 0x99, 0x6c, 0x5a, 0x84, 0xa8, - 0xf7, 0xcc, 0x9c, 0x6f, 0xdf, 0x26, 0xa6, 0x24, 0x72, 0xfd, 0xb7, 0x9d, 0x4a, 0x82, 0x9f, 0x4e, - 0x9f, 0xd9, 0x25, 0x03, 0x5d, 0xf1, 0xdd, 0x20, 0x64, 0xe5, 0x22, 0x8f, 0x96, 0x7b, 0x9f, 0x7d, - 0x7c, 0xf9, 0x5c, 0x78, 0x69, 0x2f, 0xdf, 0x0d, 0x1a, 0x7b, 0xd2, 0xc4, 0xfc, 0xe2, 0x8b, 0xc2, - 0x22, 0xa4, 0x13, 0xda, 0xe3, 0x6f, 0x4a, 0xfe, 0x06, 0x89, 0xbc, 0x15, 0xb4, 0xe7, 0xbf, 0x41, - 0x42, 0xfe, 0xa1, 0x37, 0x48, 0x24, 0x44, 0xdf, 0x0e, 0x6b, 0x40, 0xec, 0x30, 0x69, 0xa2, 0xde, - 0xa9, 0x98, 0x44, 0xe4, 0x4f, 0x14, 0xff, 0xa4, 0xc1, 0xdc, 0x88, 0x37, 0x07, 0x47, 0x36, 0x01, - 0x79, 0x91, 0x45, 0xe1, 0x15, 0x03, 0x75, 0xf4, 0xe3, 0x05, 0xc7, 0xac, 0x37, 0x52, 0x08, 0xbe, - 0x9c, 0x62, 0xa6, 0x32, 0xd9, 0x1f, 0x34, 0x38, 0x15, 0x3d, 0x40, 0x20, 0x4a, 0x1d, 0xa6, 0xa3, - 0x5b, 0x2b, 0x21, 0x2e, 0xbe, 0x88, 0x10, 0xd1, 0xf3, 0x0f, 0x81, 0xa0, 0xed, 0x30, 0x63, 0xc8, - 0x76, 0xe2, 0xf2, 0x0b, 0x2b, 0xc5, 0x3f, 0xd8, 0x81, 0x99, 0x43, 0xda, 0xe6, 0x0b, 0x0d, 0x12, - 0x9b, 0xae, 0xdb, 0x41, 0x3f, 0x81, 0x59, 0xc7, 0x65, 0x06, 0x8f, 0x2c, 0x62, 0x19, 0xaa, 0x75, - 0x20, 0xb3, 0xf1, 0xda, 0x73, 0x75, 0xf5, 0xf7, 0x27, 0x0b, 0xa3, 0x9c, 0xc3, 0x0a, 0x54, 0x2d, - 0x35, 0xc7, 0x65, 0x15, 0x41, 0xb4, 0x25, 0xbb, 0x0b, 0x2d, 0xc8, 0x0c, 0x6f, 0x27, 0x33, 0xf6, - 0xf5, 0xc3, 0xb6, 0xcb, 0x1c, 0xba, 0xd5, 0x74, 0x33, 0xb2, 0xcf, 0xca, 0x14, 0xb7, 0xda, 0x3f, - 0xb8, 0xe5, 0xde, 0x87, 0x5c, 0x90, 0xae, 0x1a, 0xa2, 0x1f, 0x47, 0xd1, 0x0d, 0x98, 0x94, 0xad, - 0x39, 0xff, 0xb1, 0x70, 0x21, 0x6c, 0xf6, 0xe2, 0xa6, 0x69, 0x97, 0xf6, 0x22, 0x8d, 0x5a, 0xc9, - 0x34, 0xa4, 0x4f, 0xc5, 0x2c, 0xfa, 0xb5, 0x8f, 0x62, 0x30, 0xb7, 0xea, 0x3a, 0x54, 0x35, 0x7a, - 0x54, 0x54, 0xcb, 0xe6, 0xf2, 0x00, 0x5d, 0x1a, 0xd3, 0x86, 0x9a, 0x1e, 0x6d, 0x36, 0x6d, 0x43, - 0x96, 0x97, 0x58, 0xd3, 0x75, 0x5e, 0xb2, 0xd7, 0x94, 0x71, 0x3b, 0x96, 0x3a, 0xd1, 0x2e, 0x19, - 0x70, 0x5c, 0x87, 0xdc, 0x19, 0xc2, 0x8d, 0x1f, 0x0f, 0xd7, 0x21, 0x77, 0x22, 0xb8, 0x67, 0x20, - 0xa9, 0xee, 0x57, 0x09, 0x71, 0x7b, 0x50, 0x23, 0x74, 0x0d, 0xe2, 0x3c, 0x15, 0x9e, 0x38, 0x42, - 0xf2, 0xe0, 0x0c, 0x91, 0xb2, 0x56, 0x87, 0x39, 0xd5, 0x29, 0xa0, 0x1b, 0x2d, 0xa1, 0x51, 0x22, - 0x04, 0x7a, 0x97, 0x0c, 0x0e, 0x68, 0x1b, 0x4c, 0xbf, 0x50, 0xdb, 0xe0, 0xf2, 0xef, 0x34, 0x80, - 0xb0, 0x67, 0x86, 0xde, 0x80, 0xb3, 0x95, 0x8d, 0xf5, 0xaa, 0x51, 0xdf, 0xba, 0xbe, 0xd5, 0xa8, - 0x1b, 0x8d, 0xf5, 0xfa, 0xe6, 0xda, 0x6a, 0xed, 0x46, 0x6d, 0xad, 0x9a, 0x9b, 0x28, 0x64, 0xef, - 0xdd, 0x5f, 0x4c, 0x37, 0x1c, 0xda, 0x23, 0xa6, 0xdd, 0xb2, 0x89, 0x85, 0x5e, 0x83, 0x53, 0xc3, - 0xd4, 0x7c, 0xb4, 0x56, 0xcd, 0x69, 0x85, 0xe9, 0x7b, 0xf7, 0x17, 0xa7, 0xe4, 0x1b, 0x81, 0x58, - 0x68, 0x09, 0x4e, 0x8f, 0xd2, 0xd5, 0xd6, 0x6f, 0xe6, 0x62, 0x85, 0xcc, 0xbd, 0xfb, 0x8b, 0xa9, - 0xe0, 0x31, 0x81, 0x8a, 0x80, 0xa2, 0x94, 0x0a, 0x2f, 0x5e, 0x80, 0x7b, 0xf7, 0x17, 0x93, 0x32, - 0x64, 0x0a, 0x89, 0x0f, 0x7e, 0x3d, 0x3f, 0x71, 0xf9, 0x47, 0x00, 0x35, 0xa7, 0xe5, 0x61, 0x53, - 0xa4, 0x86, 0x02, 0x9c, 0xa9, 0xad, 0xdf, 0xd0, 0xaf, 0xaf, 0x6e, 0xd5, 0x36, 0xd6, 0x87, 0x8f, - 0xbd, 0x6f, 0xad, 0xba, 0xd1, 0xa8, 0xbc, 0xb7, 0x66, 0xd4, 0x6b, 0x37, 0xd7, 0x73, 0x1a, 0x3a, - 0x0b, 0x27, 0x87, 0xd6, 0xbe, 0xbb, 0xbe, 0x55, 0xbb, 0xbd, 0x96, 0x8b, 0x55, 0xae, 0x7d, 0xf2, - 0x74, 0x5e, 0x7b, 0xf4, 0x74, 0x5e, 0xfb, 0xdb, 0xd3, 0x79, 0xed, 0xc3, 0x67, 0xf3, 0x13, 0x8f, - 0x9e, 0xcd, 0x4f, 0xfc, 0xf9, 0xd9, 0xfc, 0xc4, 0x0f, 0x5e, 0x19, 0x0a, 0xc6, 0xb0, 0x1c, 0x89, - 0xbf, 0x43, 0x9a, 0x49, 0xe1, 0x35, 0xdf, 0xf8, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xca, 0x97, - 0xa2, 0x84, 0x86, 0x1a, 0x00, 0x00, + 0xbc, 0xf7, 0x10, 0xb8, 0x28, 0x90, 0x53, 0x91, 0x8b, 0x11, 0x03, 0xbd, 0xb4, 0xb7, 0x1c, 0x8c, + 0xde, 0x7b, 0x4b, 0x0b, 0x14, 0x30, 0x7c, 0x2a, 0x02, 0xd4, 0x2d, 0xec, 0x43, 0x82, 0xe6, 0xd2, + 0xf6, 0xd4, 0x63, 0x31, 0x8f, 0x7d, 0x50, 0x14, 0x2d, 0x4b, 0xf6, 0x21, 0x68, 0x2f, 0xc4, 0xce, + 0xcc, 0xff, 0x7f, 0x33, 0xff, 0x7b, 0xe6, 0x27, 0x5c, 0x30, 0x5d, 0xda, 0x75, 0x69, 0x99, 0x32, + 0xbc, 0x6b, 0x3b, 0xed, 0xf2, 0xde, 0x72, 0x93, 0x30, 0xbc, 0xec, 0x8f, 0x4b, 0x3d, 0xcf, 0x65, + 0x2e, 0x3a, 0x2d, 0xa9, 0x4a, 0xfe, 0xac, 0xa2, 0x2a, 0xcc, 0xe2, 0xae, 0xed, 0xb8, 0x65, 0xf1, + 0x2b, 0x49, 0x0b, 0xaf, 0x9a, 0x6e, 0x97, 0xb0, 0x66, 0x8b, 0x95, 0x71, 0xd3, 0xb4, 0xcb, 0x7b, + 0xcb, 0x65, 0x36, 0xe8, 0x11, 0xaa, 0x56, 0xcf, 0x05, 0xab, 0x62, 0x76, 0xff, 0xf2, 0xbc, 0x3a, + 0x4d, 0x13, 0x53, 0x12, 0x1c, 0xc5, 0x74, 0x6d, 0x47, 0xad, 0xcf, 0xc9, 0x75, 0x43, 0x8c, 0xca, + 0xea, 0x50, 0x72, 0xe9, 0x64, 0xdb, 0x6d, 0xbb, 0x72, 0x9e, 0x7f, 0xf9, 0x0c, 0x6d, 0xd7, 0x6d, + 0x77, 0x48, 0x59, 0x8c, 0x9a, 0xfd, 0x56, 0x19, 0x3b, 0x03, 0x7f, 0xaf, 0xfd, 0x4b, 0x56, 0xdf, + 0xc3, 0xcc, 0x76, 0xfd, 0xbd, 0x16, 0xf6, 0xaf, 0x33, 0xbb, 0x4b, 0x28, 0xc3, 0xdd, 0x9e, 0x24, + 0x28, 0x7e, 0xa2, 0xc1, 0xcc, 0x4d, 0x9b, 0x32, 0xd7, 0xb3, 0x4d, 0xdc, 0xa9, 0x39, 0x2d, 0x17, + 0xbd, 0x03, 0xc9, 0x1d, 0x82, 0x2d, 0xe2, 0xe5, 0xb5, 0x45, 0x6d, 0x29, 0x7d, 0x65, 0xae, 0xe4, + 0xcb, 0x5b, 0x92, 0x62, 0xee, 0x2d, 0x97, 0x6e, 0x0a, 0x82, 0x4a, 0xea, 0xf3, 0xc7, 0x0b, 0x13, + 0xbf, 0xfd, 0xf2, 0xb3, 0x4b, 0x9a, 0xae, 0x78, 0x50, 0x15, 0x92, 0x7b, 0xb8, 0x43, 0x09, 0xcb, + 0xc7, 0x16, 0xe3, 0x4b, 0xe9, 0x2b, 0xe7, 0x4b, 0x07, 0xab, 0xbd, 0xb4, 0x8d, 0x3b, 0xb6, 0x85, + 0x99, 0x3b, 0x8c, 0x22, 0x79, 0x57, 0x62, 0x79, 0xad, 0xf8, 0xeb, 0x18, 0x64, 0x57, 0xdd, 0x6e, + 0xd7, 0xa6, 0xd4, 0x76, 0x1d, 0x1d, 0x33, 0x42, 0xd1, 0x7b, 0x90, 0xf0, 0x30, 0x23, 0xe2, 0x64, + 0xa9, 0xca, 0x55, 0xce, 0xf8, 0xc5, 0xe3, 0x85, 0xb3, 0x72, 0x0b, 0x6a, 0xed, 0x96, 0x6c, 0xb7, + 0xdc, 0xc5, 0x6c, 0xa7, 0xf4, 0x01, 0x69, 0x63, 0x73, 0x50, 0x25, 0xe6, 0xa3, 0x07, 0x97, 0x41, + 0x9d, 0xa0, 0x4a, 0x4c, 0xb9, 0x8b, 0xc0, 0x40, 0xdf, 0x87, 0xa9, 0x2e, 0xbe, 0x63, 0x08, 0xbc, + 0xd8, 0x0b, 0xe1, 0x4d, 0x76, 0xf1, 0x1d, 0x7e, 0x3e, 0xf4, 0x21, 0x64, 0x39, 0xa4, 0xb9, 0x83, + 0x9d, 0x36, 0x91, 0xc8, 0xf1, 0x17, 0x42, 0xce, 0x74, 0xf1, 0x9d, 0x55, 0x81, 0xc6, 0xf1, 0x57, + 0x12, 0x5f, 0xdd, 0x5f, 0xd0, 0x8a, 0x7f, 0xd0, 0x00, 0x42, 0xc5, 0x20, 0x0c, 0x39, 0x33, 0x18, + 0x89, 0x4d, 0xa9, 0xb2, 0xdc, 0x9b, 0xe3, 0x74, 0xbf, 0x4f, 0xad, 0x95, 0x0c, 0x3f, 0xde, 0xc3, + 0xc7, 0x0b, 0x9a, 0xdc, 0x35, 0x6b, 0x8e, 0xa8, 0x3d, 0xdd, 0xef, 0x59, 0x98, 0x11, 0x83, 0xfb, + 0x8f, 0xd0, 0x56, 0xfa, 0x4a, 0xa1, 0x24, 0x9d, 0xab, 0xe4, 0x3b, 0x57, 0x69, 0xcb, 0x77, 0x2e, + 0x09, 0xf8, 0xf1, 0xdf, 0x7c, 0x40, 0x90, 0xdc, 0x7c, 0x5d, 0xc9, 0xf0, 0x2f, 0x0d, 0xd2, 0x55, + 0x42, 0x4d, 0xcf, 0xee, 0x71, 0x77, 0x45, 0x79, 0x98, 0xec, 0xba, 0x8e, 0xbd, 0xab, 0xbc, 0x2e, + 0xa5, 0xfb, 0x43, 0x54, 0x80, 0x29, 0xdb, 0x22, 0x0e, 0xb3, 0xd9, 0x40, 0x9a, 0x49, 0x0f, 0xc6, + 0x9c, 0xeb, 0x36, 0x69, 0x52, 0xdb, 0xd7, 0xb3, 0xee, 0x0f, 0xd1, 0x45, 0xc8, 0x51, 0x62, 0xf6, + 0x3d, 0x9b, 0x0d, 0x0c, 0xd3, 0x75, 0x18, 0x36, 0x59, 0x3e, 0x21, 0x48, 0xb2, 0xfe, 0xfc, 0xaa, + 0x9c, 0xe6, 0x20, 0x16, 0x61, 0xd8, 0xee, 0xd0, 0xfc, 0x2b, 0x12, 0x44, 0x0d, 0xd1, 0x0d, 0x98, + 0xea, 0x12, 0x86, 0x2d, 0xcc, 0x70, 0x3e, 0x29, 0x64, 0x5e, 0x1c, 0xa7, 0xd1, 0x5b, 0x8a, 0x4e, + 0x38, 0xb3, 0x90, 0x7a, 0x42, 0x0f, 0x98, 0x95, 0xcc, 0x2d, 0x98, 0xf2, 0xc9, 0xd0, 0x1b, 0x90, + 0xed, 0x79, 0x6e, 0xcb, 0xee, 0x10, 0xa3, 0x67, 0x9b, 0x46, 0xdf, 0xb3, 0x95, 0xdc, 0x19, 0x35, + 0xbd, 0x69, 0x9b, 0x0d, 0xcf, 0x46, 0x6f, 0x01, 0xa2, 0xae, 0x69, 0xe3, 0x8e, 0xb1, 0x83, 0x1d, + 0xab, 0x43, 0x38, 0x25, 0x15, 0xa1, 0x95, 0xd2, 0x73, 0x72, 0xe5, 0xa6, 0x58, 0x68, 0x78, 0x36, + 0x55, 0xfb, 0xdc, 0x9b, 0x84, 0x54, 0x10, 0x5d, 0x68, 0x15, 0x72, 0x6e, 0x8f, 0x78, 0xfc, 0xdb, + 0xc0, 0x96, 0xe5, 0x11, 0x4a, 0x55, 0xf8, 0xe4, 0x1f, 0x3d, 0xb8, 0x7c, 0x52, 0xc9, 0x73, 0x4d, + 0xae, 0xd4, 0x99, 0x67, 0x3b, 0x6d, 0x3d, 0xeb, 0x73, 0xa8, 0x69, 0xf4, 0x23, 0xee, 0x63, 0x0e, + 0x25, 0x0e, 0xed, 0x53, 0xa3, 0xd7, 0x6f, 0xee, 0x92, 0x81, 0xf2, 0x82, 0x93, 0x23, 0x5e, 0x70, + 0xcd, 0x19, 0x54, 0xf2, 0x7f, 0x0a, 0xa1, 0x4d, 0x6f, 0xd0, 0x63, 0x6e, 0x69, 0xb3, 0xdf, 0x7c, + 0x9f, 0x0c, 0xb8, 0x6f, 0x29, 0x9c, 0x4d, 0x01, 0x83, 0x4e, 0x43, 0xf2, 0x67, 0xd8, 0xee, 0x10, + 0x4b, 0x98, 0x70, 0x4a, 0x57, 0x23, 0xb4, 0x02, 0x49, 0xca, 0x30, 0xeb, 0x53, 0x61, 0xb7, 0x99, + 0x2b, 0xc5, 0x71, 0xaa, 0xaf, 0xb8, 0x8e, 0x55, 0x17, 0x94, 0xba, 0xe2, 0x40, 0xab, 0x90, 0x64, + 0xee, 0x2e, 0x71, 0x94, 0x45, 0x2b, 0xdf, 0x52, 0xe1, 0x77, 0x6a, 0x34, 0xfc, 0x6a, 0x0e, 0x8b, + 0x04, 0x5e, 0xcd, 0x61, 0xba, 0x62, 0x45, 0x3f, 0x81, 0x9c, 0x45, 0x3a, 0xa4, 0x2d, 0x34, 0x47, + 0x77, 0xb0, 0x47, 0xa8, 0xf0, 0x82, 0x54, 0x65, 0xf9, 0xc8, 0xd1, 0xac, 0x67, 0x03, 0xa8, 0xba, + 0x40, 0x42, 0x9b, 0x90, 0xb6, 0x42, 0xff, 0xcf, 0x4f, 0x0a, 0x65, 0xbe, 0x36, 0x4e, 0xc6, 0x48, + 0xa8, 0x44, 0xd3, 0x65, 0x14, 0x82, 0xbb, 0x7c, 0xdf, 0x69, 0xba, 0x8e, 0x65, 0x3b, 0x6d, 0x63, + 0x87, 0xd8, 0xed, 0x1d, 0x96, 0x9f, 0x5a, 0xd4, 0x96, 0xe2, 0x7a, 0x36, 0x98, 0xbf, 0x29, 0xa6, + 0xd1, 0x26, 0xcc, 0x84, 0xa4, 0x22, 0xa4, 0x53, 0x47, 0x0d, 0xe9, 0x4c, 0x00, 0xc0, 0x49, 0xd0, + 0x2d, 0x80, 0x30, 0x69, 0xe4, 0x41, 0xa0, 0x15, 0x0f, 0x4f, 0x3f, 0x51, 0x61, 0x22, 0x00, 0xc8, + 0x81, 0x13, 0x5d, 0xdb, 0x31, 0x28, 0xe9, 0xb4, 0x0c, 0xa5, 0x39, 0x8e, 0x9b, 0x16, 0xea, 0x7f, + 0xf7, 0x08, 0xd6, 0xfc, 0xe2, 0xc1, 0xe5, 0xac, 0x1c, 0x5d, 0xa6, 0xd6, 0xee, 0xe2, 0xdb, 0xa5, + 0xef, 0x7c, 0x57, 0x9f, 0xed, 0xda, 0x4e, 0x9d, 0x74, 0x5a, 0xd5, 0x00, 0x18, 0xbd, 0x03, 0x67, + 0x43, 0x85, 0xb8, 0x8e, 0xb1, 0xe3, 0x76, 0x2c, 0xc3, 0x23, 0x2d, 0xc3, 0x74, 0xfb, 0x0e, 0xcb, + 0x4f, 0x0b, 0x35, 0x9e, 0x09, 0x48, 0x36, 0x9c, 0x9b, 0x6e, 0xc7, 0xd2, 0x49, 0x6b, 0x95, 0x2f, + 0xa3, 0xd7, 0x20, 0xd4, 0x86, 0x61, 0x5b, 0x34, 0x9f, 0x59, 0x8c, 0x2f, 0x25, 0xf4, 0xe9, 0x60, + 0xb2, 0x66, 0xd1, 0x95, 0xa9, 0x8f, 0xee, 0x2f, 0x4c, 0x7c, 0x75, 0x7f, 0x61, 0xa2, 0x78, 0x1d, + 0xa6, 0xb7, 0x71, 0x47, 0x85, 0x16, 0xa1, 0xe8, 0x2a, 0xa4, 0xb0, 0x3f, 0xc8, 0x6b, 0x3c, 0xb4, + 0x9f, 0x11, 0x9a, 0x21, 0x69, 0xf1, 0x77, 0x1a, 0x24, 0xab, 0xdb, 0x9b, 0xd8, 0xf6, 0xd0, 0x1a, + 0xcc, 0x86, 0xbe, 0xfa, 0xbc, 0x51, 0x1e, 0xba, 0xb7, 0x1f, 0xe6, 0xeb, 0x30, 0xbb, 0xe7, 0x27, + 0x8e, 0x00, 0x46, 0xd6, 0xc6, 0xf3, 0x8f, 0x1e, 0x5c, 0x3e, 0xa7, 0x60, 0x82, 0xe4, 0xb2, 0x0f, + 0x6f, 0x6f, 0xdf, 0x7c, 0x44, 0xe6, 0xf7, 0x60, 0x52, 0x1e, 0x95, 0xa2, 0xef, 0xc1, 0x2b, 0x3d, + 0xfe, 0x21, 0x44, 0x4d, 0x5f, 0x99, 0x1f, 0xeb, 0xf3, 0x82, 0x3e, 0xea, 0x21, 0x92, 0xaf, 0xf8, + 0xcb, 0x18, 0x40, 0x75, 0x7b, 0x7b, 0xcb, 0xb3, 0x7b, 0x1d, 0xc2, 0x5e, 0x96, 0xec, 0x0d, 0x38, + 0x15, 0xca, 0x4e, 0x3d, 0xf3, 0xe8, 0xf2, 0x9f, 0x08, 0xf8, 0xeb, 0x9e, 0x79, 0x20, 0xac, 0x45, + 0x59, 0x00, 0x1b, 0x3f, 0x3a, 0x6c, 0x95, 0xb2, 0x51, 0xcd, 0xfe, 0x10, 0xd2, 0xa1, 0x32, 0x28, + 0xaa, 0xc1, 0x14, 0x53, 0xdf, 0x4a, 0xc1, 0xc5, 0xf1, 0x0a, 0xf6, 0xd9, 0xa2, 0x4a, 0x0e, 0xd8, + 0x8b, 0xff, 0xd1, 0x00, 0x22, 0x31, 0xf2, 0xcd, 0xf4, 0x31, 0x54, 0x83, 0xa4, 0x4a, 0xce, 0xf1, + 0xe3, 0x26, 0x67, 0x05, 0x10, 0x51, 0xea, 0xaf, 0x62, 0x70, 0xa2, 0xe1, 0x47, 0xef, 0x37, 0x5f, + 0x07, 0x0d, 0x98, 0x24, 0x0e, 0xf3, 0x6c, 0xa1, 0x04, 0x6e, 0xf3, 0xb7, 0xc7, 0xd9, 0xfc, 0x00, + 0xa1, 0xd6, 0x1c, 0xe6, 0x0d, 0xa2, 0x1e, 0xe0, 0x63, 0x45, 0xf4, 0xf1, 0x69, 0x1c, 0xf2, 0xe3, + 0x58, 0xd1, 0x9b, 0x90, 0x35, 0x3d, 0x22, 0x26, 0xfc, 0xba, 0xa3, 0x89, 0x84, 0x39, 0xe3, 0x4f, + 0xab, 0xb2, 0xa3, 0x03, 0xbf, 0x59, 0x72, 0xe7, 0xe2, 0xa4, 0xc7, 0xbb, 0x4a, 0xce, 0x84, 0x08, + 0xa2, 0xf0, 0x6c, 0x41, 0xd6, 0x76, 0x6c, 0xc6, 0x6f, 0x48, 0x4d, 0xdc, 0xc1, 0x8e, 0xe9, 0x5f, + 0xb9, 0x8f, 0x54, 0xf3, 0x67, 0x14, 0x46, 0x45, 0x42, 0xa0, 0x35, 0x98, 0xf4, 0xd1, 0x12, 0x47, + 0x47, 0xf3, 0x79, 0xd1, 0xeb, 0x30, 0x1d, 0x2d, 0x0c, 0xe2, 0x36, 0x92, 0xa8, 0xc4, 0xf2, 0x9a, + 0x9e, 0x8e, 0xd4, 0x86, 0xc3, 0xaa, 0x4f, 0xf2, 0x99, 0xd5, 0x47, 0x5d, 0xfa, 0x3e, 0x8d, 0xc3, + 0xac, 0x4e, 0xac, 0xff, 0x7d, 0xd3, 0x6c, 0x02, 0xc8, 0x70, 0xe5, 0xd9, 0x54, 0x59, 0xe7, 0x18, + 0x31, 0x9f, 0x92, 0x20, 0x55, 0xca, 0xd0, 0xf9, 0x83, 0xac, 0xf4, 0xf2, 0x2d, 0xf4, 0xd7, 0x18, + 0x4c, 0x47, 0x2d, 0xf4, 0x7f, 0x59, 0xb8, 0xd0, 0x7a, 0x98, 0xaa, 0x12, 0x22, 0x55, 0x5d, 0x1c, + 0x97, 0xaa, 0x46, 0xbc, 0xf9, 0x90, 0x1c, 0xf5, 0x75, 0x1c, 0x92, 0x9b, 0xd8, 0xc3, 0x5d, 0x8a, + 0x36, 0x46, 0xee, 0xb7, 0x7e, 0x2b, 0x63, 0xbf, 0x33, 0x57, 0x55, 0xbf, 0x44, 0xfa, 0xf2, 0x27, + 0xe3, 0xae, 0xb7, 0xaf, 0xc3, 0x0c, 0x7f, 0xd8, 0x07, 0x02, 0x49, 0xe5, 0x66, 0xc4, 0xfb, 0x3c, + 0x90, 0x9e, 0xa2, 0x05, 0x48, 0x73, 0xb2, 0x30, 0x17, 0x73, 0x1a, 0xe8, 0xe2, 0x3b, 0x6b, 0x72, + 0x06, 0x2d, 0x03, 0xda, 0x09, 0xba, 0x2d, 0x46, 0xa8, 0x08, 0x6d, 0x29, 0x23, 0xd2, 0xc2, 0x6c, + 0xb8, 0xea, 0xb3, 0x9c, 0x03, 0xe0, 0x27, 0x31, 0x2c, 0xe2, 0xb8, 0x5d, 0xf5, 0x42, 0x4d, 0xf1, + 0x99, 0x2a, 0x9f, 0x40, 0xbf, 0xd0, 0xe4, 0x55, 0x79, 0x5f, 0x0b, 0x40, 0xbd, 0x54, 0xb6, 0x9e, + 0x23, 0x30, 0xfe, 0xfd, 0x78, 0xa1, 0x30, 0xc0, 0xdd, 0xce, 0x4a, 0xf1, 0x00, 0x9c, 0xe2, 0x41, + 0x5d, 0x09, 0x7e, 0x81, 0x1e, 0x6e, 0x21, 0xa0, 0x1a, 0xe4, 0x76, 0xc9, 0xc0, 0xf0, 0x5c, 0x26, + 0x93, 0x4d, 0x8b, 0x10, 0xf5, 0xa6, 0x99, 0xf3, 0xed, 0xdb, 0xc4, 0x94, 0x44, 0x9e, 0x00, 0xb6, + 0x53, 0x49, 0xf0, 0xd3, 0xe9, 0x33, 0xbb, 0x64, 0xa0, 0x2b, 0xbe, 0xeb, 0x84, 0xac, 0x5c, 0xe0, + 0xd1, 0x72, 0xf7, 0xcb, 0xcf, 0x2e, 0x9d, 0x0d, 0x2f, 0xee, 0xe5, 0x3b, 0x41, 0x73, 0x4f, 0x9a, + 0x98, 0x5f, 0x7e, 0x51, 0x58, 0x88, 0x74, 0x42, 0x7b, 0xfc, 0x5d, 0xc9, 0xdf, 0x21, 0x91, 0xf7, + 0x82, 0xf6, 0xec, 0x77, 0x48, 0xc8, 0x3f, 0xf4, 0x0e, 0x89, 0x84, 0xe8, 0xbb, 0x61, 0x1d, 0x88, + 0x1d, 0x26, 0x4d, 0xd4, 0x3b, 0x15, 0x93, 0x88, 0xfc, 0x89, 0xe2, 0x9f, 0x35, 0x98, 0x1b, 0xf1, + 0xe6, 0xe0, 0xc8, 0x26, 0x20, 0x2f, 0xb2, 0x28, 0xbc, 0x62, 0xa0, 0x8e, 0x7e, 0xbc, 0xe0, 0x98, + 0xf5, 0x46, 0x0a, 0xc1, 0xcb, 0x29, 0x68, 0x2a, 0x93, 0xfd, 0x51, 0x83, 0x93, 0xd1, 0x03, 0x04, + 0xa2, 0xd4, 0x61, 0x3a, 0xba, 0xb5, 0x12, 0xe2, 0xc2, 0xf3, 0x08, 0x11, 0x3d, 0xff, 0x10, 0x08, + 0xda, 0x0e, 0x33, 0x86, 0x6c, 0x29, 0x2e, 0x3f, 0xb7, 0x52, 0xfc, 0x83, 0x1d, 0x98, 0x39, 0xa4, + 0x6d, 0xbe, 0xd6, 0x20, 0xb1, 0xe9, 0xba, 0x1d, 0xf4, 0x73, 0x98, 0x75, 0x5c, 0x66, 0xf0, 0xc8, + 0x22, 0x96, 0xa1, 0xda, 0x07, 0x32, 0x1b, 0xaf, 0x3d, 0x53, 0x57, 0xff, 0x78, 0xbc, 0x30, 0xca, + 0x39, 0xac, 0x40, 0xd5, 0x56, 0x73, 0x5c, 0x56, 0x11, 0x44, 0x5b, 0xb2, 0xc3, 0xd0, 0x82, 0xcc, + 0xf0, 0x76, 0x32, 0x63, 0x5f, 0x3b, 0x6c, 0xbb, 0xcc, 0xa1, 0x5b, 0x4d, 0x37, 0x23, 0xfb, 0xac, + 0x4c, 0x71, 0xab, 0xfd, 0x93, 0x5b, 0xee, 0x43, 0xc8, 0x05, 0xe9, 0xaa, 0x21, 0x7a, 0x72, 0x14, + 0x5d, 0x87, 0x49, 0xd9, 0x9e, 0xf3, 0x1f, 0x0c, 0xe7, 0xc3, 0x86, 0x2f, 0x6e, 0x9a, 0x76, 0x69, + 0x2f, 0xd2, 0xac, 0x95, 0x4c, 0x43, 0xfa, 0x54, 0xcc, 0xa2, 0x67, 0xfb, 0x30, 0x06, 0x73, 0xab, + 0xae, 0x43, 0x55, 0xb3, 0x47, 0x45, 0xb5, 0x6c, 0x30, 0x0f, 0xd0, 0xc5, 0x31, 0xad, 0xa8, 0xe9, + 0xd1, 0x86, 0xd3, 0x36, 0x64, 0x79, 0x89, 0x35, 0x5d, 0xe7, 0x05, 0xfb, 0x4d, 0x19, 0xb7, 0x63, + 0xa9, 0x13, 0xed, 0x92, 0x01, 0xc7, 0x75, 0xc8, 0xed, 0x21, 0xdc, 0xf8, 0xf1, 0x70, 0x1d, 0x72, + 0x3b, 0x82, 0x7b, 0x1a, 0x92, 0xea, 0x7e, 0x95, 0x10, 0xb7, 0x07, 0x35, 0x42, 0x57, 0x21, 0xce, + 0x53, 0xe1, 0x2b, 0x47, 0x48, 0x1e, 0x9c, 0x21, 0x52, 0xd6, 0xea, 0x30, 0xa7, 0xba, 0x05, 0x74, + 0xa3, 0x25, 0x34, 0x4a, 0x84, 0x40, 0xef, 0x93, 0xc1, 0x01, 0xad, 0x83, 0xe9, 0xe7, 0x6a, 0x1d, + 0x5c, 0xfa, 0xbd, 0x06, 0x10, 0xf6, 0xcd, 0xd0, 0x5b, 0x70, 0xa6, 0xb2, 0xb1, 0x5e, 0x35, 0xea, + 0x5b, 0xd7, 0xb6, 0x1a, 0x75, 0xa3, 0xb1, 0x5e, 0xdf, 0x5c, 0x5b, 0xad, 0x5d, 0xaf, 0xad, 0x55, + 0x73, 0x13, 0x85, 0xec, 0xdd, 0x7b, 0x8b, 0xe9, 0x86, 0x43, 0x7b, 0xc4, 0xb4, 0x5b, 0x36, 0xb1, + 0xd0, 0x1b, 0x70, 0x72, 0x98, 0x9a, 0x8f, 0xd6, 0xaa, 0x39, 0xad, 0x30, 0x7d, 0xf7, 0xde, 0xe2, + 0x94, 0x7c, 0x27, 0x10, 0x0b, 0x2d, 0xc1, 0xa9, 0x51, 0xba, 0xda, 0xfa, 0x8d, 0x5c, 0xac, 0x90, + 0xb9, 0x7b, 0x6f, 0x31, 0x15, 0x3c, 0x28, 0x50, 0x11, 0x50, 0x94, 0x52, 0xe1, 0xc5, 0x0b, 0x70, + 0xf7, 0xde, 0x62, 0x52, 0x86, 0x4c, 0x21, 0xf1, 0xd1, 0x6f, 0xe6, 0x27, 0x2e, 0xfd, 0x14, 0xa0, + 0xe6, 0xb4, 0x3c, 0x6c, 0x8a, 0xd4, 0x50, 0x80, 0xd3, 0xb5, 0xf5, 0xeb, 0xfa, 0xb5, 0xd5, 0xad, + 0xda, 0xc6, 0xfa, 0xf0, 0xb1, 0xf7, 0xad, 0x55, 0x37, 0x1a, 0x95, 0x0f, 0xd6, 0x8c, 0x7a, 0xed, + 0xc6, 0x7a, 0x4e, 0x43, 0x67, 0xe0, 0xc4, 0xd0, 0xda, 0x0f, 0xd6, 0xb7, 0x6a, 0xb7, 0xd6, 0x72, + 0xb1, 0xca, 0xd5, 0xcf, 0x9f, 0xcc, 0x6b, 0x0f, 0x9f, 0xcc, 0x6b, 0x7f, 0x7f, 0x32, 0xaf, 0x7d, + 0xfc, 0x74, 0x7e, 0xe2, 0xe1, 0xd3, 0xf9, 0x89, 0xbf, 0x3c, 0x9d, 0x9f, 0xf8, 0xf1, 0xab, 0x43, + 0xc1, 0x18, 0x96, 0x23, 0xf1, 0x97, 0x48, 0x33, 0x29, 0xbc, 0xe6, 0xdb, 0xff, 0x0d, 0x00, 0x00, + 0xff, 0xff, 0x54, 0xe6, 0x7d, 0x82, 0x8a, 0x1a, 0x00, 0x00, } func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { @@ -1593,750 +1594,750 @@ func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_go func StakingDescription() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 11880 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x94, 0x24, 0xd7, - 0x59, 0xd8, 0x56, 0x77, 0x4f, 0x4f, 0xf7, 0xd7, 0xaf, 0x9a, 0x3b, 0xb3, 0xbb, 0xb3, 0xb3, 0xd2, - 0xce, 0x6c, 0xad, 0xa4, 0x5d, 0xad, 0xa4, 0x59, 0xed, 0x4a, 0xbb, 0x92, 0x5a, 0x96, 0x44, 0xf7, - 0x4c, 0xef, 0x6c, 0xaf, 0xe6, 0xe5, 0xea, 0x9e, 0xb5, 0x24, 0x1e, 0x45, 0x4d, 0xf5, 0x9d, 0x99, - 0xd2, 0x76, 0x57, 0xb5, 0xab, 0xaa, 0x77, 0x77, 0x94, 0x73, 0x72, 0x4c, 0xc0, 0x8e, 0x11, 0x8f, - 0x98, 0x40, 0xc0, 0xd8, 0x5e, 0x23, 0x20, 0x60, 0x1b, 0x02, 0x81, 0xd8, 0x10, 0x1c, 0x4e, 0x1e, - 0xe4, 0x24, 0x04, 0xc8, 0x09, 0x71, 0xf8, 0x11, 0x38, 0x9c, 0x83, 0x02, 0x36, 0xe7, 0xe0, 0x60, - 0x43, 0x80, 0x18, 0x0e, 0x27, 0x3e, 0xc9, 0xc9, 0xb9, 0xaf, 0x7a, 0x74, 0x57, 0x4f, 0xf7, 0xac, - 0x24, 0x43, 0x20, 0x7f, 0x76, 0xa7, 0xee, 0xfd, 0xbe, 0xef, 0xde, 0xfb, 0xdd, 0xef, 0x7e, 0xaf, - 0xfb, 0x68, 0xf8, 0xbd, 0xab, 0xb0, 0xb0, 0x6b, 0xdb, 0xbb, 0x6d, 0x7c, 0xa1, 0xeb, 0xd8, 0x9e, - 0xbd, 0xdd, 0xdb, 0xb9, 0xd0, 0xc2, 0xae, 0xe1, 0x98, 0x5d, 0xcf, 0x76, 0x16, 0x69, 0x19, 0x2a, - 0x31, 0x88, 0x45, 0x01, 0xa1, 0xac, 0xc1, 0xd4, 0x55, 0xb3, 0x8d, 0x97, 0x7d, 0xc0, 0x06, 0xf6, - 0xd0, 0xd3, 0x90, 0xda, 0x31, 0xdb, 0x78, 0x56, 0x5a, 0x48, 0x9e, 0xcb, 0x5d, 0x7a, 0x60, 0xb1, - 0x0f, 0x69, 0x31, 0x8a, 0xb1, 0x49, 0x8a, 0x55, 0x8a, 0xa1, 0xfc, 0x9f, 0x14, 0x4c, 0xc7, 0xd4, - 0x22, 0x04, 0x29, 0x4b, 0xef, 0x10, 0x8a, 0xd2, 0xb9, 0xac, 0x4a, 0xff, 0x46, 0xb3, 0x30, 0xd9, - 0xd5, 0x8d, 0x9b, 0xfa, 0x2e, 0x9e, 0x4d, 0xd0, 0x62, 0xf1, 0x89, 0x4e, 0x01, 0xb4, 0x70, 0x17, - 0x5b, 0x2d, 0x6c, 0x19, 0xfb, 0xb3, 0xc9, 0x85, 0xe4, 0xb9, 0xac, 0x1a, 0x2a, 0x41, 0x8f, 0xc0, - 0x54, 0xb7, 0xb7, 0xdd, 0x36, 0x0d, 0x2d, 0x04, 0x06, 0x0b, 0xc9, 0x73, 0x13, 0xaa, 0xcc, 0x2a, - 0x96, 0x03, 0xe0, 0xb3, 0x50, 0xba, 0x8d, 0xf5, 0x9b, 0x61, 0xd0, 0x1c, 0x05, 0x2d, 0x92, 0xe2, - 0x10, 0xe0, 0x12, 0xe4, 0x3b, 0xd8, 0x75, 0xf5, 0x5d, 0xac, 0x79, 0xfb, 0x5d, 0x3c, 0x9b, 0xa2, - 0xa3, 0x5f, 0x18, 0x18, 0x7d, 0xff, 0xc8, 0x73, 0x1c, 0xab, 0xb9, 0xdf, 0xc5, 0xa8, 0x02, 0x59, - 0x6c, 0xf5, 0x3a, 0x8c, 0xc2, 0xc4, 0x10, 0xfe, 0xd5, 0xac, 0x5e, 0xa7, 0x9f, 0x4a, 0x86, 0xa0, - 0x71, 0x12, 0x93, 0x2e, 0x76, 0x6e, 0x99, 0x06, 0x9e, 0x4d, 0x53, 0x02, 0x67, 0x07, 0x08, 0x34, - 0x58, 0x7d, 0x3f, 0x0d, 0x81, 0x87, 0x96, 0x20, 0x8b, 0xef, 0x78, 0xd8, 0x72, 0x4d, 0xdb, 0x9a, - 0x9d, 0xa4, 0x44, 0x1e, 0x8c, 0x99, 0x45, 0xdc, 0x6e, 0xf5, 0x93, 0x08, 0xf0, 0xd0, 0x15, 0x98, - 0xb4, 0xbb, 0x9e, 0x69, 0x5b, 0xee, 0x6c, 0x66, 0x41, 0x3a, 0x97, 0xbb, 0x74, 0x5f, 0xac, 0x20, - 0x6c, 0x30, 0x18, 0x55, 0x00, 0xa3, 0x3a, 0xc8, 0xae, 0xdd, 0x73, 0x0c, 0xac, 0x19, 0x76, 0x0b, - 0x6b, 0xa6, 0xb5, 0x63, 0xcf, 0x66, 0x29, 0x81, 0xf9, 0xc1, 0x81, 0x50, 0xc0, 0x25, 0xbb, 0x85, - 0xeb, 0xd6, 0x8e, 0xad, 0x16, 0xdd, 0xc8, 0x37, 0x3a, 0x06, 0x69, 0x77, 0xdf, 0xf2, 0xf4, 0x3b, - 0xb3, 0x79, 0x2a, 0x21, 0xfc, 0x8b, 0x88, 0x0e, 0x6e, 0x99, 0xa4, 0xb9, 0xd9, 0x02, 0x13, 0x1d, - 0xfe, 0xa9, 0x7c, 0x36, 0x0d, 0xa5, 0x71, 0x84, 0xef, 0x59, 0x98, 0xd8, 0x21, 0xe3, 0x9f, 0x4d, - 0x1c, 0x86, 0x3b, 0x0c, 0x27, 0xca, 0xde, 0xf4, 0x3d, 0xb2, 0xb7, 0x02, 0x39, 0x0b, 0xbb, 0x1e, - 0x6e, 0x31, 0x59, 0x49, 0x8e, 0x29, 0x6d, 0xc0, 0x90, 0x06, 0x85, 0x2d, 0x75, 0x4f, 0xc2, 0xf6, - 0x12, 0x94, 0xfc, 0x2e, 0x69, 0x8e, 0x6e, 0xed, 0x0a, 0xa9, 0xbd, 0x30, 0xaa, 0x27, 0x8b, 0x35, - 0x81, 0xa7, 0x12, 0x34, 0xb5, 0x88, 0x23, 0xdf, 0x68, 0x19, 0xc0, 0xb6, 0xb0, 0xbd, 0xa3, 0xb5, - 0xb0, 0xd1, 0x9e, 0xcd, 0x0c, 0xe1, 0xd2, 0x06, 0x01, 0x19, 0xe0, 0x92, 0xcd, 0x4a, 0x8d, 0x36, - 0x7a, 0x26, 0x10, 0xc2, 0xc9, 0x21, 0x32, 0xb4, 0xc6, 0x96, 0xdf, 0x80, 0x1c, 0x6e, 0x41, 0xd1, - 0xc1, 0x64, 0x45, 0xe0, 0x16, 0x1f, 0x59, 0x96, 0x76, 0x62, 0x71, 0xe4, 0xc8, 0x54, 0x8e, 0xc6, - 0x06, 0x56, 0x70, 0xc2, 0x9f, 0xe8, 0x0c, 0xf8, 0x05, 0x1a, 0x15, 0x2b, 0xa0, 0xfa, 0x29, 0x2f, - 0x0a, 0xd7, 0xf5, 0x0e, 0x9e, 0x7b, 0x0d, 0x8a, 0x51, 0xf6, 0xa0, 0x19, 0x98, 0x70, 0x3d, 0xdd, - 0xf1, 0xa8, 0x14, 0x4e, 0xa8, 0xec, 0x03, 0xc9, 0x90, 0xc4, 0x56, 0x8b, 0xea, 0xbf, 0x09, 0x95, - 0xfc, 0x89, 0xbe, 0x2e, 0x18, 0x70, 0x92, 0x0e, 0xf8, 0xa1, 0xc1, 0x19, 0x8d, 0x50, 0xee, 0x1f, - 0xf7, 0xdc, 0x53, 0x50, 0x88, 0x0c, 0x60, 0xdc, 0xa6, 0x95, 0x9f, 0x4a, 0xc1, 0xd1, 0x58, 0xda, - 0xe8, 0x25, 0x98, 0xe9, 0x59, 0xa6, 0xe5, 0x61, 0xa7, 0xeb, 0x60, 0x22, 0xb2, 0xac, 0xad, 0xd9, - 0x3f, 0x98, 0x1c, 0x22, 0x74, 0x5b, 0x61, 0x68, 0x46, 0x45, 0x9d, 0xee, 0x0d, 0x16, 0xa2, 0x97, - 0x21, 0x47, 0xe4, 0x43, 0x77, 0x74, 0x4a, 0x90, 0xad, 0xc6, 0x4b, 0xe3, 0x0d, 0x79, 0x71, 0x39, - 0xc0, 0xac, 0x26, 0x3f, 0x28, 0x25, 0xd4, 0x30, 0x2d, 0xb4, 0x07, 0xf9, 0x5b, 0xd8, 0x31, 0x77, - 0x4c, 0x83, 0xd1, 0x26, 0xec, 0x2c, 0x5e, 0x7a, 0x7a, 0x4c, 0xda, 0x37, 0x42, 0xa8, 0x0d, 0x4f, - 0xf7, 0x70, 0x19, 0xb6, 0xd6, 0x6f, 0xd4, 0xd4, 0xfa, 0xd5, 0x7a, 0x6d, 0x59, 0x8d, 0x50, 0x9e, - 0xfb, 0xb4, 0x04, 0xb9, 0x50, 0x5f, 0x88, 0xda, 0xb2, 0x7a, 0x9d, 0x6d, 0xec, 0x70, 0x8e, 0xf3, - 0x2f, 0x74, 0x12, 0xb2, 0x3b, 0xbd, 0x76, 0x9b, 0x89, 0x0d, 0xb3, 0x79, 0x19, 0x52, 0x40, 0x44, - 0x86, 0x68, 0x29, 0xae, 0x08, 0xa8, 0x96, 0x22, 0x7f, 0xa3, 0x33, 0x90, 0x33, 0x5d, 0xcd, 0xc1, - 0x5d, 0xac, 0x7b, 0xb8, 0x35, 0x9b, 0x5a, 0x90, 0xce, 0x65, 0xaa, 0x89, 0x59, 0x49, 0x05, 0xd3, - 0x55, 0x79, 0x29, 0x9a, 0x83, 0x8c, 0x90, 0xbd, 0xd9, 0x09, 0x02, 0xa1, 0xfa, 0xdf, 0xac, 0x8e, - 0x63, 0xa7, 0x45, 0x1d, 0xfb, 0x56, 0x9e, 0x84, 0xa9, 0x81, 0x41, 0xa2, 0x12, 0xe4, 0x96, 0x6b, - 0x4b, 0xab, 0x15, 0xb5, 0xd2, 0xac, 0x6f, 0xac, 0xcb, 0x47, 0x50, 0x11, 0x42, 0xe3, 0x96, 0xa5, - 0xf3, 0xd9, 0xcc, 0x17, 0x27, 0xe5, 0xf7, 0xbd, 0xef, 0x7d, 0xef, 0x4b, 0x28, 0xbf, 0x94, 0x86, - 0x99, 0x38, 0x2d, 0x17, 0xab, 0x70, 0x03, 0x9e, 0x24, 0x23, 0x3c, 0xa9, 0xc0, 0x44, 0x5b, 0xdf, - 0xc6, 0x6d, 0x3a, 0xb8, 0xe2, 0xa5, 0x47, 0xc6, 0xd2, 0xa3, 0x8b, 0xab, 0x04, 0x45, 0x65, 0x98, - 0xe8, 0x79, 0xce, 0xb9, 0x09, 0x4a, 0xe1, 0xfc, 0x78, 0x14, 0x88, 0xf6, 0xe3, 0x5c, 0x3e, 0x09, - 0x59, 0xf2, 0x3f, 0x9b, 0x96, 0x34, 0x9b, 0x16, 0x52, 0x40, 0xa7, 0x65, 0x0e, 0x32, 0x54, 0xb1, - 0xb5, 0xb0, 0x3f, 0x65, 0xe2, 0x9b, 0xa8, 0x82, 0x16, 0xde, 0xd1, 0x7b, 0x6d, 0x4f, 0xbb, 0xa5, - 0xb7, 0x7b, 0x98, 0xaa, 0xa8, 0xac, 0x9a, 0xe7, 0x85, 0x37, 0x48, 0x19, 0x9a, 0x87, 0x1c, 0xd3, - 0x83, 0xa6, 0xd5, 0xc2, 0x77, 0xa8, 0x25, 0x9c, 0x50, 0x99, 0x6a, 0xac, 0x93, 0x12, 0xd2, 0xfc, - 0xab, 0xae, 0x6d, 0x09, 0x65, 0x42, 0x9b, 0x20, 0x05, 0xb4, 0xf9, 0xa7, 0xfa, 0x8d, 0xf0, 0xfd, - 0xf1, 0xc3, 0x1b, 0xd0, 0x7e, 0x67, 0xa1, 0x44, 0x21, 0x9e, 0xe0, 0x6b, 0x55, 0x6f, 0xcf, 0x4e, - 0x51, 0x01, 0x28, 0xb2, 0xe2, 0x0d, 0x5e, 0xaa, 0xfc, 0x7c, 0x02, 0x52, 0xd4, 0x14, 0x94, 0x20, - 0xd7, 0x7c, 0x79, 0xb3, 0xa6, 0x2d, 0x6f, 0x6c, 0x55, 0x57, 0x6b, 0xb2, 0x44, 0xa6, 0x9e, 0x16, - 0x5c, 0x5d, 0xdd, 0xa8, 0x34, 0xe5, 0x84, 0xff, 0x5d, 0x5f, 0x6f, 0x5e, 0x79, 0x52, 0x4e, 0xfa, - 0x08, 0x5b, 0xac, 0x20, 0x15, 0x06, 0x78, 0xe2, 0x92, 0x3c, 0x81, 0x64, 0xc8, 0x33, 0x02, 0xf5, - 0x97, 0x6a, 0xcb, 0x57, 0x9e, 0x94, 0xd3, 0xd1, 0x92, 0x27, 0x2e, 0xc9, 0x93, 0xa8, 0x00, 0x59, - 0x5a, 0x52, 0xdd, 0xd8, 0x58, 0x95, 0x33, 0x3e, 0xcd, 0x46, 0x53, 0xad, 0xaf, 0xaf, 0xc8, 0x59, - 0x9f, 0xe6, 0x8a, 0xba, 0xb1, 0xb5, 0x29, 0x83, 0x4f, 0x61, 0xad, 0xd6, 0x68, 0x54, 0x56, 0x6a, - 0x72, 0xce, 0x87, 0xa8, 0xbe, 0xdc, 0xac, 0x35, 0xe4, 0x7c, 0xa4, 0x5b, 0x4f, 0x5c, 0x92, 0x0b, - 0x7e, 0x13, 0xb5, 0xf5, 0xad, 0x35, 0xb9, 0x88, 0xa6, 0xa0, 0xc0, 0x9a, 0x10, 0x9d, 0x28, 0xf5, - 0x15, 0x5d, 0x79, 0x52, 0x96, 0x83, 0x8e, 0x30, 0x2a, 0x53, 0x91, 0x82, 0x2b, 0x4f, 0xca, 0x48, - 0x59, 0x82, 0x09, 0x2a, 0x86, 0x08, 0x41, 0x71, 0xb5, 0x52, 0xad, 0xad, 0x6a, 0x1b, 0x9b, 0x64, - 0xd1, 0x54, 0x56, 0x65, 0x29, 0x28, 0x53, 0x6b, 0xef, 0xde, 0xaa, 0xab, 0xb5, 0x65, 0x39, 0x11, - 0x2e, 0xdb, 0xac, 0x55, 0x9a, 0xb5, 0x65, 0x39, 0xa9, 0x18, 0x30, 0x13, 0x67, 0x02, 0x63, 0x97, - 0x50, 0x48, 0x16, 0x12, 0x43, 0x64, 0x81, 0xd2, 0xea, 0x97, 0x05, 0xe5, 0x0b, 0x09, 0x98, 0x8e, - 0x71, 0x03, 0x62, 0x1b, 0x79, 0x01, 0x26, 0x98, 0x2c, 0x33, 0x55, 0xfc, 0x70, 0xac, 0x3f, 0x41, - 0x25, 0x7b, 0xc0, 0x39, 0xa2, 0x78, 0x61, 0xb7, 0x31, 0x39, 0xc4, 0x6d, 0x24, 0x24, 0x06, 0x04, - 0xf6, 0x1b, 0x07, 0xcc, 0x35, 0xf3, 0x68, 0xae, 0x8c, 0xe3, 0xd1, 0xd0, 0xb2, 0xc3, 0x99, 0xed, - 0x89, 0x18, 0xb3, 0xfd, 0x2c, 0x4c, 0x0d, 0x10, 0x1a, 0xdb, 0x7c, 0x7e, 0xab, 0x04, 0xb3, 0xc3, - 0x98, 0x33, 0x42, 0x25, 0x26, 0x22, 0x2a, 0xf1, 0xd9, 0x7e, 0x0e, 0x9e, 0x1e, 0x3e, 0x09, 0x03, - 0x73, 0xfd, 0x09, 0x09, 0x8e, 0xc5, 0x87, 0x07, 0xb1, 0x7d, 0x78, 0x1e, 0xd2, 0x1d, 0xec, 0xed, - 0xd9, 0xc2, 0x11, 0x7e, 0x28, 0xc6, 0xbd, 0x22, 0xd5, 0xfd, 0x93, 0xcd, 0xb1, 0xc2, 0xfe, 0x59, - 0x72, 0x98, 0x8f, 0xcf, 0x7a, 0x33, 0xd0, 0xd3, 0x6f, 0x4f, 0xc0, 0xd1, 0x58, 0xe2, 0xb1, 0x1d, - 0xbd, 0x1f, 0xc0, 0xb4, 0xba, 0x3d, 0x8f, 0x39, 0xbb, 0x4c, 0x13, 0x67, 0x69, 0x09, 0x55, 0x5e, - 0x44, 0xcb, 0xf6, 0x3c, 0xbf, 0x9e, 0x19, 0x51, 0x60, 0x45, 0x14, 0xe0, 0xe9, 0xa0, 0xa3, 0x29, - 0xda, 0xd1, 0x53, 0x43, 0x46, 0x3a, 0x20, 0x98, 0x8f, 0x83, 0x6c, 0xb4, 0x4d, 0x6c, 0x79, 0x9a, - 0xeb, 0x39, 0x58, 0xef, 0x98, 0xd6, 0x2e, 0xb3, 0xb3, 0xe5, 0x89, 0x1d, 0xbd, 0xed, 0x62, 0xb5, - 0xc4, 0xaa, 0x1b, 0xa2, 0x96, 0x60, 0x50, 0x01, 0x72, 0x42, 0x18, 0xe9, 0x08, 0x06, 0xab, 0xf6, - 0x31, 0x94, 0xef, 0xc9, 0x42, 0x2e, 0x14, 0x4c, 0xa1, 0xd3, 0x90, 0x7f, 0x55, 0xbf, 0xa5, 0x6b, - 0x22, 0x40, 0x66, 0x9c, 0xc8, 0x91, 0xb2, 0x4d, 0x1e, 0x24, 0x3f, 0x0e, 0x33, 0x14, 0xc4, 0xee, - 0x79, 0xd8, 0xd1, 0x8c, 0xb6, 0xee, 0xba, 0x94, 0x69, 0x19, 0x0a, 0x8a, 0x48, 0xdd, 0x06, 0xa9, - 0x5a, 0x12, 0x35, 0xe8, 0x32, 0x4c, 0x53, 0x8c, 0x4e, 0xaf, 0xed, 0x99, 0xdd, 0x36, 0xd6, 0x48, - 0xc8, 0xee, 0x52, 0x93, 0xe3, 0xf7, 0x6c, 0x8a, 0x40, 0xac, 0x71, 0x00, 0xd2, 0x23, 0x17, 0x2d, - 0xc3, 0xfd, 0x14, 0x6d, 0x17, 0x5b, 0xd8, 0xd1, 0x3d, 0xac, 0xe1, 0xf7, 0xf6, 0xf4, 0xb6, 0xab, - 0xe9, 0x56, 0x4b, 0xdb, 0xd3, 0xdd, 0xbd, 0xd9, 0x19, 0xdf, 0x2d, 0x39, 0x41, 0x00, 0x57, 0x38, - 0x5c, 0x8d, 0x82, 0x55, 0xac, 0xd6, 0x35, 0xdd, 0xdd, 0x43, 0x65, 0x38, 0x46, 0xa9, 0xb8, 0x9e, - 0x63, 0x5a, 0xbb, 0x9a, 0xb1, 0x87, 0x8d, 0x9b, 0x5a, 0xcf, 0xdb, 0x79, 0x7a, 0xf6, 0x64, 0xb8, - 0x7d, 0xda, 0xc3, 0x06, 0x85, 0x59, 0x22, 0x20, 0x5b, 0xde, 0xce, 0xd3, 0xa8, 0x01, 0x79, 0x32, - 0x19, 0x1d, 0xf3, 0x35, 0xac, 0xed, 0xd8, 0x0e, 0xb5, 0xa1, 0xc5, 0x18, 0xd5, 0x14, 0xe2, 0xe0, - 0xe2, 0x06, 0x47, 0x58, 0xb3, 0x5b, 0xb8, 0x3c, 0xd1, 0xd8, 0xac, 0xd5, 0x96, 0xd5, 0x9c, 0xa0, - 0x72, 0xd5, 0x76, 0x88, 0x40, 0xed, 0xda, 0x3e, 0x83, 0x73, 0x4c, 0xa0, 0x76, 0x6d, 0xc1, 0xde, - 0xcb, 0x30, 0x6d, 0x18, 0x6c, 0xcc, 0xa6, 0xa1, 0xf1, 0xc0, 0xda, 0x9d, 0x95, 0x23, 0xcc, 0x32, - 0x8c, 0x15, 0x06, 0xc0, 0x65, 0xdc, 0x45, 0xcf, 0xc0, 0xd1, 0x80, 0x59, 0x61, 0xc4, 0xa9, 0x81, - 0x51, 0xf6, 0xa3, 0x5e, 0x86, 0xe9, 0xee, 0xfe, 0x20, 0x22, 0x8a, 0xb4, 0xd8, 0xdd, 0xef, 0x47, - 0x7b, 0x0a, 0x66, 0xba, 0x7b, 0xdd, 0x41, 0xbc, 0xf3, 0x61, 0x3c, 0xd4, 0xdd, 0xeb, 0xf6, 0x23, - 0x3e, 0x48, 0xb3, 0x2c, 0x0e, 0x36, 0xa8, 0x77, 0x78, 0x3c, 0x0c, 0x1e, 0xaa, 0x40, 0x8b, 0x20, - 0x1b, 0x86, 0x86, 0x2d, 0x7d, 0xbb, 0x8d, 0x35, 0xdd, 0xc1, 0x96, 0xee, 0xce, 0xce, 0x53, 0xe0, - 0x94, 0xe7, 0xf4, 0xb0, 0x5a, 0x34, 0x8c, 0x1a, 0xad, 0xac, 0xd0, 0x3a, 0x74, 0x1e, 0xa6, 0xec, - 0xed, 0x57, 0x0d, 0x26, 0x91, 0x5a, 0xd7, 0xc1, 0x3b, 0xe6, 0x9d, 0xd9, 0x07, 0x28, 0x7b, 0x4b, - 0xa4, 0x82, 0xca, 0xe3, 0x26, 0x2d, 0x46, 0x0f, 0x83, 0x6c, 0xb8, 0x7b, 0xba, 0xd3, 0xa5, 0x2a, - 0xd9, 0xed, 0xea, 0x06, 0x9e, 0x7d, 0x90, 0x81, 0xb2, 0xf2, 0x75, 0x51, 0x4c, 0x56, 0x84, 0x7b, - 0xdb, 0xdc, 0xf1, 0x04, 0xc5, 0xb3, 0x6c, 0x45, 0xd0, 0x32, 0x4e, 0xed, 0x1c, 0xc8, 0x84, 0x13, - 0x91, 0x86, 0xcf, 0x51, 0xb0, 0x62, 0x77, 0xaf, 0x1b, 0x6e, 0xf7, 0x0c, 0x14, 0x08, 0x64, 0xd0, - 0xe8, 0xc3, 0xcc, 0x71, 0xeb, 0xee, 0x85, 0x5a, 0x7c, 0x12, 0x8e, 0x11, 0xa0, 0x0e, 0xf6, 0xf4, - 0x96, 0xee, 0xe9, 0x21, 0xe8, 0x47, 0x29, 0x34, 0x61, 0xfb, 0x1a, 0xaf, 0x8c, 0xf4, 0xd3, 0xe9, - 0x6d, 0xef, 0xfb, 0x82, 0xf5, 0x18, 0xeb, 0x27, 0x29, 0x13, 0xa2, 0xf5, 0x8e, 0x45, 0x53, 0x4a, - 0x19, 0xf2, 0x61, 0xb9, 0x47, 0x59, 0x60, 0x92, 0x2f, 0x4b, 0xc4, 0x09, 0x5a, 0xda, 0x58, 0x26, - 0xee, 0xcb, 0x2b, 0x35, 0x39, 0x41, 0xdc, 0xa8, 0xd5, 0x7a, 0xb3, 0xa6, 0xa9, 0x5b, 0xeb, 0xcd, - 0xfa, 0x5a, 0x4d, 0x4e, 0x86, 0x1c, 0xfb, 0xeb, 0xa9, 0xcc, 0x43, 0xf2, 0x59, 0xe5, 0x17, 0x93, - 0x50, 0x8c, 0xc6, 0xd6, 0xe8, 0x5d, 0x70, 0x5c, 0xa4, 0xc8, 0x5c, 0xec, 0x69, 0xb7, 0x4d, 0x87, - 0x2e, 0xc8, 0x8e, 0xce, 0x8c, 0xa3, 0x2f, 0x3f, 0x33, 0x1c, 0xaa, 0x81, 0xbd, 0xf7, 0x98, 0x0e, - 0x59, 0x6e, 0x1d, 0xdd, 0x43, 0xab, 0x30, 0x6f, 0xd9, 0x9a, 0xeb, 0xe9, 0x56, 0x4b, 0x77, 0x5a, - 0x5a, 0x90, 0x9c, 0xd4, 0x74, 0xc3, 0xc0, 0xae, 0x6b, 0x33, 0x43, 0xe8, 0x53, 0xb9, 0xcf, 0xb2, - 0x1b, 0x1c, 0x38, 0xb0, 0x10, 0x15, 0x0e, 0xda, 0x27, 0xbe, 0xc9, 0x61, 0xe2, 0x7b, 0x12, 0xb2, - 0x1d, 0xbd, 0xab, 0x61, 0xcb, 0x73, 0xf6, 0xa9, 0x7f, 0x9e, 0x51, 0x33, 0x1d, 0xbd, 0x5b, 0x23, - 0xdf, 0xe8, 0x06, 0x3c, 0x14, 0x80, 0x6a, 0x6d, 0xbc, 0xab, 0x1b, 0xfb, 0x1a, 0x75, 0xc6, 0x69, - 0xa2, 0x47, 0x33, 0x6c, 0x6b, 0xa7, 0x6d, 0x1a, 0x9e, 0x4b, 0xf5, 0x03, 0xd3, 0x71, 0x4a, 0x80, - 0xb1, 0x4a, 0x11, 0xae, 0xbb, 0xb6, 0x45, 0x7d, 0xf0, 0x25, 0x01, 0xfd, 0xce, 0xcd, 0x70, 0x74, - 0x96, 0x52, 0xf2, 0xc4, 0xf5, 0x54, 0x66, 0x42, 0x4e, 0x5f, 0x4f, 0x65, 0xd2, 0xf2, 0xe4, 0xf5, - 0x54, 0x26, 0x23, 0x67, 0xaf, 0xa7, 0x32, 0x59, 0x19, 0x94, 0xf7, 0x67, 0x21, 0x1f, 0x8e, 0x0c, - 0x48, 0xa0, 0x65, 0x50, 0xdb, 0x28, 0x51, 0xed, 0x79, 0xe6, 0xc0, 0x38, 0x62, 0x71, 0x89, 0x18, - 0xcd, 0x72, 0x9a, 0xb9, 0xe1, 0x2a, 0xc3, 0x24, 0x0e, 0x0b, 0x11, 0x6b, 0xcc, 0xdc, 0x9e, 0x8c, - 0xca, 0xbf, 0xd0, 0x0a, 0xa4, 0x5f, 0x75, 0x29, 0xed, 0x34, 0xa5, 0xfd, 0xc0, 0xc1, 0xb4, 0xaf, - 0x37, 0x28, 0xf1, 0xec, 0xf5, 0x86, 0xb6, 0xbe, 0xa1, 0xae, 0x55, 0x56, 0x55, 0x8e, 0x8e, 0x4e, - 0x40, 0xaa, 0xad, 0xbf, 0xb6, 0x1f, 0x35, 0xaf, 0xb4, 0x08, 0x2d, 0x42, 0xa9, 0x67, 0xb1, 0xa8, - 0x9b, 0x4c, 0x15, 0x81, 0x2a, 0x85, 0xa1, 0x8a, 0x41, 0xed, 0x2a, 0x81, 0x1f, 0x53, 0x3c, 0x4e, - 0x40, 0xea, 0x36, 0xd6, 0x6f, 0x46, 0x8d, 0x20, 0x2d, 0x42, 0xe7, 0x20, 0xdf, 0xc2, 0xdb, 0xbd, - 0x5d, 0xcd, 0xc1, 0x2d, 0xdd, 0xf0, 0xa2, 0xaa, 0x3f, 0x47, 0xab, 0x54, 0x5a, 0x83, 0x5e, 0x84, - 0x2c, 0x99, 0x23, 0x8b, 0xce, 0xf1, 0x14, 0x65, 0xc1, 0x63, 0x07, 0xb3, 0x80, 0x4f, 0xb1, 0x40, - 0x52, 0x03, 0x7c, 0x74, 0x1d, 0xd2, 0x9e, 0xee, 0xec, 0x62, 0x8f, 0x6a, 0xfe, 0x62, 0x4c, 0xba, - 0x2a, 0x86, 0x52, 0x93, 0x62, 0x10, 0xb6, 0x52, 0x19, 0xe5, 0x14, 0xd0, 0x35, 0x98, 0x64, 0x7f, - 0xb9, 0xb3, 0xd3, 0x0b, 0xc9, 0xc3, 0x13, 0x53, 0x05, 0xfa, 0x3b, 0xa8, 0xb3, 0x2e, 0xc0, 0x04, - 0x15, 0x36, 0x04, 0xc0, 0xc5, 0x4d, 0x3e, 0x82, 0x32, 0x90, 0x5a, 0xda, 0x50, 0x89, 0xde, 0x92, - 0x21, 0xcf, 0x4a, 0xb5, 0xcd, 0x7a, 0x6d, 0xa9, 0x26, 0x27, 0x94, 0xcb, 0x90, 0x66, 0x12, 0x44, - 0x74, 0x9a, 0x2f, 0x43, 0xf2, 0x11, 0xfe, 0xc9, 0x69, 0x48, 0xa2, 0x76, 0x6b, 0xad, 0x5a, 0x53, - 0xe5, 0x84, 0xb2, 0x05, 0xa5, 0x3e, 0xae, 0xa3, 0xa3, 0x30, 0xa5, 0xd6, 0x9a, 0xb5, 0x75, 0x12, - 0xb5, 0x69, 0x5b, 0xeb, 0x2f, 0xae, 0x6f, 0xbc, 0x67, 0x5d, 0x3e, 0x12, 0x2d, 0x16, 0x0a, 0x52, - 0x42, 0x33, 0x20, 0x07, 0xc5, 0x8d, 0x8d, 0x2d, 0x95, 0xf6, 0xe6, 0x3b, 0x13, 0x20, 0xf7, 0xb3, - 0x0d, 0x1d, 0x87, 0xe9, 0x66, 0x45, 0x5d, 0xa9, 0x35, 0x35, 0x16, 0x89, 0xfa, 0xa4, 0x67, 0x40, - 0x0e, 0x57, 0x5c, 0xad, 0xd3, 0x40, 0x7b, 0x1e, 0x4e, 0x86, 0x4b, 0x6b, 0x2f, 0x35, 0x6b, 0xeb, - 0x0d, 0xda, 0x78, 0x65, 0x7d, 0x85, 0x68, 0xeb, 0x3e, 0x7a, 0x22, 0xf6, 0x4d, 0x92, 0xae, 0x46, - 0xe9, 0xd5, 0x56, 0x97, 0xe5, 0x54, 0x7f, 0xf1, 0xc6, 0x7a, 0x6d, 0xe3, 0xaa, 0x3c, 0xd1, 0xdf, - 0x3a, 0x8d, 0x87, 0xd3, 0x68, 0x0e, 0x8e, 0xf5, 0x97, 0x6a, 0xb5, 0xf5, 0xa6, 0xfa, 0xb2, 0x3c, - 0xd9, 0xdf, 0x70, 0xa3, 0xa6, 0xde, 0xa8, 0x2f, 0xd5, 0xe4, 0x0c, 0x3a, 0x06, 0x28, 0xda, 0xa3, - 0xe6, 0xb5, 0x8d, 0x65, 0x39, 0x3b, 0xa0, 0x9f, 0x14, 0x17, 0xf2, 0xe1, 0xa0, 0xf4, 0x6b, 0xa2, - 0x1a, 0x95, 0x0f, 0x27, 0x20, 0x17, 0x0a, 0x32, 0x49, 0x74, 0xa0, 0xb7, 0xdb, 0xf6, 0x6d, 0x4d, - 0x6f, 0x9b, 0xba, 0xcb, 0xb5, 0x17, 0xd0, 0xa2, 0x0a, 0x29, 0x19, 0x57, 0x5b, 0x8c, 0x6f, 0x2f, - 0xd2, 0x7f, 0x1d, 0xed, 0xc5, 0x84, 0x9c, 0x56, 0x3e, 0x2e, 0x81, 0xdc, 0x1f, 0x3d, 0xf6, 0x0d, - 0x5f, 0x1a, 0x36, 0xfc, 0xaf, 0xc9, 0xdc, 0x7d, 0x4c, 0x82, 0x62, 0x34, 0x64, 0xec, 0xeb, 0xde, - 0xe9, 0xbf, 0xd2, 0xee, 0xfd, 0x6e, 0x02, 0x0a, 0x91, 0x40, 0x71, 0xdc, 0xde, 0xbd, 0x17, 0xa6, - 0xcc, 0x16, 0xee, 0x74, 0x6d, 0x0f, 0x5b, 0xc6, 0xbe, 0xd6, 0xc6, 0xb7, 0x70, 0x7b, 0x56, 0xa1, - 0x2a, 0xfe, 0xc2, 0xc1, 0xa1, 0xe8, 0x62, 0x3d, 0xc0, 0x5b, 0x25, 0x68, 0xe5, 0xe9, 0xfa, 0x72, - 0x6d, 0x6d, 0x73, 0xa3, 0x59, 0x5b, 0x5f, 0x7a, 0x59, 0x68, 0x17, 0x55, 0x36, 0xfb, 0xc0, 0xde, - 0x41, 0xa5, 0xbd, 0x09, 0x72, 0x7f, 0xa7, 0x88, 0xae, 0x88, 0xe9, 0x96, 0x7c, 0x04, 0x4d, 0x43, - 0x69, 0x7d, 0x43, 0x6b, 0xd4, 0x97, 0x6b, 0x5a, 0xed, 0xea, 0xd5, 0xda, 0x52, 0xb3, 0xc1, 0x92, - 0x8b, 0x3e, 0x74, 0x53, 0x4e, 0x84, 0x59, 0xfc, 0x91, 0x24, 0x4c, 0xc7, 0xf4, 0x04, 0x55, 0x78, - 0x5a, 0x80, 0x65, 0x2a, 0x1e, 0x1b, 0xa7, 0xf7, 0x8b, 0xc4, 0x31, 0xdf, 0xd4, 0x1d, 0x8f, 0x67, - 0x11, 0x1e, 0x06, 0xc2, 0x25, 0xcb, 0x23, 0x7e, 0x82, 0xc3, 0x93, 0xb6, 0x2c, 0x57, 0x50, 0x0a, - 0xca, 0x59, 0xde, 0xf6, 0x51, 0x40, 0x5d, 0xdb, 0x35, 0x3d, 0xf3, 0x16, 0xd6, 0x4c, 0x4b, 0x64, - 0x78, 0x53, 0x0b, 0xd2, 0xb9, 0x94, 0x2a, 0x8b, 0x9a, 0xba, 0xe5, 0xf9, 0xd0, 0x16, 0xde, 0xd5, - 0xfb, 0xa0, 0x89, 0x1f, 0x93, 0x54, 0x65, 0x51, 0xe3, 0x43, 0x9f, 0x86, 0x7c, 0xcb, 0xee, 0x91, - 0x80, 0x8a, 0xc1, 0x11, 0x6d, 0x21, 0xa9, 0x39, 0x56, 0xe6, 0x83, 0xf0, 0x50, 0x39, 0x48, 0x2d, - 0xe7, 0xd5, 0x1c, 0x2b, 0x63, 0x20, 0x67, 0xa1, 0xa4, 0xef, 0xee, 0x3a, 0x84, 0xb8, 0x20, 0xc4, - 0x82, 0xff, 0xa2, 0x5f, 0x4c, 0x01, 0xe7, 0xae, 0x43, 0x46, 0xf0, 0x81, 0xf8, 0xc3, 0x84, 0x13, - 0x5a, 0x97, 0x65, 0xb4, 0x12, 0xe7, 0xb2, 0x6a, 0xc6, 0x12, 0x95, 0xa7, 0x21, 0x6f, 0xba, 0x5a, - 0xb0, 0xb7, 0x99, 0x58, 0x48, 0x9c, 0xcb, 0xa8, 0x39, 0xd3, 0xf5, 0xf7, 0x48, 0x94, 0x4f, 0x24, - 0xa0, 0x18, 0xdd, 0xb5, 0x45, 0xcb, 0x90, 0x69, 0xdb, 0x7c, 0x93, 0x85, 0x1d, 0x19, 0x38, 0x37, - 0x62, 0xa3, 0x77, 0x71, 0x95, 0xc3, 0xab, 0x3e, 0xe6, 0xdc, 0xaf, 0x4b, 0x90, 0x11, 0xc5, 0xe8, - 0x18, 0xa4, 0xba, 0xba, 0xb7, 0x47, 0xc9, 0x4d, 0x54, 0x13, 0xb2, 0xa4, 0xd2, 0x6f, 0x52, 0xee, - 0x76, 0x75, 0xb6, 0x4f, 0xc4, 0xcb, 0xc9, 0x37, 0x99, 0xd7, 0x36, 0xd6, 0x5b, 0x34, 0xb3, 0x60, - 0x77, 0x3a, 0xd8, 0xf2, 0x5c, 0x31, 0xaf, 0xbc, 0x7c, 0x89, 0x17, 0xa3, 0x47, 0x60, 0xca, 0x73, - 0x74, 0xb3, 0x1d, 0x81, 0x4d, 0x51, 0x58, 0x59, 0x54, 0xf8, 0xc0, 0x65, 0x38, 0x21, 0xe8, 0xb6, - 0xb0, 0xa7, 0x1b, 0x7b, 0xb8, 0x15, 0x20, 0xa5, 0x69, 0x06, 0xf1, 0x38, 0x07, 0x58, 0xe6, 0xf5, - 0x02, 0x57, 0xf9, 0x5c, 0x02, 0xa6, 0x44, 0x2e, 0xa4, 0xe5, 0x33, 0x6b, 0x0d, 0x40, 0xb7, 0x2c, - 0xdb, 0x0b, 0xb3, 0x6b, 0x50, 0x94, 0x07, 0xf0, 0x16, 0x2b, 0x3e, 0x92, 0x1a, 0x22, 0x30, 0xf7, - 0x25, 0x09, 0x20, 0xa8, 0x1a, 0xca, 0xb7, 0x79, 0xc8, 0xf1, 0x3d, 0x79, 0x7a, 0xb0, 0x83, 0xa5, - 0xcf, 0x80, 0x15, 0x5d, 0x35, 0xdb, 0x34, 0xc9, 0xb9, 0x8d, 0x77, 0x4d, 0x8b, 0xef, 0xce, 0xb0, - 0x0f, 0x91, 0xe4, 0x4c, 0x05, 0xdb, 0x93, 0x2a, 0x64, 0x5c, 0xdc, 0xd1, 0x2d, 0xcf, 0x34, 0xf8, - 0x7e, 0xcb, 0x95, 0x43, 0x75, 0x7e, 0xb1, 0xc1, 0xb1, 0x55, 0x9f, 0x8e, 0x72, 0x0e, 0x32, 0xa2, - 0x94, 0x38, 0x7e, 0xeb, 0x1b, 0xeb, 0x35, 0xf9, 0x08, 0x9a, 0x84, 0x64, 0xa3, 0xd6, 0x94, 0x25, - 0x12, 0xc4, 0x56, 0x56, 0xeb, 0x95, 0x86, 0x9c, 0xa8, 0xfe, 0x5d, 0x98, 0x36, 0xec, 0x4e, 0x7f, - 0x83, 0x55, 0xb9, 0x2f, 0x81, 0xe8, 0x5e, 0x93, 0x5e, 0x79, 0x8c, 0x03, 0xed, 0xda, 0x6d, 0xdd, - 0xda, 0x5d, 0xb4, 0x9d, 0xdd, 0xe0, 0x58, 0x0c, 0x89, 0x35, 0xdc, 0xd0, 0xe1, 0x98, 0xee, 0xf6, - 0x5f, 0x4a, 0xd2, 0x8f, 0x24, 0x92, 0x2b, 0x9b, 0xd5, 0x9f, 0x48, 0xcc, 0xad, 0x30, 0xc4, 0x4d, - 0x31, 0x1c, 0x15, 0xef, 0xb4, 0xb1, 0x41, 0x3a, 0x0f, 0x1f, 0x4d, 0xc1, 0x94, 0xde, 0x31, 0x2d, - 0xfb, 0x02, 0xfd, 0x97, 0x1f, 0xaa, 0x99, 0xa0, 0x1f, 0x73, 0x23, 0x4f, 0xdf, 0x94, 0xaf, 0x30, - 0x05, 0x86, 0x46, 0xed, 0x61, 0xcf, 0xfe, 0xe9, 0x77, 0xfe, 0xf8, 0x44, 0x90, 0xfb, 0x2c, 0xaf, - 0x81, 0x2c, 0xc2, 0x6e, 0x6c, 0x19, 0x36, 0x91, 0xb6, 0xd1, 0x34, 0xfe, 0x4c, 0xd0, 0x28, 0x71, - 0xdc, 0x1a, 0x47, 0x2d, 0xbf, 0x0b, 0x32, 0x3e, 0x99, 0x83, 0xb7, 0x93, 0x66, 0xff, 0xa7, 0x20, - 0xe2, 0x63, 0x94, 0x5f, 0x00, 0x60, 0xce, 0x0e, 0x4b, 0xcb, 0x1e, 0x8c, 0xff, 0x15, 0x81, 0x9f, - 0xa5, 0x38, 0x44, 0x0b, 0x95, 0x57, 0xa0, 0xd8, 0xb2, 0x2d, 0x4f, 0xb3, 0x3b, 0xa6, 0x87, 0x3b, - 0x5d, 0x6f, 0x7f, 0x14, 0x91, 0x3f, 0x67, 0x44, 0x32, 0x6a, 0x81, 0xe0, 0x6d, 0x08, 0x34, 0xd2, - 0x13, 0xb6, 0xb3, 0x36, 0x4e, 0x4f, 0xfe, 0xc2, 0xef, 0x09, 0xc5, 0x21, 0x3d, 0xa9, 0xd6, 0x7e, - 0xe5, 0xf3, 0xa7, 0xa4, 0xcf, 0x7d, 0xfe, 0x94, 0xf4, 0xbb, 0x9f, 0x3f, 0x25, 0x7d, 0xe8, 0x0b, - 0xa7, 0x8e, 0x7c, 0xee, 0x0b, 0xa7, 0x8e, 0xfc, 0xd6, 0x17, 0x4e, 0x1d, 0x79, 0xe5, 0x91, 0x5d, - 0xd3, 0xdb, 0xeb, 0x6d, 0x2f, 0x1a, 0x76, 0xe7, 0x82, 0x61, 0xbb, 0x1d, 0xdb, 0xe5, 0xff, 0x3d, - 0xe6, 0xb6, 0x6e, 0x72, 0xf9, 0xf1, 0xee, 0x30, 0x29, 0xd8, 0x4e, 0xb3, 0x1d, 0x35, 0xf8, 0xa3, - 0x47, 0x60, 0x66, 0xd7, 0xde, 0xb5, 0xe9, 0xe7, 0x05, 0xf2, 0x17, 0x17, 0x90, 0xac, 0x5f, 0x3a, - 0x86, 0x90, 0xac, 0xc3, 0x34, 0x07, 0xd6, 0xe8, 0xe1, 0x0e, 0x96, 0xc8, 0x42, 0x07, 0xee, 0xa2, - 0xcc, 0xfe, 0xec, 0xef, 0x53, 0x9f, 0x55, 0x9d, 0xe2, 0xa8, 0xa4, 0x8e, 0xe5, 0xba, 0xca, 0x2a, - 0x1c, 0x8d, 0xd0, 0x63, 0x16, 0x04, 0x3b, 0x23, 0x28, 0xfe, 0x7b, 0x4e, 0x71, 0x3a, 0x44, 0xb1, - 0xc1, 0x51, 0xcb, 0x4b, 0x50, 0x38, 0x0c, 0xad, 0x5f, 0xe6, 0xb4, 0xf2, 0x38, 0x4c, 0x64, 0x05, - 0x4a, 0x94, 0x88, 0xd1, 0x73, 0x3d, 0xbb, 0x43, 0xe7, 0xf0, 0x60, 0x32, 0xff, 0xe1, 0xf7, 0x99, - 0x4a, 0x2f, 0x12, 0xb4, 0x25, 0x1f, 0xab, 0x5c, 0x06, 0x7a, 0x9e, 0xa5, 0x85, 0x8d, 0xf6, 0x08, - 0x0a, 0xbf, 0xc2, 0x3b, 0xe2, 0xc3, 0x97, 0x6f, 0xc0, 0x0c, 0xf9, 0x9b, 0x5a, 0xcf, 0x70, 0x4f, - 0x46, 0x6f, 0xb9, 0xcc, 0xfe, 0x97, 0x6f, 0x65, 0x56, 0x63, 0xda, 0x27, 0x10, 0xea, 0x53, 0x68, - 0x16, 0x77, 0xb1, 0xe7, 0x61, 0xc7, 0xd5, 0xf4, 0x76, 0x5c, 0xf7, 0x42, 0x39, 0xeb, 0xd9, 0x1f, - 0xfc, 0x72, 0x74, 0x16, 0x57, 0x18, 0x66, 0xa5, 0xdd, 0x2e, 0x6f, 0xc1, 0xf1, 0x18, 0xa9, 0x18, - 0x83, 0xe6, 0x47, 0x38, 0xcd, 0x99, 0x01, 0xc9, 0x20, 0x64, 0x37, 0x41, 0x94, 0xfb, 0x73, 0x39, - 0x06, 0xcd, 0x8f, 0x72, 0x9a, 0x88, 0xe3, 0x8a, 0x29, 0x25, 0x14, 0xaf, 0xc3, 0xd4, 0x2d, 0xec, - 0x6c, 0xdb, 0x2e, 0xdf, 0x27, 0x18, 0x83, 0xdc, 0xc7, 0x38, 0xb9, 0x12, 0x47, 0xa4, 0x1b, 0x07, - 0x84, 0xd6, 0x33, 0x90, 0xd9, 0xd1, 0x0d, 0x3c, 0x06, 0x89, 0xbb, 0x9c, 0xc4, 0x24, 0x81, 0x27, - 0xa8, 0x15, 0xc8, 0xef, 0xda, 0xdc, 0x81, 0x1a, 0x8d, 0xfe, 0x71, 0x8e, 0x9e, 0x13, 0x38, 0x9c, - 0x44, 0xd7, 0xee, 0xf6, 0xda, 0xc4, 0xbb, 0x1a, 0x4d, 0xe2, 0x87, 0x04, 0x09, 0x81, 0xc3, 0x49, - 0x1c, 0x82, 0xad, 0x6f, 0x08, 0x12, 0x6e, 0x88, 0x9f, 0x2f, 0x40, 0xce, 0xb6, 0xda, 0xfb, 0xb6, - 0x35, 0x4e, 0x27, 0x7e, 0x98, 0x53, 0x00, 0x8e, 0x42, 0x08, 0x3c, 0x0b, 0xd9, 0x71, 0x27, 0xe2, - 0xc7, 0xbe, 0x2c, 0x96, 0x87, 0x98, 0x81, 0x15, 0x28, 0x09, 0x05, 0x65, 0xda, 0xd6, 0x18, 0x24, - 0x7e, 0x9c, 0x93, 0x28, 0x86, 0xd0, 0xf8, 0x30, 0x3c, 0xec, 0x7a, 0xbb, 0x78, 0x1c, 0x22, 0x9f, - 0x10, 0xc3, 0xe0, 0x28, 0x9c, 0x95, 0xdb, 0xd8, 0x32, 0xf6, 0xc6, 0xa3, 0xf0, 0x49, 0xc1, 0x4a, - 0x81, 0x43, 0x48, 0x2c, 0x41, 0xa1, 0xa3, 0x3b, 0xee, 0x9e, 0xde, 0x1e, 0x6b, 0x3a, 0x3e, 0xc5, - 0x69, 0xe4, 0x7d, 0x24, 0xce, 0x91, 0x9e, 0x75, 0x18, 0x32, 0x3f, 0x21, 0x38, 0x12, 0x42, 0xe3, - 0x4b, 0xcf, 0xf5, 0xe8, 0xa6, 0xca, 0x61, 0xa8, 0xfd, 0xa4, 0x58, 0x7a, 0x0c, 0x77, 0x2d, 0x4c, - 0xf1, 0x59, 0xc8, 0xba, 0xe6, 0x6b, 0x63, 0x91, 0xf9, 0x27, 0x62, 0xa6, 0x29, 0x02, 0x41, 0x7e, - 0x19, 0x4e, 0xc4, 0x9a, 0x89, 0x31, 0x88, 0xfd, 0x14, 0x27, 0x76, 0x2c, 0xc6, 0x54, 0x70, 0x95, - 0x70, 0x58, 0x92, 0x3f, 0x2d, 0x54, 0x02, 0xee, 0xa3, 0xb5, 0x49, 0x42, 0x5a, 0x57, 0xdf, 0x39, - 0x1c, 0xd7, 0xfe, 0xa9, 0xe0, 0x1a, 0xc3, 0x8d, 0x70, 0xad, 0x09, 0xc7, 0x38, 0xc5, 0xc3, 0xcd, - 0xeb, 0xcf, 0x08, 0xc5, 0xca, 0xb0, 0xb7, 0xa2, 0xb3, 0xfb, 0xf5, 0x30, 0xe7, 0xb3, 0x53, 0xc4, - 0x4e, 0xae, 0xd6, 0xd1, 0xbb, 0x63, 0x50, 0xfe, 0x59, 0x4e, 0x59, 0x68, 0x7c, 0x3f, 0xf8, 0x72, - 0xd7, 0xf4, 0x2e, 0x21, 0xfe, 0x12, 0xcc, 0x0a, 0xe2, 0x3d, 0xcb, 0xc1, 0x86, 0xbd, 0x6b, 0x99, - 0xaf, 0xe1, 0xd6, 0x18, 0xa4, 0xff, 0x59, 0xdf, 0x54, 0x6d, 0x85, 0xd0, 0x09, 0xe5, 0x3a, 0xc8, - 0xbe, 0xaf, 0xa2, 0x99, 0x9d, 0xae, 0xed, 0x78, 0x23, 0x28, 0x7e, 0x5a, 0xcc, 0x94, 0x8f, 0x57, - 0xa7, 0x68, 0xe5, 0x1a, 0xb0, 0x93, 0x46, 0xe3, 0x8a, 0xe4, 0x67, 0x38, 0xa1, 0x42, 0x80, 0xc5, - 0x15, 0x87, 0x61, 0x77, 0xba, 0xba, 0x33, 0x8e, 0xfe, 0xfb, 0x39, 0xa1, 0x38, 0x38, 0x0a, 0x57, - 0x1c, 0xc4, 0x5f, 0x23, 0xd6, 0x7e, 0x0c, 0x0a, 0x3f, 0x2f, 0x14, 0x87, 0xc0, 0xe1, 0x24, 0x84, - 0xc3, 0x30, 0x06, 0x89, 0x7f, 0x2e, 0x48, 0x08, 0x1c, 0x42, 0xe2, 0xdd, 0x81, 0xa1, 0x75, 0xf0, - 0xae, 0xe9, 0x7a, 0xfc, 0xa8, 0xe0, 0xc1, 0xa4, 0x7e, 0xe1, 0xcb, 0x51, 0x27, 0x4c, 0x0d, 0xa1, - 0x12, 0x4d, 0xc4, 0x3d, 0x7b, 0x1a, 0xd0, 0x8f, 0xee, 0xd8, 0x67, 0x85, 0x26, 0x0a, 0xa1, 0x91, - 0xbe, 0x85, 0x3c, 0x44, 0xc2, 0x76, 0x83, 0x84, 0xb1, 0x63, 0x90, 0xfb, 0x17, 0x7d, 0x9d, 0x6b, - 0x08, 0x5c, 0x42, 0x33, 0xe4, 0xff, 0xf4, 0xac, 0x9b, 0x78, 0x7f, 0x2c, 0xe9, 0xfc, 0xc5, 0x3e, - 0xff, 0x67, 0x8b, 0x61, 0x32, 0x1d, 0x52, 0xea, 0xf3, 0xa7, 0x46, 0x47, 0x40, 0xdf, 0xf2, 0x15, - 0x3e, 0xde, 0xa8, 0x3b, 0x55, 0x5e, 0x25, 0x42, 0x1e, 0x75, 0x7a, 0x46, 0x13, 0xfb, 0xd6, 0xaf, - 0xf8, 0x72, 0x1e, 0xf1, 0x79, 0xca, 0x57, 0xa1, 0x10, 0x71, 0x78, 0x46, 0x93, 0xfa, 0x36, 0x4e, - 0x2a, 0x1f, 0xf6, 0x77, 0xca, 0x97, 0x21, 0x45, 0x9c, 0x97, 0xd1, 0xe8, 0xef, 0xe7, 0xe8, 0x14, - 0xbc, 0xfc, 0x1c, 0x64, 0x84, 0xd3, 0x32, 0x1a, 0xf5, 0x03, 0x1c, 0xd5, 0x47, 0x21, 0xe8, 0xc2, - 0x61, 0x19, 0x8d, 0xfe, 0xf7, 0x05, 0xba, 0x40, 0x21, 0xe8, 0xe3, 0xb3, 0xf0, 0xdf, 0x7c, 0x47, - 0x8a, 0x1b, 0x1d, 0xc1, 0xbb, 0x67, 0x61, 0x92, 0x7b, 0x2a, 0xa3, 0xb1, 0xbf, 0x9d, 0x37, 0x2e, - 0x30, 0xca, 0x4f, 0xc1, 0xc4, 0x98, 0x0c, 0xff, 0x2e, 0x8e, 0xca, 0xe0, 0xcb, 0x4b, 0x90, 0x0b, - 0x79, 0x27, 0xa3, 0xd1, 0xbf, 0x9b, 0xa3, 0x87, 0xb1, 0x48, 0xd7, 0xb9, 0x77, 0x32, 0x9a, 0xc0, - 0x3f, 0x10, 0x5d, 0xe7, 0x18, 0x84, 0x6d, 0xc2, 0x31, 0x19, 0x8d, 0xfd, 0x21, 0xc1, 0x75, 0x81, - 0x52, 0x7e, 0x01, 0xb2, 0xbe, 0xb1, 0x19, 0x8d, 0xff, 0x3d, 0x1c, 0x3f, 0xc0, 0x21, 0x1c, 0x08, - 0x19, 0xbb, 0xd1, 0x24, 0xfe, 0xa1, 0xe0, 0x40, 0x08, 0x8b, 0x2c, 0xa3, 0x7e, 0x07, 0x66, 0x34, - 0xa5, 0xef, 0x15, 0xcb, 0xa8, 0xcf, 0x7f, 0x21, 0xb3, 0x49, 0x75, 0xfe, 0x68, 0x12, 0xdf, 0x27, - 0x66, 0x93, 0xc2, 0x93, 0x6e, 0xf4, 0x7b, 0x04, 0xa3, 0x69, 0xfc, 0x80, 0xe8, 0x46, 0x9f, 0x43, - 0x50, 0xde, 0x04, 0x34, 0xe8, 0x0d, 0x8c, 0xa6, 0xf7, 0x61, 0x4e, 0x6f, 0x6a, 0xc0, 0x19, 0x28, - 0xbf, 0x07, 0x8e, 0xc5, 0x7b, 0x02, 0xa3, 0xa9, 0xfe, 0xe0, 0x57, 0xfa, 0x62, 0xb7, 0xb0, 0x23, - 0x50, 0x6e, 0x06, 0x26, 0x25, 0xec, 0x05, 0x8c, 0x26, 0xfb, 0x91, 0xaf, 0x44, 0x15, 0x77, 0xd8, - 0x09, 0x28, 0x57, 0x00, 0x02, 0x03, 0x3c, 0x9a, 0xd6, 0xc7, 0x38, 0xad, 0x10, 0x12, 0x59, 0x1a, - 0xdc, 0xfe, 0x8e, 0xc6, 0xbf, 0x2b, 0x96, 0x06, 0xc7, 0x20, 0x4b, 0x43, 0x98, 0xde, 0xd1, 0xd8, - 0x1f, 0x17, 0x4b, 0x43, 0xa0, 0x10, 0xc9, 0x0e, 0x59, 0xb7, 0xd1, 0x14, 0x7e, 0x58, 0x48, 0x76, - 0x08, 0xab, 0xbc, 0x0e, 0x53, 0x03, 0x06, 0x71, 0x34, 0xa9, 0x1f, 0xe1, 0xa4, 0xe4, 0x7e, 0x7b, - 0x18, 0x36, 0x5e, 0xdc, 0x18, 0x8e, 0xa6, 0xf6, 0xa3, 0x7d, 0xc6, 0x8b, 0xdb, 0xc2, 0xf2, 0xb3, - 0x90, 0xb1, 0x7a, 0xed, 0x36, 0x59, 0x3c, 0xa3, 0x52, 0x5e, 0xff, 0xfd, 0xab, 0x9c, 0x3b, 0x02, - 0xa1, 0x7c, 0x19, 0x26, 0x70, 0x67, 0x1b, 0xb7, 0x46, 0x61, 0xfe, 0xe1, 0x57, 0x85, 0xc2, 0x24, - 0xd0, 0xe5, 0x17, 0x00, 0x58, 0x6a, 0x84, 0x1e, 0xd2, 0x18, 0x81, 0xfb, 0xa5, 0xaf, 0xf2, 0xc3, - 0x97, 0x01, 0x4a, 0x40, 0x60, 0x9c, 0x4c, 0xdd, 0x97, 0xa3, 0x04, 0xe8, 0x8c, 0x3c, 0x03, 0x93, - 0xaf, 0xba, 0xb6, 0xe5, 0xe9, 0x23, 0x33, 0x96, 0x7f, 0xc4, 0xb1, 0x05, 0x3c, 0x61, 0x58, 0xc7, - 0x76, 0xb0, 0xa7, 0xef, 0xba, 0xa3, 0x70, 0xff, 0x98, 0xe3, 0xfa, 0x08, 0x04, 0xd9, 0xd0, 0x5d, - 0x6f, 0x9c, 0x71, 0xff, 0x0f, 0x81, 0x2c, 0x10, 0x48, 0xa7, 0xc9, 0xdf, 0x37, 0xf1, 0xc8, 0x0c, - 0xe7, 0x9f, 0x88, 0x4e, 0x73, 0xf8, 0xf2, 0x73, 0x90, 0x25, 0x7f, 0xb2, 0x13, 0xd5, 0x23, 0x90, - 0xff, 0x94, 0x23, 0x07, 0x18, 0xa4, 0x65, 0xd7, 0x6b, 0x79, 0xe6, 0x68, 0x66, 0xff, 0x19, 0x9f, - 0x69, 0x01, 0x5f, 0xae, 0x40, 0xce, 0xf5, 0x5a, 0xad, 0x1e, 0xf7, 0x4f, 0x47, 0xe5, 0x87, 0xbf, - 0xea, 0xa7, 0x2c, 0x7c, 0x1c, 0x32, 0xdb, 0xb7, 0x6f, 0x7a, 0x5d, 0x9b, 0xee, 0xc6, 0x8d, 0xcc, - 0x10, 0x73, 0x0a, 0x21, 0x94, 0xf2, 0x12, 0xe4, 0xc9, 0x58, 0xc4, 0x4d, 0x95, 0x91, 0xf9, 0x61, - 0xce, 0x80, 0x08, 0x52, 0xf5, 0x9b, 0x87, 0x25, 0x77, 0xe3, 0xf7, 0x10, 0x60, 0xc5, 0x5e, 0xb1, - 0xd9, 0xee, 0xc1, 0x2b, 0x0f, 0x0e, 0x66, 0x7f, 0xa3, 0x79, 0x5d, 0xfa, 0x17, 0xfc, 0x2f, 0x09, - 0xee, 0x37, 0xec, 0x0e, 0xf6, 0xb6, 0x77, 0xbc, 0x0b, 0x86, 0xb3, 0xdf, 0xf5, 0xec, 0x0b, 0xb7, - 0x2e, 0x5e, 0xb8, 0x89, 0xf7, 0x5d, 0x9e, 0xf8, 0x45, 0xa2, 0x7a, 0x91, 0x55, 0x2f, 0xde, 0xba, - 0x38, 0x17, 0x9b, 0x22, 0x56, 0x5e, 0x82, 0xec, 0x26, 0xbd, 0xb9, 0xfa, 0x22, 0xde, 0x47, 0x73, - 0x30, 0x89, 0x5b, 0x97, 0x2e, 0x5f, 0xbe, 0xf8, 0x0c, 0xdd, 0x8b, 0xcf, 0x5f, 0x3b, 0xa2, 0x8a, - 0x02, 0x74, 0x0a, 0xb2, 0x2e, 0x36, 0xba, 0x97, 0x2e, 0x5f, 0xb9, 0x79, 0x91, 0xee, 0xe3, 0x90, - 0xda, 0xa0, 0xa8, 0x9c, 0xf9, 0xe2, 0x1b, 0xf3, 0xd2, 0x17, 0x7f, 0x78, 0x5e, 0xaa, 0x4e, 0x40, + // 11885 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x94, 0x1c, 0x57, + 0x5a, 0x98, 0xaa, 0xbb, 0xa7, 0xa7, 0xfb, 0xeb, 0x57, 0xcd, 0x9d, 0x91, 0x34, 0x1a, 0xd9, 0x9a, + 0x51, 0xc9, 0xb6, 0x64, 0xd9, 0x1e, 0x59, 0xb2, 0x2d, 0xdb, 0xed, 0x17, 0xdd, 0x33, 0xad, 0x51, + 0xcb, 0xf3, 0xda, 0xea, 0x1e, 0xad, 0x6d, 0x1e, 0x45, 0x4d, 0xf5, 0x9d, 0x99, 0xb2, 0xba, 0xab, + 0x7a, 0xab, 0xaa, 0x25, 0x8d, 0x73, 0x4e, 0xce, 0x12, 0x58, 0xb2, 0x88, 0x47, 0x96, 0x40, 0x60, + 0xd9, 0x5d, 0x2d, 0x06, 0x02, 0xbb, 0x0b, 0x81, 0x40, 0x76, 0x21, 0x6c, 0x38, 0x79, 0x90, 0x93, + 0x10, 0x20, 0x27, 0x64, 0xc3, 0x8f, 0xc0, 0xe1, 0x1c, 0x1c, 0xd8, 0xe5, 0x1c, 0x36, 0xec, 0x42, + 0x80, 0x2c, 0x1c, 0x4e, 0xf6, 0x24, 0x27, 0xe7, 0xbe, 0xea, 0xd1, 0x5d, 0x3d, 0xdd, 0x23, 0xdb, + 0x40, 0x20, 0x7f, 0xa4, 0xa9, 0x7b, 0xbf, 0xef, 0xbb, 0xf7, 0x7e, 0xf7, 0xbb, 0xdf, 0xeb, 0x3e, + 0x1a, 0x7e, 0xf7, 0x0a, 0x2c, 0xec, 0xda, 0xf6, 0x6e, 0x1b, 0x5f, 0xe8, 0x3a, 0xb6, 0x67, 0x6f, + 0xf7, 0x76, 0x2e, 0xb4, 0xb0, 0x6b, 0x38, 0x66, 0xd7, 0xb3, 0x9d, 0x45, 0x5a, 0x86, 0x4a, 0x0c, + 0x62, 0x51, 0x40, 0x28, 0x6b, 0x30, 0x75, 0xc5, 0x6c, 0xe3, 0x65, 0x1f, 0xb0, 0x81, 0x3d, 0xf4, + 0x0c, 0xa4, 0x76, 0xcc, 0x36, 0x9e, 0x95, 0x16, 0x92, 0xe7, 0x72, 0x97, 0x1e, 0x58, 0xec, 0x43, + 0x5a, 0x8c, 0x62, 0x6c, 0x92, 0x62, 0x95, 0x62, 0x28, 0xff, 0x27, 0x05, 0xd3, 0x31, 0xb5, 0x08, + 0x41, 0xca, 0xd2, 0x3b, 0x84, 0xa2, 0x74, 0x2e, 0xab, 0xd2, 0xbf, 0xd1, 0x2c, 0x4c, 0x76, 0x75, + 0xe3, 0x86, 0xbe, 0x8b, 0x67, 0x13, 0xb4, 0x58, 0x7c, 0xa2, 0x53, 0x00, 0x2d, 0xdc, 0xc5, 0x56, + 0x0b, 0x5b, 0xc6, 0xfe, 0x6c, 0x72, 0x21, 0x79, 0x2e, 0xab, 0x86, 0x4a, 0xd0, 0x23, 0x30, 0xd5, + 0xed, 0x6d, 0xb7, 0x4d, 0x43, 0x0b, 0x81, 0xc1, 0x42, 0xf2, 0xdc, 0x84, 0x2a, 0xb3, 0x8a, 0xe5, + 0x00, 0xf8, 0x2c, 0x94, 0x6e, 0x61, 0xfd, 0x46, 0x18, 0x34, 0x47, 0x41, 0x8b, 0xa4, 0x38, 0x04, + 0xb8, 0x04, 0xf9, 0x0e, 0x76, 0x5d, 0x7d, 0x17, 0x6b, 0xde, 0x7e, 0x17, 0xcf, 0xa6, 0xe8, 0xe8, + 0x17, 0x06, 0x46, 0xdf, 0x3f, 0xf2, 0x1c, 0xc7, 0x6a, 0xee, 0x77, 0x31, 0xaa, 0x40, 0x16, 0x5b, + 0xbd, 0x0e, 0xa3, 0x30, 0x31, 0x84, 0x7f, 0x35, 0xab, 0xd7, 0xe9, 0xa7, 0x92, 0x21, 0x68, 0x9c, + 0xc4, 0xa4, 0x8b, 0x9d, 0x9b, 0xa6, 0x81, 0x67, 0xd3, 0x94, 0xc0, 0xd9, 0x01, 0x02, 0x0d, 0x56, + 0xdf, 0x4f, 0x43, 0xe0, 0xa1, 0x25, 0xc8, 0xe2, 0xdb, 0x1e, 0xb6, 0x5c, 0xd3, 0xb6, 0x66, 0x27, + 0x29, 0x91, 0x07, 0x63, 0x66, 0x11, 0xb7, 0x5b, 0xfd, 0x24, 0x02, 0x3c, 0x74, 0x19, 0x26, 0xed, + 0xae, 0x67, 0xda, 0x96, 0x3b, 0x9b, 0x59, 0x90, 0xce, 0xe5, 0x2e, 0xdd, 0x17, 0x2b, 0x08, 0x1b, + 0x0c, 0x46, 0x15, 0xc0, 0xa8, 0x0e, 0xb2, 0x6b, 0xf7, 0x1c, 0x03, 0x6b, 0x86, 0xdd, 0xc2, 0x9a, + 0x69, 0xed, 0xd8, 0xb3, 0x59, 0x4a, 0x60, 0x7e, 0x70, 0x20, 0x14, 0x70, 0xc9, 0x6e, 0xe1, 0xba, + 0xb5, 0x63, 0xab, 0x45, 0x37, 0xf2, 0x8d, 0x8e, 0x41, 0xda, 0xdd, 0xb7, 0x3c, 0xfd, 0xf6, 0x6c, + 0x9e, 0x4a, 0x08, 0xff, 0x22, 0xa2, 0x83, 0x5b, 0x26, 0x69, 0x6e, 0xb6, 0xc0, 0x44, 0x87, 0x7f, + 0x2a, 0x9f, 0x4d, 0x43, 0x69, 0x1c, 0xe1, 0x7b, 0x0e, 0x26, 0x76, 0xc8, 0xf8, 0x67, 0x13, 0x87, + 0xe1, 0x0e, 0xc3, 0x89, 0xb2, 0x37, 0x7d, 0x8f, 0xec, 0xad, 0x40, 0xce, 0xc2, 0xae, 0x87, 0x5b, + 0x4c, 0x56, 0x92, 0x63, 0x4a, 0x1b, 0x30, 0xa4, 0x41, 0x61, 0x4b, 0xdd, 0x93, 0xb0, 0xbd, 0x02, + 0x25, 0xbf, 0x4b, 0x9a, 0xa3, 0x5b, 0xbb, 0x42, 0x6a, 0x2f, 0x8c, 0xea, 0xc9, 0x62, 0x4d, 0xe0, + 0xa9, 0x04, 0x4d, 0x2d, 0xe2, 0xc8, 0x37, 0x5a, 0x06, 0xb0, 0x2d, 0x6c, 0xef, 0x68, 0x2d, 0x6c, + 0xb4, 0x67, 0x33, 0x43, 0xb8, 0xb4, 0x41, 0x40, 0x06, 0xb8, 0x64, 0xb3, 0x52, 0xa3, 0x8d, 0x9e, + 0x0d, 0x84, 0x70, 0x72, 0x88, 0x0c, 0xad, 0xb1, 0xe5, 0x37, 0x20, 0x87, 0x5b, 0x50, 0x74, 0x30, + 0x59, 0x11, 0xb8, 0xc5, 0x47, 0x96, 0xa5, 0x9d, 0x58, 0x1c, 0x39, 0x32, 0x95, 0xa3, 0xb1, 0x81, + 0x15, 0x9c, 0xf0, 0x27, 0x3a, 0x03, 0x7e, 0x81, 0x46, 0xc5, 0x0a, 0xa8, 0x7e, 0xca, 0x8b, 0xc2, + 0x75, 0xbd, 0x83, 0xe7, 0xde, 0x80, 0x62, 0x94, 0x3d, 0x68, 0x06, 0x26, 0x5c, 0x4f, 0x77, 0x3c, + 0x2a, 0x85, 0x13, 0x2a, 0xfb, 0x40, 0x32, 0x24, 0xb1, 0xd5, 0xa2, 0xfa, 0x6f, 0x42, 0x25, 0x7f, + 0xa2, 0xaf, 0x09, 0x06, 0x9c, 0xa4, 0x03, 0x7e, 0x68, 0x70, 0x46, 0x23, 0x94, 0xfb, 0xc7, 0x3d, + 0xf7, 0x34, 0x14, 0x22, 0x03, 0x18, 0xb7, 0x69, 0xe5, 0x27, 0x53, 0x70, 0x34, 0x96, 0x36, 0x7a, + 0x05, 0x66, 0x7a, 0x96, 0x69, 0x79, 0xd8, 0xe9, 0x3a, 0x98, 0x88, 0x2c, 0x6b, 0x6b, 0xf6, 0xf7, + 0x27, 0x87, 0x08, 0xdd, 0x56, 0x18, 0x9a, 0x51, 0x51, 0xa7, 0x7b, 0x83, 0x85, 0xe8, 0x55, 0xc8, + 0x11, 0xf9, 0xd0, 0x1d, 0x9d, 0x12, 0x64, 0xab, 0xf1, 0xd2, 0x78, 0x43, 0x5e, 0x5c, 0x0e, 0x30, + 0xab, 0xc9, 0x0f, 0x4a, 0x09, 0x35, 0x4c, 0x0b, 0xed, 0x41, 0xfe, 0x26, 0x76, 0xcc, 0x1d, 0xd3, + 0x60, 0xb4, 0x09, 0x3b, 0x8b, 0x97, 0x9e, 0x19, 0x93, 0xf6, 0xf5, 0x10, 0x6a, 0xc3, 0xd3, 0x3d, + 0x5c, 0x86, 0xad, 0xf5, 0xeb, 0x35, 0xb5, 0x7e, 0xa5, 0x5e, 0x5b, 0x56, 0x23, 0x94, 0xe7, 0x3e, + 0x2d, 0x41, 0x2e, 0xd4, 0x17, 0xa2, 0xb6, 0xac, 0x5e, 0x67, 0x1b, 0x3b, 0x9c, 0xe3, 0xfc, 0x0b, + 0x9d, 0x84, 0xec, 0x4e, 0xaf, 0xdd, 0x66, 0x62, 0xc3, 0x6c, 0x5e, 0x86, 0x14, 0x10, 0x91, 0x21, + 0x5a, 0x8a, 0x2b, 0x02, 0xaa, 0xa5, 0xc8, 0xdf, 0xe8, 0x0c, 0xe4, 0x4c, 0x57, 0x73, 0x70, 0x17, + 0xeb, 0x1e, 0x6e, 0xcd, 0xa6, 0x16, 0xa4, 0x73, 0x99, 0x6a, 0x62, 0x56, 0x52, 0xc1, 0x74, 0x55, + 0x5e, 0x8a, 0xe6, 0x20, 0x23, 0x64, 0x6f, 0x76, 0x82, 0x40, 0xa8, 0xfe, 0x37, 0xab, 0xe3, 0xd8, + 0x69, 0x51, 0xc7, 0xbe, 0x95, 0x27, 0x61, 0x6a, 0x60, 0x90, 0xa8, 0x04, 0xb9, 0xe5, 0xda, 0xd2, + 0x6a, 0x45, 0xad, 0x34, 0xeb, 0x1b, 0xeb, 0xf2, 0x11, 0x54, 0x84, 0xd0, 0xb8, 0x65, 0xe9, 0x7c, + 0x36, 0xf3, 0xc5, 0x49, 0xf9, 0xfd, 0xef, 0x7f, 0xff, 0xfb, 0x13, 0xca, 0x2f, 0xa6, 0x61, 0x26, + 0x4e, 0xcb, 0xc5, 0x2a, 0xdc, 0x80, 0x27, 0xc9, 0x08, 0x4f, 0x2a, 0x30, 0xd1, 0xd6, 0xb7, 0x71, + 0x9b, 0x0e, 0xae, 0x78, 0xe9, 0x91, 0xb1, 0xf4, 0xe8, 0xe2, 0x2a, 0x41, 0x51, 0x19, 0x26, 0x7a, + 0x91, 0x73, 0x6e, 0x82, 0x52, 0x38, 0x3f, 0x1e, 0x05, 0xa2, 0xfd, 0x38, 0x97, 0x4f, 0x42, 0x96, + 0xfc, 0xcf, 0xa6, 0x25, 0xcd, 0xa6, 0x85, 0x14, 0xd0, 0x69, 0x99, 0x83, 0x0c, 0x55, 0x6c, 0x2d, + 0xec, 0x4f, 0x99, 0xf8, 0x26, 0xaa, 0xa0, 0x85, 0x77, 0xf4, 0x5e, 0xdb, 0xd3, 0x6e, 0xea, 0xed, + 0x1e, 0xa6, 0x2a, 0x2a, 0xab, 0xe6, 0x79, 0xe1, 0x75, 0x52, 0x86, 0xe6, 0x21, 0xc7, 0xf4, 0xa0, + 0x69, 0xb5, 0xf0, 0x6d, 0x6a, 0x09, 0x27, 0x54, 0xa6, 0x1a, 0xeb, 0xa4, 0x84, 0x34, 0xff, 0xba, + 0x6b, 0x5b, 0x42, 0x99, 0xd0, 0x26, 0x48, 0x01, 0x6d, 0xfe, 0xe9, 0x7e, 0x23, 0x7c, 0x7f, 0xfc, + 0xf0, 0x06, 0xb4, 0xdf, 0x59, 0x28, 0x51, 0x88, 0x27, 0xf8, 0x5a, 0xd5, 0xdb, 0xb3, 0x53, 0x54, + 0x00, 0x8a, 0xac, 0x78, 0x83, 0x97, 0x2a, 0x3f, 0x97, 0x80, 0x14, 0x35, 0x05, 0x25, 0xc8, 0x35, + 0x5f, 0xdd, 0xac, 0x69, 0xcb, 0x1b, 0x5b, 0xd5, 0xd5, 0x9a, 0x2c, 0x91, 0xa9, 0xa7, 0x05, 0x57, + 0x56, 0x37, 0x2a, 0x4d, 0x39, 0xe1, 0x7f, 0xd7, 0xd7, 0x9b, 0x97, 0x9f, 0x94, 0x93, 0x3e, 0xc2, + 0x16, 0x2b, 0x48, 0x85, 0x01, 0x9e, 0xb8, 0x24, 0x4f, 0x20, 0x19, 0xf2, 0x8c, 0x40, 0xfd, 0x95, + 0xda, 0xf2, 0xe5, 0x27, 0xe5, 0x74, 0xb4, 0xe4, 0x89, 0x4b, 0xf2, 0x24, 0x2a, 0x40, 0x96, 0x96, + 0x54, 0x37, 0x36, 0x56, 0xe5, 0x8c, 0x4f, 0xb3, 0xd1, 0x54, 0xeb, 0xeb, 0x2b, 0x72, 0xd6, 0xa7, + 0xb9, 0xa2, 0x6e, 0x6c, 0x6d, 0xca, 0xe0, 0x53, 0x58, 0xab, 0x35, 0x1a, 0x95, 0x95, 0x9a, 0x9c, + 0xf3, 0x21, 0xaa, 0xaf, 0x36, 0x6b, 0x0d, 0x39, 0x1f, 0xe9, 0xd6, 0x13, 0x97, 0xe4, 0x82, 0xdf, + 0x44, 0x6d, 0x7d, 0x6b, 0x4d, 0x2e, 0xa2, 0x29, 0x28, 0xb0, 0x26, 0x44, 0x27, 0x4a, 0x7d, 0x45, + 0x97, 0x9f, 0x94, 0xe5, 0xa0, 0x23, 0x8c, 0xca, 0x54, 0xa4, 0xe0, 0xf2, 0x93, 0x32, 0x52, 0x96, + 0x60, 0x82, 0x8a, 0x21, 0x42, 0x50, 0x5c, 0xad, 0x54, 0x6b, 0xab, 0xda, 0xc6, 0x26, 0x59, 0x34, + 0x95, 0x55, 0x59, 0x0a, 0xca, 0xd4, 0xda, 0x7b, 0xb6, 0xea, 0x6a, 0x6d, 0x59, 0x4e, 0x84, 0xcb, + 0x36, 0x6b, 0x95, 0x66, 0x6d, 0x59, 0x4e, 0x2a, 0x06, 0xcc, 0xc4, 0x99, 0xc0, 0xd8, 0x25, 0x14, + 0x92, 0x85, 0xc4, 0x10, 0x59, 0xa0, 0xb4, 0xfa, 0x65, 0x41, 0xf9, 0x42, 0x02, 0xa6, 0x63, 0xdc, + 0x80, 0xd8, 0x46, 0x5e, 0x82, 0x09, 0x26, 0xcb, 0x4c, 0x15, 0x3f, 0x1c, 0xeb, 0x4f, 0x50, 0xc9, + 0x1e, 0x70, 0x8e, 0x28, 0x5e, 0xd8, 0x6d, 0x4c, 0x0e, 0x71, 0x1b, 0x09, 0x89, 0x01, 0x81, 0xfd, + 0xfa, 0x01, 0x73, 0xcd, 0x3c, 0x9a, 0xcb, 0xe3, 0x78, 0x34, 0xb4, 0xec, 0x70, 0x66, 0x7b, 0x22, + 0xc6, 0x6c, 0x3f, 0x07, 0x53, 0x03, 0x84, 0xc6, 0x36, 0x9f, 0xdf, 0x2c, 0xc1, 0xec, 0x30, 0xe6, + 0x8c, 0x50, 0x89, 0x89, 0x88, 0x4a, 0x7c, 0xae, 0x9f, 0x83, 0xa7, 0x87, 0x4f, 0xc2, 0xc0, 0x5c, + 0x7f, 0x42, 0x82, 0x63, 0xf1, 0xe1, 0x41, 0x6c, 0x1f, 0x5e, 0x84, 0x74, 0x07, 0x7b, 0x7b, 0xb6, + 0x70, 0x84, 0x1f, 0x8a, 0x71, 0xaf, 0x48, 0x75, 0xff, 0x64, 0x73, 0xac, 0xb0, 0x7f, 0x96, 0x1c, + 0xe6, 0xe3, 0xb3, 0xde, 0x0c, 0xf4, 0xf4, 0xdb, 0x12, 0x70, 0x34, 0x96, 0x78, 0x6c, 0x47, 0xef, + 0x07, 0x30, 0xad, 0x6e, 0xcf, 0x63, 0xce, 0x2e, 0xd3, 0xc4, 0x59, 0x5a, 0x42, 0x95, 0x17, 0xd1, + 0xb2, 0x3d, 0xcf, 0xaf, 0x67, 0x46, 0x14, 0x58, 0x11, 0x05, 0x78, 0x26, 0xe8, 0x68, 0x8a, 0x76, + 0xf4, 0xd4, 0x90, 0x91, 0x0e, 0x08, 0xe6, 0xe3, 0x20, 0x1b, 0x6d, 0x13, 0x5b, 0x9e, 0xe6, 0x7a, + 0x0e, 0xd6, 0x3b, 0xa6, 0xb5, 0xcb, 0xec, 0x6c, 0x79, 0x62, 0x47, 0x6f, 0xbb, 0x58, 0x2d, 0xb1, + 0xea, 0x86, 0xa8, 0x25, 0x18, 0x54, 0x80, 0x9c, 0x10, 0x46, 0x3a, 0x82, 0xc1, 0xaa, 0x7d, 0x0c, + 0xe5, 0xbb, 0xb3, 0x90, 0x0b, 0x05, 0x53, 0xe8, 0x34, 0xe4, 0x5f, 0xd7, 0x6f, 0xea, 0x9a, 0x08, + 0x90, 0x19, 0x27, 0x72, 0xa4, 0x6c, 0x93, 0x07, 0xc9, 0x8f, 0xc3, 0x0c, 0x05, 0xb1, 0x7b, 0x1e, + 0x76, 0x34, 0xa3, 0xad, 0xbb, 0x2e, 0x65, 0x5a, 0x86, 0x82, 0x22, 0x52, 0xb7, 0x41, 0xaa, 0x96, + 0x44, 0x0d, 0x7a, 0x0a, 0xa6, 0x29, 0x46, 0xa7, 0xd7, 0xf6, 0xcc, 0x6e, 0x1b, 0x6b, 0x24, 0x64, + 0x77, 0xa9, 0xc9, 0xf1, 0x7b, 0x36, 0x45, 0x20, 0xd6, 0x38, 0x00, 0xe9, 0x91, 0x8b, 0x96, 0xe1, + 0x7e, 0x8a, 0xb6, 0x8b, 0x2d, 0xec, 0xe8, 0x1e, 0xd6, 0xf0, 0xfb, 0x7a, 0x7a, 0xdb, 0xd5, 0x74, + 0xab, 0xa5, 0xed, 0xe9, 0xee, 0xde, 0xec, 0x8c, 0xef, 0x96, 0x9c, 0x20, 0x80, 0x2b, 0x1c, 0xae, + 0x46, 0xc1, 0x2a, 0x56, 0xeb, 0xaa, 0xee, 0xee, 0xa1, 0x32, 0x1c, 0xa3, 0x54, 0x5c, 0xcf, 0x31, + 0xad, 0x5d, 0xcd, 0xd8, 0xc3, 0xc6, 0x0d, 0xad, 0xe7, 0xed, 0x3c, 0x33, 0x7b, 0x32, 0xdc, 0x3e, + 0xed, 0x61, 0x83, 0xc2, 0x2c, 0x11, 0x90, 0x2d, 0x6f, 0xe7, 0x19, 0xd4, 0x80, 0x3c, 0x99, 0x8c, + 0x8e, 0xf9, 0x06, 0xd6, 0x76, 0x6c, 0x87, 0xda, 0xd0, 0x62, 0x8c, 0x6a, 0x0a, 0x71, 0x70, 0x71, + 0x83, 0x23, 0xac, 0xd9, 0x2d, 0x5c, 0x9e, 0x68, 0x6c, 0xd6, 0x6a, 0xcb, 0x6a, 0x4e, 0x50, 0xb9, + 0x62, 0x3b, 0x44, 0xa0, 0x76, 0x6d, 0x9f, 0xc1, 0x39, 0x26, 0x50, 0xbb, 0xb6, 0x60, 0xef, 0x53, + 0x30, 0x6d, 0x18, 0x6c, 0xcc, 0xa6, 0xa1, 0xf1, 0xc0, 0xda, 0x9d, 0x95, 0x23, 0xcc, 0x32, 0x8c, + 0x15, 0x06, 0xc0, 0x65, 0xdc, 0x45, 0xcf, 0xc2, 0xd1, 0x80, 0x59, 0x61, 0xc4, 0xa9, 0x81, 0x51, + 0xf6, 0xa3, 0x3e, 0x05, 0xd3, 0xdd, 0xfd, 0x41, 0x44, 0x14, 0x69, 0xb1, 0xbb, 0xdf, 0x8f, 0xf6, + 0x34, 0xcc, 0x74, 0xf7, 0xba, 0x83, 0x78, 0xe7, 0xc3, 0x78, 0xa8, 0xbb, 0xd7, 0xed, 0x47, 0x7c, + 0x90, 0x66, 0x59, 0x1c, 0x6c, 0x50, 0xef, 0xf0, 0x78, 0x18, 0x3c, 0x54, 0x81, 0x16, 0x41, 0x36, + 0x0c, 0x0d, 0x5b, 0xfa, 0x76, 0x1b, 0x6b, 0xba, 0x83, 0x2d, 0xdd, 0x9d, 0x9d, 0xa7, 0xc0, 0x29, + 0xcf, 0xe9, 0x61, 0xb5, 0x68, 0x18, 0x35, 0x5a, 0x59, 0xa1, 0x75, 0xe8, 0x3c, 0x4c, 0xd9, 0xdb, + 0xaf, 0x1b, 0x4c, 0x22, 0xb5, 0xae, 0x83, 0x77, 0xcc, 0xdb, 0xb3, 0x0f, 0x50, 0xf6, 0x96, 0x48, + 0x05, 0x95, 0xc7, 0x4d, 0x5a, 0x8c, 0x1e, 0x06, 0xd9, 0x70, 0xf7, 0x74, 0xa7, 0x4b, 0x55, 0xb2, + 0xdb, 0xd5, 0x0d, 0x3c, 0xfb, 0x20, 0x03, 0x65, 0xe5, 0xeb, 0xa2, 0x98, 0xac, 0x08, 0xf7, 0x96, + 0xb9, 0xe3, 0x09, 0x8a, 0x67, 0xd9, 0x8a, 0xa0, 0x65, 0x9c, 0xda, 0x39, 0x90, 0x09, 0x27, 0x22, + 0x0d, 0x9f, 0xa3, 0x60, 0xc5, 0xee, 0x5e, 0x37, 0xdc, 0xee, 0x19, 0x28, 0x10, 0xc8, 0xa0, 0xd1, + 0x87, 0x99, 0xe3, 0xd6, 0xdd, 0x0b, 0xb5, 0xf8, 0x24, 0x1c, 0x23, 0x40, 0x1d, 0xec, 0xe9, 0x2d, + 0xdd, 0xd3, 0x43, 0xd0, 0x8f, 0x52, 0x68, 0xc2, 0xf6, 0x35, 0x5e, 0x19, 0xe9, 0xa7, 0xd3, 0xdb, + 0xde, 0xf7, 0x05, 0xeb, 0x31, 0xd6, 0x4f, 0x52, 0x26, 0x44, 0xeb, 0x5d, 0x8b, 0xa6, 0x94, 0x32, + 0xe4, 0xc3, 0x72, 0x8f, 0xb2, 0xc0, 0x24, 0x5f, 0x96, 0x88, 0x13, 0xb4, 0xb4, 0xb1, 0x4c, 0xdc, + 0x97, 0xd7, 0x6a, 0x72, 0x82, 0xb8, 0x51, 0xab, 0xf5, 0x66, 0x4d, 0x53, 0xb7, 0xd6, 0x9b, 0xf5, + 0xb5, 0x9a, 0x9c, 0x0c, 0x39, 0xf6, 0xd7, 0x52, 0x99, 0x87, 0xe4, 0xb3, 0xca, 0x2f, 0x24, 0xa1, + 0x18, 0x8d, 0xad, 0xd1, 0xf3, 0x70, 0x5c, 0xa4, 0xc8, 0x5c, 0xec, 0x69, 0xb7, 0x4c, 0x87, 0x2e, + 0xc8, 0x8e, 0xce, 0x8c, 0xa3, 0x2f, 0x3f, 0x33, 0x1c, 0xaa, 0x81, 0xbd, 0xf7, 0x9a, 0x0e, 0x59, + 0x6e, 0x1d, 0xdd, 0x43, 0xab, 0x30, 0x6f, 0xd9, 0x9a, 0xeb, 0xe9, 0x56, 0x4b, 0x77, 0x5a, 0x5a, + 0x90, 0x9c, 0xd4, 0x74, 0xc3, 0xc0, 0xae, 0x6b, 0x33, 0x43, 0xe8, 0x53, 0xb9, 0xcf, 0xb2, 0x1b, + 0x1c, 0x38, 0xb0, 0x10, 0x15, 0x0e, 0xda, 0x27, 0xbe, 0xc9, 0x61, 0xe2, 0x7b, 0x12, 0xb2, 0x1d, + 0xbd, 0xab, 0x61, 0xcb, 0x73, 0xf6, 0xa9, 0x7f, 0x9e, 0x51, 0x33, 0x1d, 0xbd, 0x5b, 0x23, 0xdf, + 0xe8, 0x3a, 0x3c, 0x14, 0x80, 0x6a, 0x6d, 0xbc, 0xab, 0x1b, 0xfb, 0x1a, 0x75, 0xc6, 0x69, 0xa2, + 0x47, 0x33, 0x6c, 0x6b, 0xa7, 0x6d, 0x1a, 0x9e, 0x4b, 0xf5, 0x03, 0xd3, 0x71, 0x4a, 0x80, 0xb1, + 0x4a, 0x11, 0xae, 0xb9, 0xb6, 0x45, 0x7d, 0xf0, 0x25, 0x01, 0xfd, 0xee, 0xcd, 0x70, 0x74, 0x96, + 0x52, 0xf2, 0xc4, 0xb5, 0x54, 0x66, 0x42, 0x4e, 0x5f, 0x4b, 0x65, 0xd2, 0xf2, 0xe4, 0xb5, 0x54, + 0x26, 0x23, 0x67, 0xaf, 0xa5, 0x32, 0x59, 0x19, 0x94, 0x0f, 0x64, 0x21, 0x1f, 0x8e, 0x0c, 0x48, + 0xa0, 0x65, 0x50, 0xdb, 0x28, 0x51, 0xed, 0x79, 0xe6, 0xc0, 0x38, 0x62, 0x71, 0x89, 0x18, 0xcd, + 0x72, 0x9a, 0xb9, 0xe1, 0x2a, 0xc3, 0x24, 0x0e, 0x0b, 0x11, 0x6b, 0xcc, 0xdc, 0x9e, 0x8c, 0xca, + 0xbf, 0xd0, 0x0a, 0xa4, 0x5f, 0x77, 0x29, 0xed, 0x34, 0xa5, 0xfd, 0xc0, 0xc1, 0xb4, 0xaf, 0x35, + 0x28, 0xf1, 0xec, 0xb5, 0x86, 0xb6, 0xbe, 0xa1, 0xae, 0x55, 0x56, 0x55, 0x8e, 0x8e, 0x4e, 0x40, + 0xaa, 0xad, 0xbf, 0xb1, 0x1f, 0x35, 0xaf, 0xb4, 0x08, 0x2d, 0x42, 0xa9, 0x67, 0xb1, 0xa8, 0x9b, + 0x4c, 0x15, 0x81, 0x2a, 0x85, 0xa1, 0x8a, 0x41, 0xed, 0x2a, 0x81, 0x1f, 0x53, 0x3c, 0x4e, 0x40, + 0xea, 0x16, 0xd6, 0x6f, 0x44, 0x8d, 0x20, 0x2d, 0x42, 0xe7, 0x20, 0xdf, 0xc2, 0xdb, 0xbd, 0x5d, + 0xcd, 0xc1, 0x2d, 0xdd, 0xf0, 0xa2, 0xaa, 0x3f, 0x47, 0xab, 0x54, 0x5a, 0x83, 0x5e, 0x86, 0x2c, + 0x99, 0x23, 0x8b, 0xce, 0xf1, 0x14, 0x65, 0xc1, 0x63, 0x07, 0xb3, 0x80, 0x4f, 0xb1, 0x40, 0x52, + 0x03, 0x7c, 0x74, 0x0d, 0xd2, 0x9e, 0xee, 0xec, 0x62, 0x8f, 0x6a, 0xfe, 0x62, 0x4c, 0xba, 0x2a, + 0x86, 0x52, 0x93, 0x62, 0x10, 0xb6, 0x52, 0x19, 0xe5, 0x14, 0xd0, 0x55, 0x98, 0x64, 0x7f, 0xb9, + 0xb3, 0xd3, 0x0b, 0xc9, 0xc3, 0x13, 0x53, 0x05, 0xfa, 0xbb, 0xa8, 0xb3, 0x2e, 0xc0, 0x04, 0x15, + 0x36, 0x04, 0xc0, 0xc5, 0x4d, 0x3e, 0x82, 0x32, 0x90, 0x5a, 0xda, 0x50, 0x89, 0xde, 0x92, 0x21, + 0xcf, 0x4a, 0xb5, 0xcd, 0x7a, 0x6d, 0xa9, 0x26, 0x27, 0x94, 0xa7, 0x20, 0xcd, 0x24, 0x88, 0xe8, + 0x34, 0x5f, 0x86, 0xe4, 0x23, 0xfc, 0x93, 0xd3, 0x90, 0x44, 0xed, 0xd6, 0x5a, 0xb5, 0xa6, 0xca, + 0x09, 0x65, 0x0b, 0x4a, 0x7d, 0x5c, 0x47, 0x47, 0x61, 0x4a, 0xad, 0x35, 0x6b, 0xeb, 0x24, 0x6a, + 0xd3, 0xb6, 0xd6, 0x5f, 0x5e, 0xdf, 0x78, 0xef, 0xba, 0x7c, 0x24, 0x5a, 0x2c, 0x14, 0xa4, 0x84, + 0x66, 0x40, 0x0e, 0x8a, 0x1b, 0x1b, 0x5b, 0x2a, 0xed, 0xcd, 0x77, 0x24, 0x40, 0xee, 0x67, 0x1b, + 0x3a, 0x0e, 0xd3, 0xcd, 0x8a, 0xba, 0x52, 0x6b, 0x6a, 0x2c, 0x12, 0xf5, 0x49, 0xcf, 0x80, 0x1c, + 0xae, 0xb8, 0x52, 0xa7, 0x81, 0xf6, 0x3c, 0x9c, 0x0c, 0x97, 0xd6, 0x5e, 0x69, 0xd6, 0xd6, 0x1b, + 0xb4, 0xf1, 0xca, 0xfa, 0x0a, 0xd1, 0xd6, 0x7d, 0xf4, 0x44, 0xec, 0x9b, 0x24, 0x5d, 0x8d, 0xd2, + 0xab, 0xad, 0x2e, 0xcb, 0xa9, 0xfe, 0xe2, 0x8d, 0xf5, 0xda, 0xc6, 0x15, 0x79, 0xa2, 0xbf, 0x75, + 0x1a, 0x0f, 0xa7, 0xd1, 0x1c, 0x1c, 0xeb, 0x2f, 0xd5, 0x6a, 0xeb, 0x4d, 0xf5, 0x55, 0x79, 0xb2, + 0xbf, 0xe1, 0x46, 0x4d, 0xbd, 0x5e, 0x5f, 0xaa, 0xc9, 0x19, 0x74, 0x0c, 0x50, 0xb4, 0x47, 0xcd, + 0xab, 0x1b, 0xcb, 0x72, 0x76, 0x40, 0x3f, 0x29, 0x2e, 0xe4, 0xc3, 0x41, 0xe9, 0x5f, 0x8a, 0x6a, + 0x54, 0x3e, 0x9c, 0x80, 0x5c, 0x28, 0xc8, 0x24, 0xd1, 0x81, 0xde, 0x6e, 0xdb, 0xb7, 0x34, 0xbd, + 0x6d, 0xea, 0x2e, 0xd7, 0x5e, 0x40, 0x8b, 0x2a, 0xa4, 0x64, 0x5c, 0x6d, 0x31, 0xbe, 0xbd, 0x48, + 0xff, 0x75, 0xb4, 0x17, 0x13, 0x72, 0x5a, 0xf9, 0xb8, 0x04, 0x72, 0x7f, 0xf4, 0xd8, 0x37, 0x7c, + 0x69, 0xd8, 0xf0, 0xff, 0x52, 0xe6, 0xee, 0x63, 0x12, 0x14, 0xa3, 0x21, 0x63, 0x5f, 0xf7, 0x4e, + 0xff, 0x95, 0x76, 0xef, 0x77, 0x12, 0x50, 0x88, 0x04, 0x8a, 0xe3, 0xf6, 0xee, 0x7d, 0x30, 0x65, + 0xb6, 0x70, 0xa7, 0x6b, 0x7b, 0xd8, 0x32, 0xf6, 0xb5, 0x36, 0xbe, 0x89, 0xdb, 0xb3, 0x0a, 0x55, + 0xf1, 0x17, 0x0e, 0x0e, 0x45, 0x17, 0xeb, 0x01, 0xde, 0x2a, 0x41, 0x2b, 0x4f, 0xd7, 0x97, 0x6b, + 0x6b, 0x9b, 0x1b, 0xcd, 0xda, 0xfa, 0xd2, 0xab, 0x42, 0xbb, 0xa8, 0xb2, 0xd9, 0x07, 0xf6, 0x2e, + 0x2a, 0xed, 0x4d, 0x90, 0xfb, 0x3b, 0x45, 0x74, 0x45, 0x4c, 0xb7, 0xe4, 0x23, 0x68, 0x1a, 0x4a, + 0xeb, 0x1b, 0x5a, 0xa3, 0xbe, 0x5c, 0xd3, 0x6a, 0x57, 0xae, 0xd4, 0x96, 0x9a, 0x0d, 0x96, 0x5c, + 0xf4, 0xa1, 0x9b, 0x72, 0x22, 0xcc, 0xe2, 0x8f, 0x24, 0x61, 0x3a, 0xa6, 0x27, 0xa8, 0xc2, 0xd3, + 0x02, 0x2c, 0x53, 0xf1, 0xd8, 0x38, 0xbd, 0x5f, 0x24, 0x8e, 0xf9, 0xa6, 0xee, 0x78, 0x3c, 0x8b, + 0xf0, 0x30, 0x10, 0x2e, 0x59, 0x1e, 0xf1, 0x13, 0x1c, 0x9e, 0xb4, 0x65, 0xb9, 0x82, 0x52, 0x50, + 0xce, 0xf2, 0xb6, 0x8f, 0x02, 0xea, 0xda, 0xae, 0xe9, 0x99, 0x37, 0xb1, 0x66, 0x5a, 0x22, 0xc3, + 0x9b, 0x5a, 0x90, 0xce, 0xa5, 0x54, 0x59, 0xd4, 0xd4, 0x2d, 0xcf, 0x87, 0xb6, 0xf0, 0xae, 0xde, + 0x07, 0x4d, 0xfc, 0x98, 0xa4, 0x2a, 0x8b, 0x1a, 0x1f, 0xfa, 0x34, 0xe4, 0x5b, 0x76, 0x8f, 0x04, + 0x54, 0x0c, 0x8e, 0x68, 0x0b, 0x49, 0xcd, 0xb1, 0x32, 0x1f, 0x84, 0x87, 0xca, 0x41, 0x6a, 0x39, + 0xaf, 0xe6, 0x58, 0x19, 0x03, 0x39, 0x0b, 0x25, 0x7d, 0x77, 0xd7, 0x21, 0xc4, 0x05, 0x21, 0x16, + 0xfc, 0x17, 0xfd, 0x62, 0x0a, 0x38, 0x77, 0x0d, 0x32, 0x82, 0x0f, 0xc4, 0x1f, 0x26, 0x9c, 0xd0, + 0xba, 0x2c, 0xa3, 0x95, 0x38, 0x97, 0x55, 0x33, 0x96, 0xa8, 0x3c, 0x0d, 0x79, 0xd3, 0xd5, 0x82, + 0xbd, 0xcd, 0xc4, 0x42, 0xe2, 0x5c, 0x46, 0xcd, 0x99, 0xae, 0xbf, 0x47, 0xa2, 0x7c, 0x22, 0x01, + 0xc5, 0xe8, 0xae, 0x2d, 0x5a, 0x86, 0x4c, 0xdb, 0xe6, 0x9b, 0x2c, 0xec, 0xc8, 0xc0, 0xb9, 0x11, + 0x1b, 0xbd, 0x8b, 0xab, 0x1c, 0x5e, 0xf5, 0x31, 0xe7, 0x7e, 0x4d, 0x82, 0x8c, 0x28, 0x46, 0xc7, + 0x20, 0xd5, 0xd5, 0xbd, 0x3d, 0x4a, 0x6e, 0xa2, 0x9a, 0x90, 0x25, 0x95, 0x7e, 0x93, 0x72, 0xb7, + 0xab, 0xb3, 0x7d, 0x22, 0x5e, 0x4e, 0xbe, 0xc9, 0xbc, 0xb6, 0xb1, 0xde, 0xa2, 0x99, 0x05, 0xbb, + 0xd3, 0xc1, 0x96, 0xe7, 0x8a, 0x79, 0xe5, 0xe5, 0x4b, 0xbc, 0x18, 0x3d, 0x02, 0x53, 0x9e, 0xa3, + 0x9b, 0xed, 0x08, 0x6c, 0x8a, 0xc2, 0xca, 0xa2, 0xc2, 0x07, 0x2e, 0xc3, 0x09, 0x41, 0xb7, 0x85, + 0x3d, 0xdd, 0xd8, 0xc3, 0xad, 0x00, 0x29, 0x4d, 0x33, 0x88, 0xc7, 0x39, 0xc0, 0x32, 0xaf, 0x17, + 0xb8, 0xca, 0xe7, 0x12, 0x30, 0x25, 0x72, 0x21, 0x2d, 0x9f, 0x59, 0x6b, 0x00, 0xba, 0x65, 0xd9, + 0x5e, 0x98, 0x5d, 0x83, 0xa2, 0x3c, 0x80, 0xb7, 0x58, 0xf1, 0x91, 0xd4, 0x10, 0x81, 0xb9, 0x2f, + 0x49, 0x00, 0x41, 0xd5, 0x50, 0xbe, 0xcd, 0x43, 0x8e, 0xef, 0xc9, 0xd3, 0x83, 0x1d, 0x2c, 0x7d, + 0x06, 0xac, 0xe8, 0x8a, 0xd9, 0xa6, 0x49, 0xce, 0x6d, 0xbc, 0x6b, 0x5a, 0x7c, 0x77, 0x86, 0x7d, + 0x88, 0x24, 0x67, 0x2a, 0xd8, 0x9e, 0x54, 0x21, 0xe3, 0xe2, 0x8e, 0x6e, 0x79, 0xa6, 0xc1, 0xf7, + 0x5b, 0x2e, 0x1f, 0xaa, 0xf3, 0x8b, 0x0d, 0x8e, 0xad, 0xfa, 0x74, 0x94, 0x73, 0x90, 0x11, 0xa5, + 0xc4, 0xf1, 0x5b, 0xdf, 0x58, 0xaf, 0xc9, 0x47, 0xd0, 0x24, 0x24, 0x1b, 0xb5, 0xa6, 0x2c, 0x91, + 0x20, 0xb6, 0xb2, 0x5a, 0xaf, 0x34, 0xe4, 0x44, 0xf5, 0xef, 0xc2, 0xb4, 0x61, 0x77, 0xfa, 0x1b, + 0xac, 0xca, 0x7d, 0x09, 0x44, 0xf7, 0xaa, 0xf4, 0xda, 0x63, 0x1c, 0x68, 0xd7, 0x6e, 0xeb, 0xd6, + 0xee, 0xa2, 0xed, 0xec, 0x06, 0xc7, 0x62, 0x48, 0xac, 0xe1, 0x86, 0x0e, 0xc7, 0x74, 0xb7, 0xff, + 0x42, 0x92, 0x7e, 0x38, 0x91, 0x5c, 0xd9, 0xac, 0xfe, 0x78, 0x62, 0x6e, 0x85, 0x21, 0x6e, 0x8a, + 0xe1, 0xa8, 0x78, 0xa7, 0x8d, 0x0d, 0xd2, 0x79, 0xf8, 0x68, 0x0a, 0xa6, 0xf4, 0x8e, 0x69, 0xd9, + 0x17, 0xe8, 0xbf, 0xfc, 0x50, 0xcd, 0x04, 0xfd, 0x98, 0x1b, 0x79, 0xfa, 0xa6, 0x7c, 0x99, 0x29, + 0x30, 0x34, 0x6a, 0x0f, 0x7b, 0xf6, 0x4f, 0xbe, 0xe3, 0xc7, 0x26, 0x82, 0xdc, 0x67, 0x79, 0x0d, + 0x64, 0x11, 0x76, 0x63, 0xcb, 0xb0, 0x89, 0xb4, 0x8d, 0xa6, 0xf1, 0xa7, 0x82, 0x46, 0x89, 0xe3, + 0xd6, 0x38, 0x6a, 0xf9, 0x79, 0xc8, 0xf8, 0x64, 0x0e, 0xde, 0x4e, 0x9a, 0xfd, 0x9f, 0x82, 0x88, + 0x8f, 0x51, 0x7e, 0x09, 0x80, 0x39, 0x3b, 0x2c, 0x2d, 0x7b, 0x30, 0xfe, 0x57, 0x04, 0x7e, 0x96, + 0xe2, 0x10, 0x2d, 0x54, 0x5e, 0x81, 0x62, 0xcb, 0xb6, 0x3c, 0xcd, 0xee, 0x98, 0x1e, 0xee, 0x74, + 0xbd, 0xfd, 0x51, 0x44, 0xfe, 0x8c, 0x11, 0xc9, 0xa8, 0x05, 0x82, 0xb7, 0x21, 0xd0, 0x48, 0x4f, + 0xd8, 0xce, 0xda, 0x38, 0x3d, 0xf9, 0x73, 0xbf, 0x27, 0x14, 0x87, 0xf4, 0xa4, 0x5a, 0xfb, 0xe5, + 0xcf, 0x9f, 0x92, 0x3e, 0xf7, 0xf9, 0x53, 0xd2, 0xef, 0x7c, 0xfe, 0x94, 0xf4, 0xa1, 0x2f, 0x9c, + 0x3a, 0xf2, 0xb9, 0x2f, 0x9c, 0x3a, 0xf2, 0x9b, 0x5f, 0x38, 0x75, 0xe4, 0xb5, 0x47, 0x76, 0x4d, + 0x6f, 0xaf, 0xb7, 0xbd, 0x68, 0xd8, 0x9d, 0x0b, 0x86, 0xed, 0x76, 0x6c, 0x97, 0xff, 0xf7, 0x98, + 0xdb, 0xba, 0xc1, 0xe5, 0xc7, 0xbb, 0xcd, 0xa4, 0x60, 0x3b, 0xcd, 0x76, 0xd4, 0xe0, 0x0f, 0x1f, + 0x81, 0x99, 0x5d, 0x7b, 0xd7, 0xa6, 0x9f, 0x17, 0xc8, 0x5f, 0x5c, 0x40, 0xb2, 0x7e, 0xe9, 0x18, + 0x42, 0xb2, 0x0e, 0xd3, 0x1c, 0x58, 0xa3, 0x87, 0x3b, 0x58, 0x22, 0x0b, 0x1d, 0xb8, 0x8b, 0x32, + 0xfb, 0x33, 0xbf, 0x47, 0x7d, 0x56, 0x75, 0x8a, 0xa3, 0x92, 0x3a, 0x96, 0xeb, 0x2a, 0xab, 0x70, + 0x34, 0x42, 0x8f, 0x59, 0x10, 0xec, 0x8c, 0xa0, 0xf8, 0xef, 0x39, 0xc5, 0xe9, 0x10, 0xc5, 0x06, + 0x47, 0x2d, 0x2f, 0x41, 0xe1, 0x30, 0xb4, 0x7e, 0x89, 0xd3, 0xca, 0xe3, 0x30, 0x91, 0x15, 0x28, + 0x51, 0x22, 0x46, 0xcf, 0xf5, 0xec, 0x0e, 0x9d, 0xc3, 0x83, 0xc9, 0xfc, 0x87, 0xdf, 0x63, 0x2a, + 0xbd, 0x48, 0xd0, 0x96, 0x7c, 0xac, 0x72, 0x19, 0xe8, 0x79, 0x96, 0x16, 0x36, 0xda, 0x23, 0x28, + 0xfc, 0x32, 0xef, 0x88, 0x0f, 0x5f, 0xbe, 0x0e, 0x33, 0xe4, 0x6f, 0x6a, 0x3d, 0xc3, 0x3d, 0x19, + 0xbd, 0xe5, 0x32, 0xfb, 0x5f, 0xbe, 0x99, 0x59, 0x8d, 0x69, 0x9f, 0x40, 0xa8, 0x4f, 0xa1, 0x59, + 0xdc, 0xc5, 0x9e, 0x87, 0x1d, 0x57, 0xd3, 0xdb, 0x71, 0xdd, 0x0b, 0xe5, 0xac, 0x67, 0x7f, 0xe0, + 0xcb, 0xd1, 0x59, 0x5c, 0x61, 0x98, 0x95, 0x76, 0xbb, 0xbc, 0x05, 0xc7, 0x63, 0xa4, 0x62, 0x0c, + 0x9a, 0x1f, 0xe1, 0x34, 0x67, 0x06, 0x24, 0x83, 0x90, 0xdd, 0x04, 0x51, 0xee, 0xcf, 0xe5, 0x18, + 0x34, 0x3f, 0xca, 0x69, 0x22, 0x8e, 0x2b, 0xa6, 0x94, 0x50, 0xbc, 0x06, 0x53, 0x37, 0xb1, 0xb3, + 0x6d, 0xbb, 0x7c, 0x9f, 0x60, 0x0c, 0x72, 0x1f, 0xe3, 0xe4, 0x4a, 0x1c, 0x91, 0x6e, 0x1c, 0x10, + 0x5a, 0xcf, 0x42, 0x66, 0x47, 0x37, 0xf0, 0x18, 0x24, 0xee, 0x72, 0x12, 0x93, 0x04, 0x9e, 0xa0, + 0x56, 0x20, 0xbf, 0x6b, 0x73, 0x07, 0x6a, 0x34, 0xfa, 0xc7, 0x39, 0x7a, 0x4e, 0xe0, 0x70, 0x12, + 0x5d, 0xbb, 0xdb, 0x6b, 0x13, 0xef, 0x6a, 0x34, 0x89, 0x1f, 0x14, 0x24, 0x04, 0x0e, 0x27, 0x71, + 0x08, 0xb6, 0xbe, 0x29, 0x48, 0xb8, 0x21, 0x7e, 0xbe, 0x04, 0x39, 0xdb, 0x6a, 0xef, 0xdb, 0xd6, + 0x38, 0x9d, 0xf8, 0x21, 0x4e, 0x01, 0x38, 0x0a, 0x21, 0xf0, 0x1c, 0x64, 0xc7, 0x9d, 0x88, 0x1f, + 0xfd, 0xb2, 0x58, 0x1e, 0x62, 0x06, 0x56, 0xa0, 0x24, 0x14, 0x94, 0x69, 0x5b, 0x63, 0x90, 0xf8, + 0x31, 0x4e, 0xa2, 0x18, 0x42, 0xe3, 0xc3, 0xf0, 0xb0, 0xeb, 0xed, 0xe2, 0x71, 0x88, 0x7c, 0x42, + 0x0c, 0x83, 0xa3, 0x70, 0x56, 0x6e, 0x63, 0xcb, 0xd8, 0x1b, 0x8f, 0xc2, 0x27, 0x05, 0x2b, 0x05, + 0x0e, 0x21, 0xb1, 0x04, 0x85, 0x8e, 0xee, 0xb8, 0x7b, 0x7a, 0x7b, 0xac, 0xe9, 0xf8, 0x14, 0xa7, + 0x91, 0xf7, 0x91, 0x38, 0x47, 0x7a, 0xd6, 0x61, 0xc8, 0xfc, 0xb8, 0xe0, 0x48, 0x08, 0x8d, 0x2f, + 0x3d, 0xd7, 0xa3, 0x9b, 0x2a, 0x87, 0xa1, 0xf6, 0x13, 0x62, 0xe9, 0x31, 0xdc, 0xb5, 0x30, 0xc5, + 0xe7, 0x20, 0xeb, 0x9a, 0x6f, 0x8c, 0x45, 0xe6, 0x9f, 0x88, 0x99, 0xa6, 0x08, 0x04, 0xf9, 0x55, + 0x38, 0x11, 0x6b, 0x26, 0xc6, 0x20, 0xf6, 0x93, 0x9c, 0xd8, 0xb1, 0x18, 0x53, 0xc1, 0x55, 0xc2, + 0x61, 0x49, 0xfe, 0x94, 0x50, 0x09, 0xb8, 0x8f, 0xd6, 0x26, 0x09, 0x69, 0x5d, 0x7d, 0xe7, 0x70, + 0x5c, 0xfb, 0xa7, 0x82, 0x6b, 0x0c, 0x37, 0xc2, 0xb5, 0x26, 0x1c, 0xe3, 0x14, 0x0f, 0x37, 0xaf, + 0x3f, 0x2d, 0x14, 0x2b, 0xc3, 0xde, 0x8a, 0xce, 0xee, 0xd7, 0xc2, 0x9c, 0xcf, 0x4e, 0x11, 0x3b, + 0xb9, 0x5a, 0x47, 0xef, 0x8e, 0x41, 0xf9, 0x67, 0x38, 0x65, 0xa1, 0xf1, 0xfd, 0xe0, 0xcb, 0x5d, + 0xd3, 0xbb, 0x84, 0xf8, 0x2b, 0x30, 0x2b, 0x88, 0xf7, 0x2c, 0x07, 0x1b, 0xf6, 0xae, 0x65, 0xbe, + 0x81, 0x5b, 0x63, 0x90, 0xfe, 0x67, 0x7d, 0x53, 0xb5, 0x15, 0x42, 0x27, 0x94, 0xeb, 0x20, 0xfb, + 0xbe, 0x8a, 0x66, 0x76, 0xba, 0xb6, 0xe3, 0x8d, 0xa0, 0xf8, 0x69, 0x31, 0x53, 0x3e, 0x5e, 0x9d, + 0xa2, 0x95, 0x6b, 0xc0, 0x4e, 0x1a, 0x8d, 0x2b, 0x92, 0x9f, 0xe1, 0x84, 0x0a, 0x01, 0x16, 0x57, + 0x1c, 0x86, 0xdd, 0xe9, 0xea, 0xce, 0x38, 0xfa, 0xef, 0x67, 0x85, 0xe2, 0xe0, 0x28, 0x5c, 0x71, + 0x10, 0x7f, 0x8d, 0x58, 0xfb, 0x31, 0x28, 0xfc, 0x9c, 0x50, 0x1c, 0x02, 0x87, 0x93, 0x10, 0x0e, + 0xc3, 0x18, 0x24, 0xfe, 0xb9, 0x20, 0x21, 0x70, 0x08, 0x89, 0xf7, 0x04, 0x86, 0xd6, 0xc1, 0xbb, + 0xa6, 0xeb, 0xf1, 0xa3, 0x82, 0x07, 0x93, 0xfa, 0xf9, 0x2f, 0x47, 0x9d, 0x30, 0x35, 0x84, 0x4a, + 0x34, 0x11, 0xf7, 0xec, 0x69, 0x40, 0x3f, 0xba, 0x63, 0x9f, 0x15, 0x9a, 0x28, 0x84, 0x46, 0xfa, + 0x16, 0xf2, 0x10, 0x09, 0xdb, 0x0d, 0x12, 0xc6, 0x8e, 0x41, 0xee, 0x5f, 0xf4, 0x75, 0xae, 0x21, + 0x70, 0x09, 0xcd, 0x90, 0xff, 0xd3, 0xb3, 0x6e, 0xe0, 0xfd, 0xb1, 0xa4, 0xf3, 0x17, 0xfa, 0xfc, + 0x9f, 0x2d, 0x86, 0xc9, 0x74, 0x48, 0xa9, 0xcf, 0x9f, 0x1a, 0x1d, 0x01, 0x7d, 0xd3, 0x57, 0xf8, + 0x78, 0xa3, 0xee, 0x54, 0x79, 0x95, 0x08, 0x79, 0xd4, 0xe9, 0x19, 0x4d, 0xec, 0x9b, 0xbf, 0xe2, + 0xcb, 0x79, 0xc4, 0xe7, 0x29, 0x5f, 0x81, 0x42, 0xc4, 0xe1, 0x19, 0x4d, 0xea, 0x5b, 0x38, 0xa9, + 0x7c, 0xd8, 0xdf, 0x29, 0x3f, 0x05, 0x29, 0xe2, 0xbc, 0x8c, 0x46, 0xff, 0x00, 0x47, 0xa7, 0xe0, + 0xe5, 0x17, 0x20, 0x23, 0x9c, 0x96, 0xd1, 0xa8, 0xdf, 0xca, 0x51, 0x7d, 0x14, 0x82, 0x2e, 0x1c, + 0x96, 0xd1, 0xe8, 0x7f, 0x5f, 0xa0, 0x0b, 0x14, 0x82, 0x3e, 0x3e, 0x0b, 0xff, 0xcd, 0xb7, 0xa7, + 0xb8, 0xd1, 0x11, 0xbc, 0x7b, 0x0e, 0x26, 0xb9, 0xa7, 0x32, 0x1a, 0xfb, 0xdb, 0x78, 0xe3, 0x02, + 0xa3, 0xfc, 0x34, 0x4c, 0x8c, 0xc9, 0xf0, 0xef, 0xe4, 0xa8, 0x0c, 0xbe, 0xbc, 0x04, 0xb9, 0x90, + 0x77, 0x32, 0x1a, 0xfd, 0xbb, 0x38, 0x7a, 0x18, 0x8b, 0x74, 0x9d, 0x7b, 0x27, 0xa3, 0x09, 0xfc, + 0x03, 0xd1, 0x75, 0x8e, 0x41, 0xd8, 0x26, 0x1c, 0x93, 0xd1, 0xd8, 0x1f, 0x12, 0x5c, 0x17, 0x28, + 0xe5, 0x97, 0x20, 0xeb, 0x1b, 0x9b, 0xd1, 0xf8, 0xdf, 0xcd, 0xf1, 0x03, 0x1c, 0xc2, 0x81, 0x90, + 0xb1, 0x1b, 0x4d, 0xe2, 0x1f, 0x0a, 0x0e, 0x84, 0xb0, 0xc8, 0x32, 0xea, 0x77, 0x60, 0x46, 0x53, + 0xfa, 0x1e, 0xb1, 0x8c, 0xfa, 0xfc, 0x17, 0x32, 0x9b, 0x54, 0xe7, 0x8f, 0x26, 0xf1, 0xbd, 0x62, + 0x36, 0x29, 0x3c, 0xe9, 0x46, 0xbf, 0x47, 0x30, 0x9a, 0xc6, 0xf7, 0x8b, 0x6e, 0xf4, 0x39, 0x04, + 0xe5, 0x4d, 0x40, 0x83, 0xde, 0xc0, 0x68, 0x7a, 0x1f, 0xe6, 0xf4, 0xa6, 0x06, 0x9c, 0x81, 0xf2, + 0x7b, 0xe1, 0x58, 0xbc, 0x27, 0x30, 0x9a, 0xea, 0x0f, 0x7c, 0xa5, 0x2f, 0x76, 0x0b, 0x3b, 0x02, + 0xe5, 0x66, 0x60, 0x52, 0xc2, 0x5e, 0xc0, 0x68, 0xb2, 0x1f, 0xf9, 0x4a, 0x54, 0x71, 0x87, 0x9d, + 0x80, 0x72, 0x05, 0x20, 0x30, 0xc0, 0xa3, 0x69, 0x7d, 0x8c, 0xd3, 0x0a, 0x21, 0x91, 0xa5, 0xc1, + 0xed, 0xef, 0x68, 0xfc, 0xbb, 0x62, 0x69, 0x70, 0x0c, 0xb2, 0x34, 0x84, 0xe9, 0x1d, 0x8d, 0xfd, + 0x71, 0xb1, 0x34, 0x04, 0x0a, 0x91, 0xec, 0x90, 0x75, 0x1b, 0x4d, 0xe1, 0x87, 0x84, 0x64, 0x87, + 0xb0, 0xca, 0xeb, 0x30, 0x35, 0x60, 0x10, 0x47, 0x93, 0xfa, 0x61, 0x4e, 0x4a, 0xee, 0xb7, 0x87, + 0x61, 0xe3, 0xc5, 0x8d, 0xe1, 0x68, 0x6a, 0x3f, 0xd2, 0x67, 0xbc, 0xb8, 0x2d, 0x2c, 0x3f, 0x07, + 0x19, 0xab, 0xd7, 0x6e, 0x93, 0xc5, 0x33, 0x2a, 0xe5, 0xf5, 0xdf, 0xbf, 0xca, 0xb9, 0x23, 0x10, + 0xca, 0x4f, 0xc1, 0x04, 0xee, 0x6c, 0xe3, 0xd6, 0x28, 0xcc, 0x3f, 0xf8, 0xaa, 0x50, 0x98, 0x04, + 0xba, 0xfc, 0x12, 0x00, 0x4b, 0x8d, 0xd0, 0x43, 0x1a, 0x23, 0x70, 0xbf, 0xf4, 0x55, 0x7e, 0xf8, + 0x32, 0x40, 0x09, 0x08, 0x8c, 0x93, 0xa9, 0xfb, 0x72, 0x94, 0x00, 0x9d, 0x91, 0x67, 0x61, 0xf2, + 0x75, 0xd7, 0xb6, 0x3c, 0x7d, 0x64, 0xc6, 0xf2, 0x0f, 0x39, 0xb6, 0x80, 0x27, 0x0c, 0xeb, 0xd8, + 0x0e, 0xf6, 0xf4, 0x5d, 0x77, 0x14, 0xee, 0x1f, 0x71, 0x5c, 0x1f, 0x81, 0x20, 0x1b, 0xba, 0xeb, + 0x8d, 0x33, 0xee, 0xff, 0x21, 0x90, 0x05, 0x02, 0xe9, 0x34, 0xf9, 0xfb, 0x06, 0x1e, 0x99, 0xe1, + 0xfc, 0x63, 0xd1, 0x69, 0x0e, 0x5f, 0x7e, 0x01, 0xb2, 0xe4, 0x4f, 0x76, 0xa2, 0x7a, 0x04, 0xf2, + 0x9f, 0x70, 0xe4, 0x00, 0x83, 0xb4, 0xec, 0x7a, 0x2d, 0xcf, 0x1c, 0xcd, 0xec, 0x3f, 0xe5, 0x33, + 0x2d, 0xe0, 0xcb, 0x15, 0xc8, 0xb9, 0x5e, 0xab, 0xd5, 0xe3, 0xfe, 0xe9, 0xa8, 0xfc, 0xf0, 0x57, + 0xfd, 0x94, 0x85, 0x8f, 0x43, 0x66, 0xfb, 0xd6, 0x0d, 0xaf, 0x6b, 0xd3, 0xdd, 0xb8, 0x91, 0x19, + 0x62, 0x4e, 0x21, 0x84, 0x52, 0x5e, 0x82, 0x3c, 0x19, 0x8b, 0xb8, 0xa9, 0x32, 0x32, 0x3f, 0xcc, + 0x19, 0x10, 0x41, 0xaa, 0x7e, 0xe3, 0xb0, 0xe4, 0x6e, 0xfc, 0x1e, 0x02, 0xac, 0xd8, 0x2b, 0x36, + 0xdb, 0x3d, 0x78, 0xed, 0xc1, 0xc1, 0xec, 0x6f, 0x34, 0xaf, 0x4b, 0xff, 0x82, 0xff, 0x25, 0xc1, + 0xfd, 0x86, 0xdd, 0xc1, 0xde, 0xf6, 0x8e, 0x77, 0xc1, 0x70, 0xf6, 0xbb, 0x9e, 0x7d, 0xe1, 0xe6, + 0xc5, 0x0b, 0x37, 0xf0, 0xbe, 0xcb, 0x13, 0xbf, 0x48, 0x54, 0x2f, 0xb2, 0xea, 0xc5, 0x9b, 0x17, + 0xe7, 0x62, 0x53, 0xc4, 0xca, 0x2b, 0x90, 0xdd, 0xa4, 0x37, 0x57, 0x5f, 0xc6, 0xfb, 0x68, 0x0e, + 0x26, 0x71, 0xeb, 0xd2, 0x53, 0x4f, 0x5d, 0x7c, 0x96, 0xee, 0xc5, 0xe7, 0xaf, 0x1e, 0x51, 0x45, + 0x01, 0x3a, 0x05, 0x59, 0x17, 0x1b, 0xdd, 0x4b, 0x4f, 0x5d, 0xbe, 0x71, 0x91, 0xee, 0xe3, 0x90, + 0xda, 0xa0, 0xa8, 0x9c, 0xf9, 0xe2, 0x9b, 0xf3, 0xd2, 0x17, 0x7f, 0x68, 0x5e, 0xaa, 0x4e, 0x40, 0xd2, 0xed, 0x75, 0xaa, 0x6b, 0x43, 0x93, 0xdc, 0x4f, 0x44, 0x86, 0x29, 0xc6, 0x21, 0xfe, 0xd0, 0xbb, 0xe6, 0x85, 0xc1, 0xd1, 0xf9, 0xc9, 0xee, 0x4f, 0xa5, 0xe0, 0x54, 0xcc, 0xe0, 0xbb, 0x8e, 0x6d, 0xef, 0x1c, 0x7a, 0xf4, 0x3b, 0x30, 0xb1, 0x49, 0x10, 0xd1, 0x0c, 0x4c, 0x78, 0xb6, 0xa7, 0xb7, 0xe9, 0xb8, 0x93, 0x2a, 0xfb, 0x20, 0xa5, 0xec, 0xf2, 0x4c, 0x82, 0x95, 0x9a, 0xe2, 0xde, 0x4c, 0x1b, 0xeb, 0x3b, 0xec, 0x0c, 0x72, 0x92, 0x6e, 0x8f, 0x66, 0x48, 0x01, 0x3d, 0x6e, 0x3c, 0x03, 0x13, 0x7a, 0x8f, 0xed, 0xec, 0x25, 0xcf, 0xe5, 0x55, 0xf6, 0xa1, 0xac, 0xc2, 0x24, 0x4f, - 0xe1, 0x22, 0x19, 0x92, 0x37, 0xf1, 0x3e, 0xe3, 0xaf, 0x4a, 0xfe, 0x44, 0x17, 0x60, 0x82, 0xf6, - 0x9e, 0x5f, 0xae, 0x38, 0xb1, 0x38, 0xd8, 0xfd, 0x45, 0xda, 0x4b, 0x95, 0xc1, 0x29, 0xd7, 0x21, + 0xe1, 0x22, 0x19, 0x92, 0x37, 0xf0, 0x3e, 0xe3, 0xaf, 0x4a, 0xfe, 0x44, 0x17, 0x60, 0x82, 0xf6, + 0x9e, 0x5f, 0xae, 0x38, 0xb1, 0x38, 0xd8, 0xfd, 0x45, 0xda, 0x4b, 0x95, 0xc1, 0x29, 0xd7, 0x20, 0xb3, 0x6c, 0x77, 0x4c, 0xcb, 0x8e, 0x92, 0xcb, 0x32, 0x72, 0xb4, 0xd3, 0xdd, 0x9e, 0xc7, 0x37, 0xdb, 0xd8, 0x07, 0x3a, 0x06, 0x69, 0x76, 0x28, 0x9d, 0x6f, 0x4f, 0xf2, 0x2f, 0x65, 0x09, 0x26, 0x29, 0xed, 0x8d, 0xae, 0x7f, 0x11, 0x4c, 0x0a, 0x5d, 0x04, 0xe3, 0xe4, 0x13, 0x41, 0x6f, 0x11, - 0xa4, 0x5a, 0xba, 0xa7, 0xf3, 0x81, 0xd3, 0xbf, 0x95, 0x17, 0x20, 0xc3, 0x89, 0xb8, 0xe8, 0x09, - 0x48, 0xda, 0x5d, 0x97, 0x6f, 0x30, 0x9e, 0x1c, 0x3a, 0x96, 0x8d, 0x6e, 0x35, 0xf5, 0x2b, 0x6f, - 0xce, 0x1f, 0x51, 0x09, 0xf4, 0x3b, 0x25, 0x2b, 0xdf, 0x9b, 0x80, 0x53, 0x03, 0xfb, 0x1e, 0x5c, + 0xa4, 0x5a, 0xba, 0xa7, 0xf3, 0x81, 0xd3, 0xbf, 0x95, 0x97, 0x20, 0xc3, 0x89, 0xb8, 0xe8, 0x09, + 0x48, 0xda, 0x5d, 0x97, 0x6f, 0x30, 0x9e, 0x1c, 0x3a, 0x96, 0x8d, 0x6e, 0x35, 0xf5, 0xcb, 0x6f, + 0xcd, 0x1f, 0x51, 0x09, 0xf4, 0xbb, 0x25, 0x2b, 0xdf, 0x93, 0x80, 0x53, 0x03, 0xfb, 0x1e, 0x5c, 0x5b, 0x0c, 0xbb, 0x98, 0x5e, 0x86, 0xcc, 0xb2, 0x50, 0x42, 0xb3, 0x30, 0xe9, 0x62, 0xc3, 0xb6, 0x5a, 0x2e, 0x97, 0x0b, 0xf1, 0x49, 0x98, 0x6c, 0xe9, 0x96, 0xed, 0xf2, 0x1b, 0x14, 0xec, 0xa3, - 0xfa, 0x51, 0xe9, 0x70, 0x6b, 0xbf, 0x20, 0x5a, 0xa2, 0xeb, 0x7f, 0x53, 0x7a, 0xe5, 0xe2, 0xc8, - 0xcd, 0xc3, 0x9b, 0x96, 0x7d, 0xdb, 0xf2, 0x07, 0x11, 0xd9, 0x40, 0x3c, 0xd5, 0xbf, 0x81, 0xf8, - 0x1e, 0xdc, 0x6e, 0xbf, 0x48, 0xe0, 0x9b, 0x04, 0xd5, 0xe7, 0xca, 0xc7, 0x53, 0x83, 0x5c, 0xb9, - 0xed, 0xe8, 0xdd, 0x2e, 0x76, 0xdc, 0x61, 0x5c, 0x39, 0x03, 0xb9, 0xe5, 0xd0, 0x21, 0x81, 0x19, - 0x71, 0x59, 0x47, 0xa2, 0x07, 0x08, 0xd8, 0x87, 0xa2, 0x00, 0x5c, 0x6d, 0xdb, 0xba, 0x17, 0x03, - 0x93, 0x08, 0xc1, 0xd4, 0x2d, 0xef, 0xca, 0x93, 0x31, 0x30, 0x49, 0x01, 0x73, 0x06, 0x72, 0x5b, + 0xfa, 0x51, 0xe9, 0x70, 0x6b, 0xbf, 0x20, 0x5a, 0xa2, 0xeb, 0x7f, 0x53, 0x7a, 0xed, 0xe2, 0xc8, + 0xcd, 0xc3, 0x1b, 0x96, 0x7d, 0xcb, 0xf2, 0x07, 0x11, 0xd9, 0x40, 0x3c, 0xd5, 0xbf, 0x81, 0xf8, + 0x5e, 0xdc, 0x6e, 0xbf, 0x4c, 0xe0, 0x9b, 0x04, 0xd5, 0xe7, 0xca, 0xc7, 0x53, 0x83, 0x5c, 0xb9, + 0xe5, 0xe8, 0xdd, 0x2e, 0x76, 0xdc, 0x61, 0x5c, 0x39, 0x03, 0xb9, 0xe5, 0xd0, 0x21, 0x81, 0x19, + 0x71, 0x59, 0x47, 0xa2, 0x07, 0x08, 0xd8, 0x87, 0xa2, 0x00, 0x5c, 0x69, 0xdb, 0xba, 0x17, 0x03, + 0x93, 0x08, 0xc1, 0xd4, 0x2d, 0xef, 0xf2, 0x93, 0x31, 0x30, 0x49, 0x01, 0x73, 0x06, 0x72, 0x5b, 0xc3, 0x80, 0x52, 0x51, 0x42, 0x4f, 0x5c, 0x8a, 0x81, 0x99, 0xe8, 0x23, 0x14, 0x0b, 0x54, 0x10, 0x40, 0xa7, 0x21, 0x5b, 0xb5, 0xed, 0x76, 0x0c, 0x48, 0x26, 0x44, 0xa7, 0x11, 0x3a, 0xff, 0x10, 0x01, 0xca, 0x86, 0x3a, 0x54, 0xdd, 0xf7, 0xb0, 0x1b, 0x03, 0x93, 0xe7, 0x30, 0x87, 0x17, 0x90, - 0xf7, 0xf0, 0x79, 0x39, 0xac, 0x80, 0x88, 0xf9, 0xbc, 0x27, 0x01, 0xf9, 0x81, 0x7c, 0x48, 0xc5, + 0xf7, 0xf2, 0x79, 0x39, 0xac, 0x80, 0x88, 0xf9, 0xbc, 0x27, 0x01, 0xf9, 0xfe, 0x7c, 0x48, 0xc5, 0x32, 0xaa, 0x44, 0xc3, 0xea, 0x8e, 0xde, 0x11, 0x02, 0x32, 0xe5, 0xaf, 0x6b, 0x5a, 0x3f, 0x54, 0xc3, 0xce, 0x8d, 0x58, 0x7f, 0x73, 0x23, 0x24, 0x51, 0xf9, 0x6c, 0x12, 0x4a, 0x4b, 0xb6, 0xe5, - 0x62, 0xcb, 0xed, 0xb9, 0x9b, 0xb4, 0x0b, 0xe8, 0x49, 0x98, 0xd8, 0x6e, 0xdb, 0xc6, 0x4d, 0xca, + 0x62, 0xcb, 0xed, 0xb9, 0x9b, 0xb4, 0x0b, 0xe8, 0x49, 0x98, 0xd8, 0x6e, 0xdb, 0xc6, 0x0d, 0xca, 0xdb, 0xdc, 0xa5, 0x53, 0x8b, 0x03, 0x9d, 0x59, 0xac, 0x92, 0x7a, 0x06, 0xae, 0x32, 0x60, 0xf4, - 0x1c, 0x64, 0xf0, 0x2d, 0xb3, 0x85, 0x2d, 0x03, 0x73, 0x4d, 0x7b, 0x3a, 0x06, 0xb1, 0xc6, 0x41, - 0x38, 0xae, 0x8f, 0x82, 0xbe, 0x0e, 0xb2, 0xb7, 0xf4, 0xb6, 0xd9, 0xd2, 0x3d, 0xdb, 0xe1, 0x57, - 0x8e, 0x94, 0x18, 0xfc, 0x1b, 0x02, 0x86, 0x13, 0x08, 0x90, 0x50, 0x19, 0x26, 0x6f, 0x61, 0x87, - 0x9e, 0x6f, 0x61, 0x37, 0x81, 0x16, 0xe2, 0xf0, 0x19, 0x04, 0xc7, 0x16, 0x08, 0xe8, 0x32, 0xa4, - 0xf4, 0x6d, 0xc3, 0xa4, 0x47, 0x1f, 0x72, 0x97, 0xee, 0x8f, 0x41, 0xac, 0x54, 0x97, 0xea, 0x0c, - 0x8b, 0x9e, 0xfe, 0xa3, 0xe0, 0xa4, 0xd3, 0xee, 0xbe, 0x65, 0xec, 0x39, 0xb6, 0xb5, 0x4f, 0x0f, - 0xfb, 0xc4, 0x77, 0xba, 0x21, 0x60, 0x44, 0xa7, 0x7d, 0x24, 0xd2, 0xe9, 0x1d, 0xac, 0x7b, 0x3d, - 0x07, 0xf3, 0x7b, 0xf0, 0x71, 0x9d, 0xbe, 0xca, 0x20, 0x44, 0xa7, 0x39, 0x82, 0x52, 0x87, 0x5c, - 0x68, 0x1e, 0xd8, 0x89, 0xf8, 0x3b, 0xda, 0x36, 0x59, 0x24, 0x7c, 0xc1, 0x67, 0x3a, 0xfa, 0x1d, - 0xba, 0x68, 0xd0, 0x71, 0x98, 0x24, 0x95, 0xbb, 0xfc, 0x94, 0x64, 0x52, 0x4d, 0x77, 0xf4, 0x3b, - 0x2b, 0xba, 0x7b, 0x3d, 0x95, 0x49, 0xca, 0x29, 0xe5, 0x53, 0x12, 0x14, 0xa3, 0x53, 0x83, 0x1e, - 0x01, 0x44, 0x30, 0xf4, 0x5d, 0xac, 0x59, 0xbd, 0x8e, 0x46, 0x27, 0x59, 0xd0, 0x2d, 0x75, 0xf4, - 0x3b, 0x95, 0x5d, 0xbc, 0xde, 0xeb, 0xd0, 0x0e, 0xb8, 0x68, 0x0d, 0x64, 0x01, 0x2c, 0x04, 0xd0, - 0x37, 0xb7, 0x03, 0xb7, 0xf2, 0x39, 0x40, 0x35, 0x43, 0x0c, 0xd4, 0x87, 0xff, 0xdb, 0xbc, 0xa4, - 0x16, 0x19, 0x3d, 0xdf, 0x30, 0x44, 0x86, 0x92, 0x8c, 0x0e, 0x45, 0x79, 0x01, 0x4a, 0x7d, 0x52, - 0x80, 0x14, 0x28, 0x74, 0x7b, 0xdb, 0xda, 0x4d, 0xbc, 0x4f, 0xaf, 0x89, 0x31, 0xf3, 0x98, 0x55, - 0x73, 0xdd, 0xde, 0xf6, 0x8b, 0x78, 0x9f, 0xae, 0xbe, 0x72, 0xe6, 0x17, 0x88, 0x03, 0xf5, 0xc6, - 0xbc, 0xa4, 0x3c, 0x02, 0x85, 0x88, 0x18, 0x10, 0x2b, 0xac, 0x77, 0xbb, 0x5c, 0xff, 0x91, 0x3f, - 0x43, 0xc0, 0xaf, 0x40, 0x9e, 0x38, 0x1e, 0xb8, 0xc5, 0x61, 0x1f, 0x82, 0x12, 0x65, 0x85, 0xd6, - 0xcf, 0xeb, 0x02, 0x2d, 0x5e, 0x13, 0x0c, 0x57, 0xa0, 0x10, 0xc0, 0x05, 0x6c, 0xcf, 0x09, 0xa8, - 0x15, 0xdd, 0x55, 0xbe, 0x5f, 0x82, 0x52, 0x9f, 0x6c, 0xa0, 0xe7, 0x20, 0xdb, 0x75, 0xb0, 0x61, - 0xba, 0xec, 0x18, 0xd1, 0x08, 0x16, 0xa6, 0x28, 0xfb, 0x02, 0x0c, 0xb4, 0x0c, 0x05, 0x71, 0xa4, - 0xa4, 0x85, 0xdb, 0xfa, 0xfe, 0xe8, 0x59, 0x60, 0x24, 0xc4, 0x13, 0x29, 0xcb, 0x04, 0x49, 0xf9, - 0x65, 0x09, 0x0a, 0x11, 0xa1, 0x43, 0x2d, 0xb8, 0xff, 0x96, 0xed, 0xe1, 0x70, 0xaa, 0x83, 0x5f, - 0x1d, 0xda, 0xc3, 0xe6, 0xee, 0x9e, 0xc7, 0xbb, 0x7a, 0x72, 0xa0, 0x9d, 0xc0, 0xd0, 0x50, 0x87, - 0x44, 0x52, 0xe7, 0x08, 0x9d, 0x20, 0xe3, 0xc1, 0xee, 0x18, 0x5d, 0xa3, 0x44, 0xd0, 0x06, 0xa0, - 0xee, 0xb6, 0xd7, 0x4f, 0x3a, 0x31, 0x2e, 0x69, 0x99, 0x20, 0x87, 0x09, 0x2a, 0x0d, 0x80, 0x60, - 0xe1, 0xa2, 0xca, 0x38, 0x83, 0x48, 0x1e, 0xd4, 0xc3, 0x72, 0x62, 0x56, 0xaa, 0x6e, 0x7e, 0xf2, - 0xf3, 0xa7, 0x86, 0x1a, 0x9a, 0x57, 0x2e, 0x8d, 0xef, 0x51, 0x09, 0xdd, 0xef, 0x5b, 0x86, 0xbf, - 0x48, 0xc3, 0xe9, 0x41, 0xcb, 0xe0, 0xab, 0xb8, 0xc3, 0x1a, 0x87, 0x83, 0xa3, 0x18, 0xe5, 0x33, - 0x12, 0xe4, 0xfd, 0x95, 0xd4, 0xc0, 0x1e, 0x7a, 0x17, 0x80, 0xdf, 0x96, 0x70, 0x31, 0xef, 0x3b, - 0x48, 0x09, 0xab, 0x21, 0x78, 0xf4, 0x34, 0x64, 0xba, 0x8e, 0xdd, 0xb5, 0x5d, 0x7e, 0xf1, 0x75, - 0x14, 0xae, 0x0f, 0x8d, 0x1e, 0x05, 0x44, 0x03, 0x02, 0xed, 0x96, 0xed, 0x99, 0xd6, 0xae, 0xd6, - 0xb5, 0x6f, 0xf3, 0xf7, 0x04, 0x92, 0xaa, 0x4c, 0x6b, 0x6e, 0xd0, 0x8a, 0x4d, 0x52, 0xae, 0x7c, + 0x02, 0x64, 0xf0, 0x4d, 0xb3, 0x85, 0x2d, 0x03, 0x73, 0x4d, 0x7b, 0x3a, 0x06, 0xb1, 0xc6, 0x41, + 0x38, 0xae, 0x8f, 0x82, 0xbe, 0x06, 0xb2, 0x37, 0xf5, 0xb6, 0xd9, 0xd2, 0x3d, 0xdb, 0xe1, 0x57, + 0x8e, 0x94, 0x18, 0xfc, 0xeb, 0x02, 0x86, 0x13, 0x08, 0x90, 0x50, 0x19, 0x26, 0x6f, 0x62, 0x87, + 0x9e, 0x6f, 0x61, 0x37, 0x81, 0x16, 0xe2, 0xf0, 0x19, 0x04, 0xc7, 0x16, 0x08, 0xe8, 0x29, 0x48, + 0xe9, 0xdb, 0x86, 0x49, 0x8f, 0x3e, 0xe4, 0x2e, 0xdd, 0x1f, 0x83, 0x58, 0xa9, 0x2e, 0xd5, 0x19, + 0x16, 0x3d, 0xfd, 0x47, 0xc1, 0x49, 0xa7, 0xdd, 0x7d, 0xcb, 0xd8, 0x73, 0x6c, 0x6b, 0x9f, 0x1e, + 0xf6, 0x89, 0xef, 0x74, 0x43, 0xc0, 0x88, 0x4e, 0xfb, 0x48, 0xa4, 0xd3, 0x3b, 0x58, 0xf7, 0x7a, + 0x0e, 0xe6, 0xf7, 0xe0, 0xe3, 0x3a, 0x7d, 0x85, 0x41, 0x88, 0x4e, 0x73, 0x04, 0xa5, 0x0e, 0xb9, + 0xd0, 0x3c, 0xb0, 0x13, 0xf1, 0xb7, 0xb5, 0x6d, 0xb2, 0x48, 0xf8, 0x82, 0xcf, 0x74, 0xf4, 0xdb, + 0x74, 0xd1, 0xa0, 0xe3, 0x30, 0x49, 0x2a, 0x77, 0xf9, 0x29, 0xc9, 0xa4, 0x9a, 0xee, 0xe8, 0xb7, + 0x57, 0x74, 0xf7, 0x5a, 0x2a, 0x93, 0x94, 0x53, 0xca, 0xa7, 0x24, 0x28, 0x46, 0xa7, 0x06, 0x3d, + 0x02, 0x88, 0x60, 0xe8, 0xbb, 0x58, 0xb3, 0x7a, 0x1d, 0x8d, 0x4e, 0xb2, 0xa0, 0x5b, 0xea, 0xe8, + 0xb7, 0x2b, 0xbb, 0x78, 0xbd, 0xd7, 0xa1, 0x1d, 0x70, 0xd1, 0x1a, 0xc8, 0x02, 0x58, 0x08, 0xa0, + 0x6f, 0x6e, 0x07, 0x6e, 0xe5, 0x73, 0x80, 0x6a, 0x86, 0x18, 0xa8, 0x0f, 0xff, 0xb7, 0x79, 0x49, + 0x2d, 0x32, 0x7a, 0xbe, 0x61, 0x88, 0x0c, 0x25, 0x19, 0x1d, 0x8a, 0xf2, 0x12, 0x94, 0xfa, 0xa4, + 0x00, 0x29, 0x50, 0xe8, 0xf6, 0xb6, 0xb5, 0x1b, 0x78, 0x9f, 0x5e, 0x13, 0x63, 0xe6, 0x31, 0xab, + 0xe6, 0xba, 0xbd, 0xed, 0x97, 0xf1, 0x3e, 0x5d, 0x7d, 0xe5, 0xcc, 0xcf, 0x13, 0x07, 0xea, 0xcd, + 0x79, 0x49, 0x79, 0x04, 0x0a, 0x11, 0x31, 0x20, 0x56, 0x58, 0xef, 0x76, 0xb9, 0xfe, 0x23, 0x7f, + 0x86, 0x80, 0x5f, 0x83, 0x3c, 0x71, 0x3c, 0x70, 0x8b, 0xc3, 0x3e, 0x04, 0x25, 0xca, 0x0a, 0xad, + 0x9f, 0xd7, 0x05, 0x5a, 0xbc, 0x26, 0x18, 0xae, 0x40, 0x21, 0x80, 0x0b, 0xd8, 0x9e, 0x13, 0x50, + 0x2b, 0xba, 0xab, 0x7c, 0x9f, 0x04, 0xa5, 0x3e, 0xd9, 0x40, 0x2f, 0x40, 0xb6, 0xeb, 0x60, 0xc3, + 0x74, 0xd9, 0x31, 0xa2, 0x11, 0x2c, 0x4c, 0x51, 0xf6, 0x05, 0x18, 0x68, 0x19, 0x0a, 0xe2, 0x48, + 0x49, 0x0b, 0xb7, 0xf5, 0xfd, 0xd1, 0xb3, 0xc0, 0x48, 0x88, 0x27, 0x52, 0x96, 0x09, 0x92, 0xf2, + 0x4b, 0x12, 0x14, 0x22, 0x42, 0x87, 0x5a, 0x70, 0xff, 0x4d, 0xdb, 0xc3, 0xe1, 0x54, 0x07, 0xbf, + 0x3a, 0xb4, 0x87, 0xcd, 0xdd, 0x3d, 0x8f, 0x77, 0xf5, 0xe4, 0x40, 0x3b, 0x81, 0xa1, 0xa1, 0x0e, + 0x89, 0xa4, 0xce, 0x11, 0x3a, 0x41, 0xc6, 0x83, 0xdd, 0x31, 0xba, 0x4a, 0x89, 0xa0, 0x0d, 0x40, + 0xdd, 0x6d, 0xaf, 0x9f, 0x74, 0x62, 0x5c, 0xd2, 0x32, 0x41, 0x0e, 0x13, 0x54, 0x1a, 0x00, 0xc1, + 0xc2, 0x45, 0x95, 0x71, 0x06, 0x91, 0x3c, 0xa8, 0x87, 0xe5, 0xc4, 0xac, 0x54, 0xdd, 0xfc, 0xe4, + 0xe7, 0x4f, 0x0d, 0x35, 0x34, 0xaf, 0x5d, 0x1a, 0xdf, 0xa3, 0x12, 0xba, 0xdf, 0xb7, 0x0c, 0x7f, + 0x9e, 0x86, 0xd3, 0x83, 0x96, 0xc1, 0x57, 0x71, 0x87, 0x35, 0x0e, 0x07, 0x47, 0x31, 0xca, 0x67, + 0x24, 0xc8, 0xfb, 0x2b, 0xa9, 0x81, 0x3d, 0xf4, 0x3c, 0x80, 0xdf, 0x96, 0x70, 0x31, 0xef, 0x3b, + 0x48, 0x09, 0xab, 0x21, 0x78, 0xf4, 0x0c, 0x64, 0xba, 0x8e, 0xdd, 0xb5, 0x5d, 0x7e, 0xf1, 0x75, + 0x14, 0xae, 0x0f, 0x8d, 0x1e, 0x05, 0x44, 0x03, 0x02, 0xed, 0xa6, 0xed, 0x99, 0xd6, 0xae, 0xd6, + 0xb5, 0x6f, 0xf1, 0xf7, 0x04, 0x92, 0xaa, 0x4c, 0x6b, 0xae, 0xd3, 0x8a, 0x4d, 0x52, 0xae, 0x7c, 0x5a, 0x82, 0xac, 0x4f, 0x85, 0xf8, 0x90, 0x7a, 0xab, 0xe5, 0x60, 0xd7, 0xe5, 0xae, 0x80, 0xf8, - 0x44, 0xef, 0x82, 0x49, 0xae, 0x14, 0xfc, 0x6b, 0xd5, 0x71, 0xde, 0xb2, 0x88, 0xce, 0xb8, 0xbf, - 0x9c, 0x66, 0x3a, 0x03, 0x9d, 0x86, 0x7c, 0x4c, 0x6f, 0x72, 0xb7, 0x82, 0x8e, 0xd0, 0xe7, 0x8a, - 0xf8, 0x10, 0xb4, 0xae, 0x63, 0xda, 0x8e, 0xe9, 0xed, 0x53, 0xd3, 0x93, 0x54, 0x65, 0x51, 0xb1, - 0xc9, 0xcb, 0x95, 0x36, 0x94, 0x1a, 0x66, 0xa7, 0x4b, 0x3d, 0x3c, 0xde, 0xf5, 0x2b, 0x41, 0x07, - 0xa5, 0x31, 0x3a, 0x38, 0xb4, 0x6b, 0x89, 0x81, 0xae, 0x9d, 0xff, 0x4d, 0x89, 0xdb, 0x86, 0xfa, - 0xf2, 0xd5, 0xb6, 0xbe, 0x8b, 0x2e, 0xc2, 0xd1, 0xea, 0xea, 0xc6, 0xd2, 0x8b, 0x5a, 0x7d, 0x59, - 0xbb, 0xba, 0x5a, 0x59, 0x09, 0x4e, 0xf1, 0xce, 0x1d, 0x7b, 0xfd, 0xee, 0x02, 0x0a, 0xc1, 0x6e, - 0x59, 0xd4, 0xc5, 0x41, 0x17, 0x60, 0x26, 0x8a, 0x52, 0xa9, 0x36, 0x6a, 0xeb, 0x4d, 0x59, 0x9a, - 0x3b, 0xfa, 0xfa, 0xdd, 0x85, 0xa9, 0x10, 0x46, 0x65, 0xdb, 0xc5, 0x96, 0x37, 0x88, 0xb0, 0xb4, - 0xb1, 0xb6, 0x56, 0x6f, 0xca, 0x89, 0x01, 0x84, 0x25, 0xbb, 0xd3, 0x31, 0x3d, 0xf4, 0x30, 0x4c, - 0x45, 0x11, 0xd6, 0xeb, 0xab, 0x72, 0x72, 0x0e, 0xbd, 0x7e, 0x77, 0xa1, 0x18, 0x82, 0x5e, 0x37, - 0xdb, 0x73, 0x99, 0x0f, 0xfe, 0xe8, 0xa9, 0x23, 0x9f, 0xfc, 0xc7, 0xa7, 0xa4, 0xea, 0xea, 0x3b, - 0xb2, 0xf0, 0x7e, 0x20, 0x01, 0xf3, 0xfd, 0x9e, 0x92, 0x67, 0x76, 0xb0, 0xeb, 0xe9, 0x9d, 0xee, - 0x30, 0xa7, 0xfd, 0x59, 0xc8, 0x36, 0x05, 0xcc, 0xa1, 0x63, 0x99, 0xbb, 0x87, 0x74, 0x55, 0x8b, - 0x7e, 0x53, 0xc2, 0x57, 0xbd, 0x34, 0xa6, 0xaf, 0xea, 0x8f, 0xe3, 0x9e, 0x9c, 0xd5, 0xdf, 0x69, - 0xc0, 0x7d, 0x01, 0x13, 0xb7, 0x0d, 0x93, 0x28, 0x11, 0xb6, 0x9a, 0x19, 0x5b, 0x64, 0x5f, 0x66, - 0x49, 0x2d, 0x51, 0x46, 0x07, 0xab, 0x9d, 0xb9, 0x11, 0xe9, 0x85, 0xb9, 0x11, 0xbe, 0xf1, 0xdc, - 0x68, 0x0d, 0x39, 0x44, 0x1d, 0x8e, 0x9a, 0x61, 0xe5, 0x3f, 0x67, 0x61, 0x52, 0xc5, 0xef, 0xed, - 0x61, 0xd7, 0x43, 0x4f, 0x40, 0x0a, 0x1b, 0x7b, 0xf6, 0xe0, 0xca, 0xe4, 0xa3, 0x5c, 0xac, 0x19, - 0x7b, 0x36, 0x07, 0xbe, 0x76, 0x44, 0xa5, 0xc0, 0xe8, 0x0a, 0x4c, 0xec, 0xb4, 0x7b, 0xee, 0x1e, - 0x57, 0x38, 0xa7, 0x06, 0xb1, 0xae, 0x92, 0xea, 0x00, 0x8d, 0x81, 0x93, 0xc6, 0xe8, 0x73, 0x5a, - 0xc9, 0x61, 0x8d, 0xd1, 0x57, 0xb4, 0x82, 0xc6, 0x08, 0x30, 0x5a, 0x02, 0x30, 0x2d, 0xd3, 0xd3, - 0x8c, 0x3d, 0xdd, 0xb4, 0xb8, 0xe7, 0xaa, 0xc4, 0xa1, 0x9a, 0xde, 0x12, 0x01, 0x09, 0xf0, 0xb3, - 0xa6, 0x28, 0x23, 0x3d, 0x7e, 0x6f, 0x0f, 0x3b, 0xc2, 0x7b, 0x8d, 0xe9, 0xf1, 0xbb, 0x49, 0x75, - 0xa8, 0xc7, 0x14, 0x9c, 0x78, 0xfb, 0xec, 0xaa, 0xb7, 0x77, 0x87, 0x3f, 0x60, 0xb2, 0x30, 0x88, - 0x4a, 0x6f, 0x7a, 0x37, 0xef, 0x04, 0xc8, 0x93, 0x06, 0x2b, 0x41, 0xcf, 0x40, 0xda, 0xa0, 0x4a, - 0x80, 0x5e, 0xc0, 0xcc, 0x5d, 0x9a, 0x8f, 0x41, 0xa6, 0xf5, 0x01, 0x2e, 0x47, 0x40, 0x1b, 0x50, - 0x6c, 0x9b, 0xae, 0xa7, 0xb9, 0x96, 0xde, 0x75, 0xf7, 0x6c, 0xcf, 0xa5, 0x6f, 0x88, 0xe5, 0x2e, - 0x3d, 0x34, 0x48, 0x62, 0xd5, 0x74, 0xbd, 0x86, 0x00, 0x0b, 0x28, 0x15, 0xda, 0xe1, 0x72, 0x42, - 0xd0, 0xde, 0xd9, 0xc1, 0x8e, 0x4f, 0x91, 0xbe, 0x3d, 0x16, 0x4b, 0x70, 0x83, 0xc0, 0x09, 0xcc, - 0x10, 0x41, 0x3b, 0x5c, 0x8e, 0xbe, 0x01, 0xa6, 0xdb, 0xb6, 0xde, 0xf2, 0xe9, 0x69, 0xc6, 0x5e, - 0xcf, 0xba, 0x39, 0x5b, 0xa4, 0x54, 0xcf, 0xc7, 0x74, 0xd3, 0xd6, 0x5b, 0x02, 0x79, 0x89, 0x80, - 0x06, 0x94, 0xa7, 0xda, 0xfd, 0x75, 0x48, 0x83, 0x19, 0xbd, 0xdb, 0x6d, 0xef, 0xf7, 0x93, 0x2f, - 0x51, 0xf2, 0x8f, 0x0c, 0x92, 0xaf, 0x10, 0xe8, 0x21, 0xf4, 0x91, 0x3e, 0x50, 0x89, 0xb6, 0x40, - 0xee, 0x3a, 0x98, 0x9e, 0xcc, 0x60, 0x56, 0x4c, 0x6f, 0xd3, 0x3b, 0x92, 0xb9, 0x4b, 0xe7, 0x06, - 0x89, 0x6f, 0x32, 0xc8, 0x4d, 0x0e, 0x18, 0x50, 0x2e, 0x75, 0xa3, 0x35, 0x8c, 0xac, 0x6d, 0x60, - 0x7a, 0x87, 0x9b, 0x93, 0x9d, 0x1a, 0x4e, 0x96, 0x42, 0xc6, 0x92, 0x8d, 0xd4, 0xa0, 0xab, 0x90, - 0x63, 0xef, 0xf6, 0x10, 0xe7, 0x01, 0xd3, 0xbb, 0x95, 0xb9, 0x4b, 0x67, 0x62, 0x96, 0x2b, 0x05, - 0xba, 0x61, 0x7b, 0x38, 0x20, 0x06, 0xd8, 0x2f, 0x44, 0xdb, 0x70, 0x94, 0xde, 0x33, 0xdd, 0xd7, - 0xa2, 0x2e, 0xe2, 0xec, 0x34, 0xa5, 0xf8, 0xe8, 0x20, 0x45, 0xfa, 0xc8, 0xd2, 0xfe, 0x8d, 0xb0, - 0xaf, 0x18, 0x90, 0x9e, 0xbe, 0x35, 0x58, 0x4b, 0x24, 0x6d, 0xc7, 0xb4, 0xf4, 0xb6, 0xf9, 0x1a, - 0x66, 0xf1, 0x14, 0x7d, 0x62, 0x21, 0x56, 0xd2, 0xae, 0x72, 0x38, 0x6a, 0x07, 0x43, 0x92, 0xb6, - 0x13, 0x2e, 0xaf, 0x4e, 0xf2, 0x2c, 0x88, 0x7f, 0x67, 0x78, 0x52, 0xce, 0xb0, 0x7b, 0xc2, 0xd7, - 0x53, 0x19, 0x90, 0x73, 0xca, 0x59, 0xc8, 0x85, 0xf4, 0x14, 0x31, 0x52, 0xdc, 0xcf, 0xe7, 0xb9, - 0x15, 0xf1, 0xa9, 0x14, 0x21, 0x1f, 0x56, 0x4d, 0xca, 0x87, 0x24, 0xc8, 0x85, 0x94, 0x0e, 0xc1, - 0x14, 0xc1, 0x35, 0xc7, 0x14, 0xa1, 0xf3, 0x19, 0x11, 0xe8, 0x88, 0xfa, 0x04, 0x0d, 0xa3, 0xf2, - 0xb4, 0x90, 0xc7, 0x59, 0x68, 0x1e, 0x72, 0xdd, 0x4b, 0x5d, 0x1f, 0x24, 0x49, 0x41, 0xa0, 0x7b, - 0xa9, 0x2b, 0x00, 0x4e, 0x43, 0x9e, 0x0c, 0x5d, 0x0b, 0x47, 0xf0, 0x59, 0x35, 0x47, 0xca, 0x38, - 0x88, 0xf2, 0xeb, 0x09, 0x90, 0xfb, 0x95, 0x19, 0x7a, 0x1a, 0x52, 0x44, 0x8b, 0x73, 0x35, 0x3d, - 0x37, 0x10, 0x23, 0xf8, 0x56, 0x93, 0x45, 0x9b, 0x1f, 0x22, 0xb1, 0x0e, 0xc5, 0x40, 0x27, 0x88, - 0x06, 0xd3, 0x4d, 0x4b, 0x33, 0x5b, 0xe2, 0x9d, 0x4a, 0xfa, 0x5d, 0x6f, 0x91, 0x68, 0xd6, 0x10, - 0x39, 0x11, 0x8d, 0xd9, 0x9e, 0x03, 0x52, 0x12, 0x7d, 0xe9, 0x13, 0xb5, 0x64, 0xf4, 0xe5, 0x53, - 0x56, 0x22, 0x6e, 0x35, 0x7b, 0xfd, 0xe6, 0x74, 0x8c, 0x3c, 0x09, 0x98, 0xad, 0x6e, 0x4b, 0xf7, - 0x30, 0xf7, 0x47, 0xc3, 0x1e, 0xf6, 0x43, 0x50, 0xd2, 0xbb, 0x5d, 0xcd, 0xf5, 0x74, 0x0f, 0xf3, - 0xd8, 0x73, 0x82, 0xfa, 0xbc, 0x05, 0xbd, 0xdb, 0xa5, 0xef, 0x7c, 0xb1, 0xd8, 0xf3, 0x41, 0x28, - 0x12, 0x0d, 0x6f, 0xea, 0x6d, 0x11, 0xd8, 0xa4, 0x59, 0x88, 0xca, 0x4b, 0x79, 0x70, 0xd4, 0x82, - 0x7c, 0x58, 0xb9, 0xfb, 0xa9, 0x67, 0x29, 0x48, 0x3d, 0x93, 0x32, 0x7a, 0xf1, 0x84, 0x71, 0x48, - 0x5c, 0xd6, 0x49, 0x73, 0xb2, 0xcc, 0x29, 0xe6, 0x5f, 0xc4, 0xd1, 0xe9, 0x3a, 0xf6, 0x2d, 0x76, - 0x99, 0x2a, 0xa3, 0xb2, 0x0f, 0xe5, 0x65, 0x28, 0x46, 0xed, 0x00, 0x2a, 0x42, 0xc2, 0xbb, 0xc3, - 0x5b, 0x49, 0x78, 0x77, 0xd0, 0xc5, 0xd0, 0x0b, 0x69, 0xc5, 0x38, 0xeb, 0xc7, 0xf1, 0x83, 0xa7, - 0xbd, 0xae, 0xa7, 0x32, 0x09, 0x39, 0xa9, 0x94, 0xa0, 0x10, 0xb1, 0x12, 0xca, 0x31, 0x98, 0x89, - 0xd3, 0xf9, 0x8a, 0x09, 0x33, 0x71, 0xaa, 0x1b, 0x5d, 0x81, 0x8c, 0xaf, 0xf4, 0x85, 0x04, 0x0d, - 0xb4, 0xee, 0x23, 0xf9, 0xb0, 0x44, 0x76, 0xc8, 0x44, 0xd0, 0x1d, 0x8a, 0x04, 0x8f, 0x3a, 0xba, - 0xdd, 0x6b, 0xba, 0xbb, 0xa7, 0x7c, 0x33, 0xcc, 0x0e, 0xd3, 0xe7, 0x21, 0xc6, 0xb1, 0x54, 0x83, - 0x60, 0xdc, 0x31, 0x48, 0xf3, 0xd7, 0x16, 0x12, 0x34, 0x73, 0xca, 0xbf, 0x08, 0x43, 0x99, 0x6e, - 0x4f, 0xb2, 0x84, 0x2a, 0xfd, 0x50, 0x34, 0x38, 0x31, 0x54, 0xa5, 0x07, 0x5b, 0x2a, 0x3c, 0x07, - 0xcb, 0xb6, 0x54, 0x7c, 0x42, 0xac, 0xb3, 0xec, 0x83, 0xbe, 0xc2, 0x89, 0xad, 0x16, 0x0f, 0x6e, - 0xb2, 0x2a, 0xff, 0x52, 0x3e, 0x92, 0x84, 0x63, 0xf1, 0x7a, 0x1d, 0x2d, 0x40, 0xbe, 0xa3, 0xdf, - 0xd1, 0xbc, 0x68, 0xea, 0x03, 0x3a, 0xfa, 0x9d, 0x26, 0xcf, 0x7b, 0xc8, 0x90, 0xf4, 0xee, 0xb8, - 0xf4, 0x22, 0x57, 0x5e, 0x25, 0x7f, 0xa2, 0x1b, 0x30, 0xd5, 0xb6, 0x0d, 0xbd, 0xad, 0xb5, 0x75, - 0xd7, 0xd3, 0xb8, 0xd9, 0x67, 0xcb, 0xe9, 0x81, 0x61, 0x7a, 0x9a, 0x5d, 0xb7, 0x32, 0x3d, 0xa2, - 0x82, 0xf8, 0x42, 0x28, 0x51, 0x22, 0xab, 0xba, 0xeb, 0xf1, 0xf0, 0xa1, 0x06, 0xb9, 0x8e, 0xe9, - 0x6e, 0xe3, 0x3d, 0xfd, 0x96, 0x69, 0x3b, 0x7c, 0x5d, 0xc5, 0x48, 0xcf, 0x5a, 0x00, 0xc4, 0x49, - 0x85, 0xf1, 0x42, 0x93, 0x32, 0x11, 0x91, 0x66, 0xa1, 0x59, 0xd2, 0x87, 0xd6, 0x2c, 0x8f, 0xc3, - 0x8c, 0x85, 0xef, 0xd0, 0xbb, 0x82, 0x7c, 0xe5, 0x32, 0x49, 0x61, 0x57, 0xfd, 0x10, 0xa9, 0xf3, - 0xd7, 0xba, 0x4b, 0x77, 0xb5, 0x1e, 0x06, 0x3f, 0x60, 0xd4, 0x44, 0x34, 0x9b, 0xa1, 0xd0, 0x25, - 0x51, 0x5e, 0x61, 0xc5, 0xca, 0xeb, 0x74, 0x72, 0xe2, 0xac, 0xa3, 0x60, 0xbd, 0x14, 0xb0, 0xbe, - 0x09, 0x33, 0x1c, 0xbf, 0x15, 0xe1, 0xfe, 0x40, 0x78, 0x1e, 0x75, 0xba, 0x42, 0x5c, 0x47, 0x02, - 0x7f, 0x38, 0xe3, 0x93, 0xf7, 0xc8, 0x78, 0x04, 0x29, 0xca, 0x96, 0x14, 0x53, 0x37, 0xe4, 0xef, - 0xff, 0xd7, 0x26, 0xe3, 0xfd, 0x49, 0x98, 0x1a, 0x70, 0x2c, 0xfc, 0x81, 0x49, 0xb1, 0x03, 0x4b, - 0xc4, 0x0e, 0x2c, 0x79, 0xe8, 0x81, 0xf1, 0xd9, 0x4e, 0x8d, 0x9e, 0xed, 0x89, 0xb7, 0x73, 0xb6, - 0xd3, 0xf7, 0x38, 0xdb, 0xef, 0xe8, 0x3c, 0x7c, 0x4c, 0x82, 0xb9, 0xe1, 0xee, 0x58, 0xec, 0x84, - 0x3c, 0x02, 0x53, 0x7e, 0x57, 0x7c, 0xf2, 0x4c, 0x3d, 0xca, 0x7e, 0x05, 0xa7, 0x3f, 0xd4, 0xe2, - 0x3d, 0x08, 0xc5, 0x3e, 0x6f, 0x91, 0x09, 0x73, 0x21, 0x92, 0x41, 0x54, 0x3e, 0x90, 0x84, 0x99, - 0x38, 0x87, 0x2e, 0x66, 0xc5, 0xaa, 0x30, 0xdd, 0xc2, 0x86, 0xd9, 0xba, 0xe7, 0x05, 0x3b, 0xc5, - 0xd1, 0xff, 0xff, 0x7a, 0x8d, 0x91, 0x93, 0x1f, 0x03, 0xc8, 0xa8, 0xd8, 0xed, 0x12, 0x07, 0x8d, - 0xbd, 0xf6, 0x6c, 0xe0, 0xae, 0x17, 0x64, 0xda, 0x63, 0xe3, 0x06, 0x0e, 0x22, 0xf0, 0x48, 0xfc, - 0xec, 0xe3, 0xa1, 0x27, 0x79, 0x9a, 0x60, 0x68, 0xc0, 0xcf, 0xdc, 0x6f, 0x1f, 0x95, 0xe5, 0x09, - 0x9e, 0x12, 0x79, 0x82, 0xe4, 0xb0, 0xe8, 0x97, 0x3b, 0xe3, 0x3e, 0x1e, 0x4f, 0x14, 0x3c, 0xc9, - 0x13, 0x05, 0xa9, 0x61, 0xcd, 0x31, 0x9f, 0x3d, 0x68, 0xce, 0x64, 0x17, 0xb9, 0xc3, 0x99, 0x82, - 0xf4, 0xb0, 0xa1, 0x86, 0x9c, 0xeb, 0x60, 0xa8, 0x41, 0xaa, 0xe0, 0x29, 0x91, 0x2a, 0x98, 0x1c, - 0xd6, 0x69, 0xee, 0x4d, 0x06, 0x9d, 0x66, 0xb9, 0x82, 0xe7, 0x43, 0xb9, 0x82, 0x6c, 0xff, 0xce, - 0xe0, 0x40, 0xae, 0xc0, 0xc7, 0xf6, 0x93, 0x05, 0x65, 0x3f, 0x59, 0x90, 0x1f, 0x9a, 0x69, 0xe0, - 0x6e, 0xa0, 0x8f, 0x2c, 0xb2, 0x05, 0x9b, 0x03, 0xd9, 0x02, 0x16, 0xdc, 0x9f, 0x1d, 0x99, 0x2d, - 0xf0, 0x49, 0xf5, 0xa5, 0x0b, 0x36, 0x07, 0xd2, 0x05, 0xc5, 0x61, 0x14, 0xfb, 0x7c, 0xce, 0x80, - 0x62, 0x34, 0x5f, 0xf0, 0x8d, 0xf1, 0xf9, 0x82, 0xa1, 0x01, 0x7d, 0x8c, 0x7f, 0xe9, 0x93, 0x8e, - 0x49, 0x18, 0x7c, 0xf3, 0x90, 0x84, 0x81, 0x3c, 0x2c, 0xb0, 0x8d, 0xf3, 0x2e, 0xfd, 0x06, 0xe2, - 0x32, 0x06, 0x37, 0x62, 0x32, 0x06, 0x2c, 0xb4, 0x7f, 0x78, 0x8c, 0x8c, 0x81, 0x4f, 0x7a, 0x20, - 0x65, 0x70, 0x23, 0x26, 0x65, 0x80, 0x86, 0xd3, 0xed, 0x73, 0x8a, 0xc2, 0x74, 0xa3, 0x39, 0x83, - 0x95, 0x68, 0xce, 0x60, 0xfa, 0x60, 0x5f, 0x94, 0x99, 0x76, 0x9f, 0x5a, 0x38, 0x69, 0x60, 0x0c, - 0x4b, 0x1a, 0xb0, 0xb8, 0xfe, 0xb1, 0x31, 0x93, 0x06, 0x3e, 0xed, 0xd8, 0xac, 0xc1, 0xe6, 0x40, - 0xd6, 0xe0, 0xe8, 0x30, 0x81, 0xeb, 0x33, 0x32, 0x81, 0xc0, 0x0d, 0x4d, 0x1b, 0xb0, 0x47, 0xc6, - 0xd8, 0xf3, 0x62, 0x20, 0xe7, 0xae, 0xa7, 0x32, 0x39, 0x39, 0xaf, 0x3c, 0x4c, 0xdc, 0x9a, 0x3e, - 0xbd, 0x47, 0x82, 0x08, 0xec, 0x38, 0xb6, 0x23, 0x8e, 0x65, 0xd0, 0x0f, 0xe5, 0x1c, 0xe4, 0xc3, - 0x2a, 0xee, 0x80, 0x14, 0x43, 0x09, 0x0a, 0x11, 0xad, 0xa6, 0xfc, 0x82, 0x04, 0xf9, 0xb0, 0xbe, - 0x8a, 0x04, 0xa0, 0x59, 0x1e, 0x80, 0x86, 0x12, 0x0f, 0x89, 0x68, 0xe2, 0x61, 0x1e, 0x72, 0x24, - 0x08, 0xeb, 0xcb, 0x29, 0xe8, 0x5d, 0x3f, 0xa7, 0x70, 0x1e, 0xa6, 0xa8, 0x0d, 0x65, 0xe9, 0x09, - 0x6e, 0xa7, 0xd8, 0xfe, 0x4c, 0x89, 0x54, 0x50, 0x66, 0xf0, 0x9d, 0xc7, 0xc7, 0x60, 0x3a, 0x04, - 0xeb, 0x07, 0x77, 0x2c, 0xbc, 0x96, 0x7d, 0xe8, 0x0a, 0x8f, 0xf2, 0x7e, 0x59, 0x82, 0xa9, 0x01, - 0x75, 0x19, 0x9b, 0x37, 0x90, 0xde, 0xae, 0xbc, 0x41, 0xe2, 0xde, 0xf3, 0x06, 0xe1, 0x70, 0x35, - 0x19, 0x0d, 0x57, 0xff, 0x52, 0x82, 0x42, 0x44, 0x6d, 0x93, 0x49, 0x30, 0xec, 0x96, 0x38, 0xc4, - 0x43, 0xff, 0x26, 0x7e, 0x4a, 0xdb, 0xde, 0xe5, 0x61, 0x22, 0xf9, 0x93, 0x40, 0xf9, 0x86, 0x28, - 0xcb, 0xcd, 0x8c, 0x1f, 0x7b, 0x4e, 0x84, 0x8f, 0xf3, 0xf1, 0x23, 0x6e, 0xe9, 0xe0, 0x88, 0x9b, - 0x7f, 0x76, 0x67, 0x32, 0x74, 0x76, 0x07, 0x3d, 0x03, 0x59, 0xba, 0x0b, 0xa0, 0xd9, 0xdd, 0xe0, - 0x87, 0x29, 0x86, 0x1f, 0x6f, 0x73, 0xe9, 0xfe, 0x21, 0x3b, 0x13, 0x17, 0x78, 0x21, 0xd9, 0x88, - 0x17, 0x72, 0x1f, 0x64, 0x49, 0xf7, 0xd9, 0xe3, 0x8e, 0xc0, 0x0f, 0xd3, 0x8a, 0x02, 0xe5, 0x27, - 0x13, 0x50, 0xea, 0xb3, 0x3a, 0xb1, 0x83, 0x17, 0x52, 0x99, 0x08, 0xa5, 0x45, 0xc6, 0x63, 0xc8, - 0x29, 0x80, 0x5d, 0xdd, 0xd5, 0x6e, 0xeb, 0x96, 0xc7, 0xdf, 0x70, 0x4f, 0xaa, 0xa1, 0x12, 0x34, - 0x07, 0x19, 0xf2, 0xd5, 0x73, 0xf9, 0x2b, 0xee, 0x49, 0xd5, 0xff, 0x46, 0x75, 0x48, 0xe3, 0x5b, - 0xf4, 0x39, 0x12, 0xf6, 0xa8, 0xcf, 0xf1, 0x18, 0xf5, 0x44, 0xea, 0xab, 0xb3, 0x64, 0xba, 0xff, - 0xf0, 0xcd, 0x79, 0x99, 0x81, 0x3f, 0xea, 0x3f, 0xbf, 0xa0, 0x72, 0x02, 0x51, 0x36, 0x64, 0xfa, - 0xd8, 0x40, 0xd3, 0x85, 0x79, 0x11, 0xfb, 0x13, 0xa6, 0xb2, 0x0d, 0x4b, 0xb5, 0xd0, 0xc1, 0x9d, - 0xae, 0x6d, 0xb7, 0x35, 0xb6, 0xce, 0x2b, 0x50, 0x8c, 0x1a, 0x59, 0xf6, 0xf2, 0xb2, 0xa7, 0x9b, - 0x96, 0x16, 0xf1, 0x8d, 0xf3, 0xac, 0x90, 0xad, 0xab, 0xeb, 0xa9, 0x8c, 0x24, 0x27, 0x78, 0xba, - 0xe6, 0xdd, 0x70, 0x34, 0xd6, 0xc6, 0xa2, 0xa7, 0x21, 0x1b, 0xd8, 0x67, 0xb6, 0xed, 0x7c, 0x50, - 0x1e, 0x26, 0x00, 0x56, 0x6e, 0xc0, 0xd1, 0x58, 0x23, 0x8b, 0x9e, 0x83, 0xb4, 0x83, 0xdd, 0x5e, - 0xdb, 0xe3, 0xcf, 0x22, 0x3e, 0x38, 0xda, 0x3a, 0xf7, 0xda, 0x9e, 0xca, 0x91, 0x94, 0x8b, 0x70, - 0x62, 0xa8, 0x95, 0x0d, 0xb2, 0x29, 0x52, 0x28, 0x9b, 0xa2, 0xfc, 0xb4, 0x04, 0x73, 0xc3, 0x2d, - 0x27, 0xaa, 0xf6, 0x75, 0xe8, 0xfc, 0x98, 0x76, 0x37, 0xd4, 0x2b, 0x12, 0x6e, 0x38, 0x78, 0x07, - 0x7b, 0xc6, 0x1e, 0x33, 0xe1, 0x4c, 0x29, 0x14, 0xd4, 0x02, 0x2f, 0xa5, 0x38, 0x2e, 0x03, 0x7b, - 0x15, 0x1b, 0x9e, 0xc6, 0x26, 0xd5, 0xe5, 0x3f, 0xb5, 0x53, 0x60, 0xa5, 0x0d, 0x56, 0xa8, 0x3c, - 0x02, 0xc7, 0x87, 0xd8, 0xe2, 0xc1, 0xb8, 0x44, 0x79, 0x85, 0x00, 0xc7, 0x1a, 0x58, 0xf4, 0x02, - 0xa4, 0x5d, 0x4f, 0xf7, 0x7a, 0x2e, 0x1f, 0xd9, 0xd9, 0x91, 0xb6, 0xb9, 0x41, 0xc1, 0x55, 0x8e, - 0xa6, 0x3c, 0x0b, 0x68, 0xd0, 0xd2, 0xc6, 0xc4, 0x56, 0x52, 0x5c, 0x6c, 0xb5, 0x0d, 0x27, 0x0f, - 0xb0, 0xa9, 0x68, 0xa9, 0xaf, 0x73, 0x8f, 0x8c, 0x65, 0x92, 0xfb, 0x3a, 0xf8, 0xc7, 0x09, 0x38, - 0x1a, 0x6b, 0x5a, 0x43, 0xab, 0x54, 0x7a, 0xab, 0xab, 0xf4, 0x39, 0x00, 0xef, 0x8e, 0xc6, 0x66, - 0x5a, 0x68, 0xfb, 0xb8, 0x78, 0xe2, 0x0e, 0x36, 0xa8, 0xc2, 0x22, 0x82, 0x91, 0xf5, 0xf8, 0x5f, - 0x24, 0xf8, 0x0f, 0xc5, 0xb3, 0x3d, 0x6a, 0x09, 0x5c, 0x1e, 0xea, 0x8d, 0x6d, 0x33, 0x82, 0xc0, - 0x97, 0x15, 0xbb, 0xe8, 0x15, 0x38, 0xde, 0x67, 0xd1, 0x7c, 0xda, 0xa9, 0xb1, 0x0d, 0xdb, 0xd1, - 0xa8, 0x61, 0x13, 0xb4, 0xc3, 0x56, 0x69, 0x22, 0x6a, 0x95, 0x5e, 0x01, 0x08, 0x02, 0x5b, 0xb2, - 0xde, 0x1c, 0xbb, 0x67, 0xb5, 0xc4, 0xe1, 0x53, 0xfa, 0x81, 0xae, 0xc0, 0x04, 0x91, 0x04, 0xc1, - 0xaa, 0x18, 0x85, 0x41, 0xa6, 0x34, 0x14, 0x19, 0x33, 0x70, 0xe5, 0x55, 0x21, 0x6d, 0xe1, 0x1c, - 0xe3, 0x90, 0x36, 0x9e, 0x8f, 0xb6, 0xa1, 0x0c, 0x4f, 0x57, 0xc6, 0xb7, 0xf5, 0x77, 0x60, 0x82, - 0x4e, 0x7f, 0xec, 0xd9, 0xef, 0x6f, 0x02, 0xd0, 0x3d, 0xcf, 0x31, 0xb7, 0x7b, 0x41, 0x0b, 0x0b, - 0x43, 0xe4, 0xa7, 0x22, 0x00, 0xab, 0xf7, 0x71, 0x41, 0x9a, 0x09, 0x70, 0x43, 0xc2, 0x14, 0xa2, - 0xa8, 0xac, 0x43, 0x31, 0x8a, 0x1b, 0x7f, 0x98, 0x5d, 0xfc, 0x2a, 0x40, 0x70, 0xd4, 0x36, 0x30, - 0xe4, 0xfc, 0xb6, 0x10, 0xfd, 0x50, 0xbe, 0x25, 0x01, 0xf9, 0xb0, 0xf4, 0xfd, 0x2d, 0x34, 0x96, - 0xca, 0x07, 0x24, 0xc8, 0xf8, 0xe3, 0x8f, 0xa6, 0xf3, 0x23, 0xfb, 0x20, 0xc1, 0xb5, 0x06, 0x3f, - 0x07, 0xcf, 0x76, 0x3d, 0x92, 0xfe, 0xae, 0xc7, 0xbb, 0x7c, 0x83, 0x30, 0x34, 0x98, 0x0f, 0x73, - 0x5b, 0x1c, 0x4f, 0xe2, 0x06, 0xea, 0xd9, 0xf1, 0xce, 0x40, 0xcd, 0xc0, 0x44, 0xf8, 0xf8, 0x12, - 0xfb, 0x50, 0x70, 0xe8, 0x04, 0x25, 0x5b, 0x8d, 0xe1, 0xc3, 0x52, 0xd2, 0xe1, 0x0f, 0x4b, 0xf9, - 0xcd, 0x24, 0xc2, 0xcd, 0xfc, 0x23, 0x09, 0x32, 0x62, 0x5d, 0xa0, 0x17, 0xc2, 0xe7, 0x7b, 0xc5, - 0x61, 0xc1, 0xe1, 0x7a, 0x89, 0x37, 0x10, 0x3a, 0xde, 0x5b, 0x15, 0xfb, 0x8c, 0x66, 0x4b, 0xdb, - 0x69, 0xeb, 0xbb, 0x7c, 0xbb, 0x68, 0xe8, 0xe9, 0x64, 0x76, 0x78, 0x88, 0x1f, 0xb8, 0xac, 0xb7, - 0xc8, 0x07, 0xf7, 0x43, 0xfe, 0x5c, 0x02, 0xb9, 0x7f, 0xdd, 0xbe, 0xf5, 0xfe, 0x0d, 0xda, 0xab, - 0x64, 0x8c, 0xbd, 0x42, 0x17, 0x60, 0x3a, 0xf8, 0x61, 0x2e, 0xd7, 0xdc, 0xb5, 0xd8, 0xe1, 0x5f, - 0x96, 0x54, 0x43, 0x7e, 0x55, 0x43, 0xd4, 0x0c, 0x8e, 0x7b, 0xe2, 0x5e, 0xc7, 0xfd, 0xfe, 0x04, - 0xe4, 0x42, 0x39, 0x3e, 0x74, 0x39, 0xa4, 0x94, 0x8a, 0x71, 0x56, 0x22, 0x04, 0x1c, 0xfa, 0x59, - 0x9d, 0x08, 0xa7, 0x12, 0xf7, 0xc0, 0xa9, 0x61, 0xd9, 0x54, 0x91, 0x34, 0x4c, 0x1d, 0x3a, 0x69, - 0x18, 0x7f, 0x80, 0x70, 0x62, 0xc8, 0x01, 0xc2, 0xbf, 0x27, 0x41, 0xc6, 0x4f, 0xbe, 0x1c, 0x76, - 0x4f, 0xee, 0x18, 0xa4, 0xb9, 0xef, 0xc5, 0x36, 0xe5, 0xf8, 0x57, 0x6c, 0x76, 0x74, 0x0e, 0x32, - 0xe2, 0x95, 0x79, 0x6e, 0xe1, 0xfc, 0xef, 0xf3, 0xdb, 0x90, 0x0b, 0x6d, 0x6b, 0xa2, 0x13, 0x70, - 0x74, 0xe9, 0x5a, 0x6d, 0xe9, 0x45, 0xad, 0xf9, 0x52, 0xff, 0xdb, 0xc2, 0x03, 0x55, 0x6a, 0x8d, - 0x7e, 0xcb, 0x12, 0x3a, 0x0e, 0xd3, 0xd1, 0x2a, 0x56, 0x91, 0x98, 0x4b, 0x7d, 0xf0, 0x47, 0x4f, - 0x1d, 0x39, 0xff, 0xe7, 0x12, 0x4c, 0xc7, 0x78, 0xb9, 0xe8, 0x34, 0xdc, 0xbf, 0x71, 0xf5, 0x6a, - 0x4d, 0xd5, 0x1a, 0xeb, 0x95, 0xcd, 0xc6, 0xb5, 0x8d, 0xa6, 0xa6, 0xd6, 0x1a, 0x5b, 0xab, 0xcd, - 0x50, 0xa3, 0x0b, 0x70, 0x5f, 0x3c, 0x48, 0x65, 0x69, 0xa9, 0xb6, 0xd9, 0x64, 0x8f, 0x1b, 0x0f, - 0x81, 0xa8, 0x6e, 0xa8, 0x4d, 0x39, 0x31, 0x9c, 0x84, 0x5a, 0xbb, 0x5e, 0x5b, 0x6a, 0xca, 0x49, - 0x74, 0x16, 0xce, 0x1c, 0x04, 0xa1, 0x5d, 0xdd, 0x50, 0xd7, 0x2a, 0x4d, 0x39, 0x35, 0x12, 0xb0, - 0x51, 0x5b, 0x5f, 0xae, 0xa9, 0xf2, 0x04, 0x1f, 0xf7, 0x1b, 0x09, 0x98, 0x1d, 0xe6, 0x4c, 0x13, - 0x5a, 0x95, 0xcd, 0xcd, 0xd5, 0x97, 0x03, 0x5a, 0x4b, 0xd7, 0xb6, 0xd6, 0x5f, 0x1c, 0x64, 0xc1, - 0x43, 0xa0, 0x1c, 0x04, 0xe8, 0x33, 0xe2, 0x41, 0x38, 0x7d, 0x20, 0x1c, 0x67, 0xc7, 0x08, 0x30, - 0xb5, 0xd6, 0x54, 0x5f, 0x96, 0x93, 0x68, 0x11, 0xce, 0x8f, 0x04, 0xf3, 0xeb, 0xe4, 0x14, 0xba, - 0x00, 0x8f, 0x1c, 0x0c, 0xcf, 0x18, 0x24, 0x10, 0x04, 0x8b, 0x5e, 0x97, 0xe0, 0x68, 0xac, 0x57, - 0x8e, 0xce, 0xc0, 0xfc, 0xa6, 0xba, 0xb1, 0x54, 0x6b, 0x34, 0xb4, 0x4d, 0x75, 0x63, 0x73, 0xa3, - 0x51, 0x59, 0xd5, 0x1a, 0xcd, 0x4a, 0x73, 0xab, 0x11, 0xe2, 0x8d, 0x02, 0xa7, 0x86, 0x01, 0xf9, - 0x7c, 0x39, 0x00, 0x86, 0x4b, 0x80, 0x90, 0xd3, 0xbb, 0x12, 0x9c, 0x18, 0xea, 0x85, 0xa3, 0x73, - 0xf0, 0x00, 0xfd, 0x9d, 0xb2, 0x97, 0xb5, 0x1b, 0x1b, 0xcd, 0xf0, 0x2b, 0xda, 0x03, 0xbd, 0x3a, - 0x0b, 0x67, 0x0e, 0x84, 0xf4, 0xbb, 0x36, 0x0a, 0xb0, 0xaf, 0x7f, 0xdf, 0x26, 0x41, 0xa9, 0x4f, - 0x17, 0xa2, 0xfb, 0x60, 0x76, 0xad, 0xde, 0xa8, 0xd6, 0xae, 0x55, 0x6e, 0xd4, 0x37, 0xd4, 0xfe, - 0x35, 0x7b, 0x06, 0xe6, 0x07, 0x6a, 0x97, 0xb7, 0x36, 0x57, 0xeb, 0x4b, 0x95, 0x66, 0x8d, 0x36, - 0x2a, 0x4b, 0x64, 0x60, 0x03, 0x40, 0xab, 0xf5, 0x95, 0x6b, 0x4d, 0x6d, 0x69, 0xb5, 0x5e, 0x5b, - 0x6f, 0x6a, 0x95, 0x66, 0xb3, 0x12, 0x2c, 0xe7, 0xea, 0x8b, 0x43, 0x8f, 0xbe, 0x5e, 0x1c, 0xff, - 0xe8, 0x2b, 0x3f, 0xc2, 0x19, 0xdc, 0x56, 0x4b, 0xc0, 0xbc, 0x5f, 0xc9, 0x73, 0x69, 0xfd, 0x47, - 0x3c, 0xa7, 0x7d, 0xed, 0xce, 0x01, 0x86, 0xdf, 0xf8, 0x7c, 0x0e, 0x92, 0x95, 0x6e, 0x97, 0x68, - 0x3e, 0xfa, 0x6d, 0xd8, 0x6d, 0xae, 0x57, 0xfd, 0x6f, 0x52, 0xe7, 0xda, 0x3b, 0xde, 0x6d, 0xdd, - 0xf1, 0x7f, 0x79, 0x4d, 0x7c, 0x2b, 0xcf, 0x40, 0xd6, 0x8f, 0x1e, 0xe8, 0xdb, 0xa5, 0xfe, 0x3d, - 0xa4, 0x94, 0xb8, 0x67, 0xc4, 0x2f, 0x6b, 0x24, 0x82, 0xcb, 0x1a, 0xa9, 0x2f, 0xbe, 0x31, 0x2f, - 0x55, 0xd7, 0x87, 0x72, 0xe7, 0xc9, 0xf1, 0xb9, 0x13, 0x30, 0xc0, 0x67, 0xd0, 0xf7, 0xdd, 0x1f, - 0xba, 0x0d, 0xec, 0x9f, 0x38, 0x0d, 0xb3, 0x27, 0xe6, 0x3c, 0xfe, 0xa8, 0x33, 0xae, 0x63, 0x9c, - 0x61, 0x1d, 0x35, 0x2b, 0xf7, 0x7a, 0xc8, 0xf5, 0x19, 0x28, 0x6c, 0xea, 0x8e, 0xd7, 0xc0, 0xde, - 0x35, 0xac, 0xb7, 0xb0, 0x13, 0xbd, 0x9b, 0x5b, 0x10, 0x77, 0x73, 0x85, 0x3d, 0x4b, 0x04, 0xf6, - 0x4c, 0x31, 0x21, 0x45, 0x9f, 0x13, 0x1e, 0x7a, 0xc8, 0x84, 0x1d, 0x0a, 0xe1, 0x87, 0x4c, 0xe8, - 0x07, 0xba, 0x2c, 0x6e, 0xdf, 0x26, 0x47, 0xdc, 0xbe, 0x15, 0x91, 0x13, 0xbb, 0x83, 0xdb, 0x81, - 0x49, 0xee, 0xcd, 0xc4, 0xee, 0xde, 0xae, 0x43, 0xa9, 0xab, 0x3b, 0x1e, 0xfd, 0xb5, 0x92, 0x3d, - 0x3a, 0x0c, 0xee, 0x89, 0xc4, 0x5d, 0x9f, 0x8a, 0x0c, 0x97, 0x37, 0x53, 0xe8, 0x86, 0x0b, 0x95, - 0x2f, 0xa6, 0x20, 0xcd, 0xd9, 0xf1, 0x7c, 0xf4, 0xa4, 0x5b, 0xc4, 0x31, 0x0f, 0xc4, 0x3f, 0x08, - 0x72, 0x39, 0x41, 0x3f, 0x2d, 0xfd, 0x50, 0xff, 0xb9, 0xb2, 0x6a, 0xee, 0xf3, 0x6f, 0xce, 0x4f, - 0xd2, 0x4c, 0x71, 0x7d, 0x39, 0x38, 0x64, 0xf6, 0xf6, 0x7b, 0x41, 0xcb, 0x50, 0x08, 0xe5, 0xb0, - 0xcd, 0x16, 0xdf, 0xf8, 0x9f, 0x1b, 0xee, 0x29, 0x8a, 0x6d, 0x5e, 0x3f, 0xbf, 0x5d, 0x6f, 0xa1, - 0x73, 0x20, 0x87, 0x76, 0x9e, 0x59, 0x78, 0xce, 0x92, 0xb7, 0xc5, 0xb6, 0xbf, 0xa7, 0x4c, 0x37, - 0x5e, 0x4f, 0x42, 0x96, 0xfe, 0x80, 0x4e, 0x68, 0x7f, 0x36, 0x43, 0x0a, 0x68, 0xe5, 0x59, 0x28, - 0xf5, 0x6f, 0xe1, 0xb2, 0x4d, 0xd9, 0xe2, 0xad, 0xe8, 0xf6, 0xed, 0xb0, 0x0d, 0xdf, 0xec, 0xd0, - 0x0d, 0xdf, 0x07, 0xa1, 0x18, 0x24, 0x25, 0x28, 0x2c, 0x30, 0x4f, 0xdb, 0x2f, 0xa5, 0x60, 0xe1, - 0xfc, 0x42, 0x2e, 0x92, 0x5f, 0xf0, 0x77, 0x06, 0x78, 0xb6, 0x85, 0xc1, 0xe4, 0xd9, 0x9e, 0x31, - 0xa9, 0xe0, 0x49, 0x15, 0x0a, 0x7b, 0x06, 0x0a, 0xe2, 0x92, 0x22, 0x83, 0x2b, 0x50, 0xb8, 0xbc, - 0x28, 0x1c, 0xba, 0x07, 0x5d, 0x8c, 0xdf, 0x83, 0x9e, 0x85, 0xd4, 0x32, 0x8f, 0x8a, 0xfb, 0x72, - 0x6c, 0x9f, 0x4d, 0x42, 0x8a, 0x6e, 0x2b, 0x3d, 0x19, 0x71, 0xcc, 0xe3, 0x44, 0x9a, 0x84, 0x07, - 0xb8, 0xb5, 0xe6, 0xee, 0x86, 0xfc, 0xf2, 0x61, 0x47, 0x4c, 0xfc, 0xd4, 0x46, 0x32, 0x9c, 0xda, - 0xb8, 0x0a, 0x19, 0x5f, 0x4e, 0x52, 0x23, 0xe5, 0xa4, 0x44, 0xe4, 0x84, 0x88, 0x31, 0x2f, 0x50, - 0x27, 0x79, 0x78, 0x81, 0xaa, 0x90, 0xf5, 0x35, 0x8c, 0x2f, 0x70, 0xe3, 0xc8, 0x6c, 0x80, 0x16, - 0x7f, 0x16, 0x23, 0x3d, 0xe4, 0x2c, 0x46, 0x58, 0xb0, 0xf8, 0x6f, 0x6f, 0x4e, 0xd2, 0x81, 0x05, - 0x82, 0xc5, 0x7e, 0x7f, 0xf3, 0x3e, 0xc8, 0x06, 0xf1, 0x15, 0x93, 0xbd, 0xa0, 0x80, 0xd4, 0x06, - 0x91, 0x1a, 0x93, 0xb5, 0xd0, 0x8f, 0x38, 0x0f, 0x89, 0xd2, 0x60, 0x58, 0x94, 0xa6, 0xfc, 0x5b, - 0x09, 0xd2, 0xfc, 0xb8, 0xc5, 0x01, 0x69, 0x01, 0x36, 0x0f, 0x89, 0x61, 0xf3, 0x90, 0x7c, 0x4b, - 0xf3, 0x00, 0x7e, 0x3f, 0xc5, 0x21, 0xd3, 0xfb, 0x62, 0x93, 0x73, 0xa4, 0x93, 0x0d, 0x73, 0x57, - 0xec, 0x13, 0x05, 0x58, 0xca, 0x9b, 0x12, 0x31, 0xbf, 0xbc, 0x7e, 0x30, 0xf0, 0x94, 0x0e, 0x1d, - 0x78, 0x1e, 0xee, 0x94, 0x4d, 0x44, 0x94, 0x92, 0xf7, 0x26, 0x4a, 0x91, 0x49, 0x4f, 0xf5, 0x4d, - 0xba, 0xf2, 0x05, 0x89, 0xff, 0x7e, 0xb3, 0x9f, 0xfc, 0xfb, 0x2b, 0x9a, 0xad, 0xaf, 0xe7, 0xf2, - 0xd5, 0xc2, 0x2d, 0x6d, 0x60, 0xda, 0x1e, 0x88, 0xbb, 0x37, 0x1d, 0xe9, 0x75, 0x30, 0x7d, 0x48, - 0x90, 0x69, 0x04, 0xd3, 0xf8, 0x73, 0x09, 0x71, 0x2a, 0x2d, 0x04, 0xff, 0x37, 0x70, 0x3a, 0xa3, - 0x6b, 0x78, 0x62, 0xcc, 0x35, 0x9c, 0x1e, 0xba, 0x86, 0x7f, 0x2e, 0x41, 0xdf, 0xd9, 0x60, 0x67, - 0x04, 0xbe, 0x16, 0x3a, 0xf8, 0x24, 0x64, 0xbb, 0x76, 0x5b, 0x63, 0x35, 0xec, 0x31, 0xfe, 0x4c, - 0xd7, 0x6e, 0xab, 0x03, 0xa2, 0x36, 0xf1, 0x76, 0x29, 0xe8, 0xf4, 0xdb, 0x30, 0x0d, 0x93, 0xfd, - 0xab, 0xca, 0x83, 0x3c, 0xe3, 0x05, 0xf7, 0xa0, 0x2e, 0x12, 0x26, 0x50, 0x9f, 0x4c, 0xea, 0xf7, - 0xf9, 0xfc, 0x7e, 0x33, 0x50, 0x95, 0x03, 0x12, 0x94, 0xc8, 0x49, 0xb7, 0x13, 0x43, 0x35, 0x97, - 0x38, 0xd9, 0xa3, 0x7c, 0x58, 0x02, 0x58, 0x25, 0xcc, 0xa5, 0x23, 0x26, 0xce, 0x8f, 0x4b, 0x3b, - 0xa1, 0x45, 0xda, 0x9e, 0x1f, 0x3a, 0x71, 0xbc, 0x07, 0x79, 0x37, 0xdc, 0xf5, 0x65, 0x28, 0x04, - 0x02, 0xee, 0x62, 0xd1, 0x9d, 0xf9, 0x83, 0x2e, 0xb2, 0x36, 0xb0, 0xa7, 0xe6, 0x6f, 0x85, 0xbe, - 0x94, 0x7f, 0x27, 0x41, 0x96, 0xf6, 0x6a, 0x0d, 0x7b, 0x7a, 0x64, 0x22, 0xa5, 0xb7, 0x30, 0x91, - 0xf7, 0x03, 0x30, 0x3a, 0xae, 0xf9, 0x1a, 0xe6, 0xf2, 0x95, 0xa5, 0x25, 0x0d, 0xf3, 0x35, 0x8c, - 0x9e, 0xf2, 0xb9, 0x9e, 0x1c, 0xc1, 0x75, 0x91, 0xbc, 0xe5, 0xbc, 0x3f, 0x0e, 0x93, 0x56, 0xaf, - 0xa3, 0xb1, 0xc3, 0xa4, 0x54, 0x68, 0xad, 0x5e, 0xa7, 0x79, 0xc7, 0x55, 0x6e, 0xc2, 0x64, 0xf3, - 0x0e, 0x7b, 0xbf, 0xe7, 0x24, 0x64, 0x1d, 0xdb, 0xe6, 0xde, 0x20, 0x73, 0xc4, 0x33, 0xa4, 0x80, - 0x3a, 0x3f, 0x71, 0x39, 0xff, 0x0b, 0xe3, 0xba, 0xfd, 0xdc, 0xe1, 0x3f, 0xff, 0x9b, 0x12, 0x14, - 0x22, 0x2b, 0x0a, 0x3d, 0x0a, 0xc7, 0x1b, 0xf5, 0x95, 0xf5, 0xda, 0xb2, 0xb6, 0xd6, 0x58, 0xe9, - 0x0b, 0xb0, 0xe7, 0x4a, 0xaf, 0xdf, 0x5d, 0xc8, 0xf1, 0xab, 0xaa, 0xc3, 0xa0, 0x37, 0xd5, 0x1a, - 0x8b, 0xb4, 0x19, 0xf4, 0xa6, 0x83, 0x6f, 0xd9, 0x1e, 0xa6, 0xd0, 0x8f, 0xc3, 0x89, 0x18, 0x68, - 0xff, 0xc2, 0xea, 0xd4, 0xeb, 0x77, 0x17, 0x0a, 0x9b, 0x0e, 0x66, 0xa2, 0x46, 0x31, 0x16, 0x61, - 0x76, 0x10, 0x83, 0x65, 0x35, 0xe4, 0x85, 0x39, 0xf9, 0xf5, 0xbb, 0x0b, 0x79, 0xa1, 0x3b, 0x08, - 0xfc, 0x3b, 0x7e, 0x63, 0xf5, 0xa3, 0x59, 0x38, 0xc1, 0xde, 0xb0, 0xd2, 0x58, 0x0c, 0xc8, 0x3e, - 0x78, 0x48, 0x9a, 0x0f, 0x57, 0x8d, 0xfe, 0x71, 0x02, 0xe5, 0x45, 0x98, 0xae, 0x5b, 0x1e, 0x76, - 0x76, 0xf4, 0xf0, 0xcf, 0x0b, 0xc7, 0xfe, 0x60, 0xef, 0x42, 0xe4, 0x95, 0x4d, 0x1e, 0xc1, 0x87, - 0x8b, 0x94, 0x6f, 0x91, 0x40, 0x6e, 0x18, 0x7a, 0x5b, 0x77, 0xde, 0x2a, 0x29, 0xf4, 0x94, 0xf8, - 0x51, 0x0a, 0x7e, 0x41, 0x24, 0x79, 0xae, 0x78, 0x69, 0x76, 0x31, 0x3c, 0xb8, 0x45, 0xd6, 0x12, - 0xd5, 0xc1, 0xec, 0xc7, 0x28, 0xc8, 0x9f, 0xe7, 0x5f, 0x02, 0x08, 0x2a, 0xd0, 0x49, 0x38, 0xde, - 0x58, 0xaa, 0xac, 0x56, 0xfc, 0x3c, 0x4d, 0x63, 0xb3, 0xb6, 0xc4, 0x7e, 0xf9, 0xfe, 0x08, 0x3a, - 0x06, 0x28, 0x5c, 0xe9, 0xff, 0xce, 0xdc, 0x51, 0x98, 0x0a, 0x97, 0xb3, 0x9f, 0x21, 0x4f, 0x94, - 0xaf, 0x41, 0x89, 0xfd, 0x46, 0x32, 0x31, 0x80, 0xb8, 0xa5, 0x99, 0x16, 0x1a, 0xf1, 0x93, 0xc3, - 0xb3, 0xbf, 0xfa, 0x5f, 0xd9, 0x4f, 0x54, 0x14, 0x18, 0x62, 0x85, 0xe0, 0xd5, 0xad, 0x72, 0x13, - 0x66, 0xe8, 0x8d, 0x70, 0xfa, 0xb3, 0x32, 0x9a, 0x29, 0xf8, 0x3f, 0xfa, 0x0d, 0x41, 0x42, 0x2f, - 0x79, 0x2e, 0xab, 0x4e, 0x07, 0xe8, 0xfe, 0xec, 0x95, 0x5f, 0x0c, 0x7e, 0x54, 0xc4, 0xef, 0xe0, - 0x48, 0x8a, 0xbf, 0xc6, 0x7b, 0x28, 0x9e, 0x10, 0x16, 0x5d, 0x5c, 0x85, 0x29, 0xdd, 0x30, 0x70, - 0x37, 0xd2, 0xbf, 0x11, 0xcf, 0xb6, 0x89, 0xd1, 0xca, 0x1c, 0x33, 0xe8, 0xda, 0x53, 0x90, 0x76, - 0xe9, 0xa4, 0x8c, 0x22, 0x21, 0xba, 0xc3, 0xc1, 0xcb, 0x35, 0x28, 0x32, 0x31, 0xf0, 0x47, 0x34, - 0x82, 0xc0, 0x7f, 0xe4, 0x04, 0xf2, 0x14, 0x4d, 0x8c, 0xc6, 0x82, 0xa9, 0x16, 0x36, 0xda, 0xba, - 0x83, 0x43, 0xa3, 0x39, 0xf8, 0xe9, 0xe2, 0x7f, 0xf9, 0xe9, 0xc7, 0xfd, 0x3d, 0xf4, 0x90, 0xd0, - 0xc5, 0x2c, 0x16, 0x55, 0xe6, 0xb4, 0x83, 0xf1, 0x62, 0x28, 0x8a, 0xf6, 0xf8, 0xb8, 0x0f, 0x6e, - 0xec, 0x5f, 0xf1, 0xc6, 0x4e, 0xc5, 0x49, 0x78, 0xa8, 0xa5, 0x02, 0xa7, 0xca, 0x2a, 0xca, 0x55, - 0x28, 0xec, 0x98, 0xed, 0xd0, 0x74, 0x1f, 0xdc, 0xca, 0xbf, 0xfe, 0xf4, 0xe3, 0x6c, 0xa1, 0x11, - 0x24, 0xce, 0x9a, 0x7b, 0xfa, 0xc9, 0x14, 0x4a, 0xfd, 0xd9, 0x70, 0x57, 0x7d, 0xed, 0xf4, 0x89, - 0x24, 0x9c, 0xe2, 0xc0, 0xdb, 0xba, 0x8b, 0x89, 0xe2, 0xc2, 0x9e, 0x7e, 0xf1, 0x82, 0x61, 0x9b, - 0x56, 0x90, 0x54, 0xa4, 0x0a, 0x8b, 0xd4, 0x2f, 0xf2, 0xfa, 0x21, 0x39, 0xad, 0xe1, 0x8a, 0x6e, - 0x6e, 0xf0, 0x67, 0x7b, 0x94, 0x36, 0xa4, 0x96, 0x6c, 0xd3, 0x22, 0x3e, 0x57, 0x0b, 0x5b, 0x76, - 0x47, 0x9c, 0x57, 0xa4, 0x1f, 0xe8, 0x1a, 0xa4, 0xf5, 0x8e, 0xdd, 0xb3, 0xf8, 0xfb, 0x6d, 0xd5, - 0xc7, 0x89, 0x2d, 0xfc, 0xed, 0x37, 0xe7, 0x8f, 0x32, 0xb2, 0x6e, 0xeb, 0xe6, 0xa2, 0x69, 0x5f, - 0xe8, 0xe8, 0xde, 0x1e, 0x99, 0xe4, 0xdf, 0xf8, 0xcc, 0x63, 0xc0, 0xdb, 0xab, 0x5b, 0xde, 0x27, - 0xff, 0xe0, 0x67, 0xce, 0x4b, 0x2a, 0xc7, 0x67, 0x69, 0x47, 0xa5, 0x0b, 0x93, 0xcb, 0xd8, 0x38, - 0xa0, 0xc1, 0x7a, 0x5f, 0x83, 0x17, 0x79, 0x83, 0x27, 0x07, 0x1b, 0x64, 0xbf, 0x23, 0xb8, 0x8c, - 0x8d, 0x50, 0xb3, 0xcb, 0xd8, 0x88, 0xb6, 0x58, 0x5d, 0xfe, 0xad, 0xdf, 0x3b, 0x75, 0xe4, 0x7d, - 0x9f, 0x3f, 0x75, 0x64, 0xe8, 0x94, 0x29, 0xa3, 0x7f, 0xe5, 0xc6, 0x9f, 0xa9, 0xff, 0x2d, 0xc1, - 0x89, 0x7e, 0xf3, 0xa0, 0x5b, 0xfb, 0xc3, 0xde, 0x3c, 0xb8, 0x02, 0xc9, 0x8a, 0xb5, 0x8f, 0x4e, - 0xb0, 0xd7, 0x5c, 0xb5, 0x9e, 0xd3, 0x16, 0xc7, 0x3c, 0xc9, 0xf7, 0x96, 0xd3, 0x8e, 0x1e, 0x29, - 0xf0, 0x5f, 0xe6, 0xfa, 0xee, 0x43, 0x3e, 0x77, 0x90, 0xa9, 0x58, 0xfb, 0xe2, 0xa1, 0x83, 0x47, - 0xc7, 0x7c, 0xe8, 0x40, 0xb7, 0xf6, 0xbb, 0xdb, 0x87, 0x7d, 0xdf, 0xe0, 0x03, 0x97, 0xe1, 0x01, - 0xce, 0x23, 0xd7, 0xd3, 0x6f, 0x9a, 0xd6, 0xae, 0x2f, 0xac, 0xfc, 0x9b, 0xb3, 0xe2, 0x18, 0x9f, - 0x10, 0x51, 0x2a, 0x44, 0x76, 0x50, 0x02, 0xe7, 0x0e, 0x7c, 0x30, 0x61, 0xee, 0xe0, 0x6c, 0xf2, - 0xdc, 0x88, 0x75, 0x73, 0xd0, 0x62, 0x18, 0xb2, 0x7a, 0x86, 0x4e, 0xef, 0xc8, 0xd7, 0xc3, 0x46, - 0x26, 0x93, 0x3f, 0x2c, 0x41, 0xf1, 0x9a, 0xe9, 0x7a, 0xb6, 0x63, 0x1a, 0x7a, 0x9b, 0x6e, 0xa4, - 0xbf, 0x6b, 0x6c, 0xef, 0xbf, 0x9a, 0x25, 0x4b, 0x81, 0x2f, 0xaa, 0x3d, 0xe1, 0x80, 0xa7, 0x6f, - 0xe9, 0x6d, 0xe6, 0x79, 0x87, 0xf5, 0x6e, 0x3f, 0xdb, 0x43, 0xfb, 0xcb, 0x61, 0x2a, 0x0c, 0xb7, - 0x9c, 0x98, 0x95, 0x94, 0xef, 0x4f, 0x40, 0x89, 0x86, 0x0c, 0x2e, 0x3d, 0x10, 0x46, 0x8f, 0x1c, - 0x5d, 0x87, 0x94, 0xa3, 0x7b, 0xdc, 0x09, 0xa9, 0x5e, 0x39, 0xf4, 0x4a, 0x64, 0xad, 0x50, 0x1a, - 0xe8, 0xdd, 0x90, 0xe9, 0xe8, 0x77, 0x34, 0x4a, 0x2f, 0xf1, 0x96, 0xe8, 0x4d, 0x76, 0xf4, 0x3b, - 0xa4, 0x7f, 0xe8, 0x9b, 0xa0, 0x44, 0x48, 0x1a, 0x7b, 0xba, 0xb5, 0x8b, 0x19, 0xe5, 0xe4, 0x5b, - 0xa2, 0x5c, 0xe8, 0xe8, 0x77, 0x96, 0x28, 0x35, 0x42, 0x9f, 0x6b, 0xac, 0x5f, 0x92, 0xf8, 0xe9, - 0x2a, 0xca, 0x18, 0xa4, 0x83, 0x6c, 0xf8, 0x5f, 0xb4, 0x51, 0x71, 0x68, 0xf9, 0xec, 0x30, 0xde, - 0xf7, 0xb1, 0xb5, 0x5a, 0x20, 0xdd, 0xfb, 0xdc, 0x9b, 0xf3, 0x12, 0x6b, 0xb5, 0x64, 0x0c, 0xb0, - 0x3d, 0xc7, 0x4e, 0x8d, 0x69, 0x34, 0xb3, 0x9d, 0x18, 0x19, 0x84, 0x16, 0x44, 0x10, 0xca, 0x08, - 0x02, 0xc3, 0x26, 0xf5, 0x7c, 0x0c, 0x7f, 0x2a, 0x41, 0x6e, 0x39, 0xe4, 0x27, 0xce, 0xc2, 0x64, - 0xc7, 0xb6, 0xcc, 0x9b, 0xd8, 0xf1, 0x4f, 0x9d, 0xb3, 0x4f, 0x34, 0x07, 0x19, 0xf6, 0x0b, 0x90, - 0xde, 0xbe, 0xd8, 0x6d, 0x12, 0xdf, 0x04, 0xeb, 0x36, 0xde, 0x76, 0x4d, 0xc1, 0x67, 0x55, 0x7c, - 0xa2, 0x87, 0x41, 0x76, 0xb1, 0xd1, 0x73, 0x4c, 0x6f, 0x5f, 0x33, 0x6c, 0xcb, 0xd3, 0x0d, 0x8f, - 0x1f, 0x56, 0x2a, 0x89, 0xf2, 0x25, 0x56, 0x4c, 0x88, 0xb4, 0xb0, 0xa7, 0x9b, 0x6d, 0x76, 0x19, - 0x3b, 0xab, 0x8a, 0x4f, 0xb4, 0x12, 0xda, 0xfe, 0x4f, 0xfb, 0xbb, 0x13, 0xb1, 0x1c, 0x15, 0xbf, - 0x37, 0x4f, 0x85, 0x99, 0x8e, 0xfa, 0x48, 0x70, 0x56, 0x80, 0x8f, 0x79, 0x07, 0x32, 0x02, 0x0c, - 0x3d, 0x04, 0xa5, 0xae, 0x63, 0x53, 0xab, 0xdf, 0x35, 0x0d, 0xad, 0xe7, 0x98, 0x7c, 0xdc, 0x05, - 0x5e, 0xbc, 0x69, 0x1a, 0x5b, 0x8e, 0x89, 0x1e, 0x05, 0xe4, 0xda, 0x06, 0xbd, 0x08, 0xae, 0x5b, - 0xad, 0x36, 0x51, 0xd8, 0x26, 0x3b, 0x6b, 0x96, 0x55, 0x65, 0x56, 0x73, 0x8d, 0x56, 0x6c, 0x39, - 0xa6, 0xcb, 0xdb, 0xb9, 0x3b, 0x19, 0x3e, 0x5b, 0xb4, 0x04, 0xb2, 0xdd, 0xc5, 0x4e, 0x24, 0xe3, - 0xc3, 0x96, 0xcf, 0xec, 0x6f, 0x7c, 0xe6, 0xb1, 0x19, 0x3e, 0x1e, 0x9e, 0xf3, 0x61, 0xaf, 0x38, - 0xaa, 0x25, 0x81, 0x21, 0x52, 0x41, 0x2f, 0x47, 0x0e, 0xc6, 0xf7, 0xb6, 0x83, 0x37, 0x99, 0x66, - 0x06, 0xa4, 0xa0, 0x62, 0xed, 0x57, 0x67, 0x7f, 0x2d, 0x20, 0xcd, 0xe3, 0xc5, 0x4d, 0x7a, 0xd2, - 0x28, 0x7c, 0x48, 0x9e, 0x92, 0x41, 0xc7, 0x20, 0xfd, 0xaa, 0x6e, 0xb6, 0xc5, 0xaf, 0xfb, 0xaa, - 0xfc, 0x0b, 0x95, 0xfd, 0x83, 0x9f, 0x29, 0x9a, 0xc1, 0x51, 0x86, 0xb1, 0xbe, 0x6a, 0x5b, 0xad, - 0xe8, 0x79, 0x4f, 0xb4, 0x04, 0x69, 0xcf, 0xbe, 0x89, 0x2d, 0x3e, 0xa3, 0xd5, 0x47, 0x0e, 0xe1, - 0x23, 0xa8, 0x1c, 0x15, 0x7d, 0x03, 0xc8, 0x2d, 0xdc, 0xc6, 0xbb, 0x2c, 0x95, 0xb0, 0xa7, 0x3b, - 0x98, 0xe5, 0xb4, 0xef, 0xc9, 0x03, 0x28, 0xf9, 0xa4, 0x1a, 0x94, 0x12, 0xda, 0x8c, 0x86, 0x4e, - 0x93, 0xfe, 0x9d, 0xae, 0xd8, 0x31, 0x86, 0x96, 0x4a, 0x58, 0x5d, 0x46, 0x42, 0xad, 0x87, 0x41, - 0xee, 0x59, 0xdb, 0xb6, 0x45, 0x7f, 0x14, 0x93, 0x27, 0xb1, 0x32, 0xec, 0xb2, 0x84, 0x5f, 0xce, - 0x2f, 0x4b, 0x6c, 0x42, 0x31, 0x00, 0xa5, 0x4b, 0x3a, 0x7b, 0xd8, 0x25, 0x5d, 0xf0, 0x09, 0x10, - 0x10, 0xb4, 0x06, 0x10, 0x28, 0x0d, 0x9a, 0x66, 0xcf, 0x0d, 0x9f, 0xb1, 0x40, 0xfd, 0x84, 0x07, - 0x13, 0x22, 0x80, 0x2c, 0x98, 0xee, 0x98, 0x96, 0xe6, 0xe2, 0xf6, 0x8e, 0xc6, 0x39, 0x47, 0xe8, - 0xe6, 0x28, 0xfb, 0x9f, 0x3f, 0xc4, 0x6c, 0xfe, 0xf6, 0x67, 0x1e, 0x2b, 0x05, 0xae, 0xd3, 0xc2, - 0xe3, 0x8b, 0x4f, 0x3e, 0xa5, 0x4e, 0x75, 0x4c, 0xab, 0x81, 0xdb, 0x3b, 0xcb, 0x3e, 0x61, 0xf4, - 0x2e, 0x38, 0x19, 0x30, 0xc4, 0xb6, 0xb4, 0x3d, 0xbb, 0xdd, 0xd2, 0x1c, 0xbc, 0xa3, 0x19, 0xd4, - 0xf1, 0xcb, 0x53, 0x36, 0x1e, 0xf7, 0x41, 0x36, 0xac, 0x6b, 0x76, 0xbb, 0xa5, 0xe2, 0x9d, 0x25, - 0x52, 0x8d, 0xce, 0x40, 0xc0, 0x0d, 0xcd, 0x6c, 0xb9, 0xb3, 0x85, 0x85, 0xe4, 0xb9, 0x94, 0x9a, - 0xf7, 0x0b, 0xeb, 0x2d, 0xb7, 0x9c, 0xf9, 0xe0, 0x1b, 0xf3, 0x47, 0xbe, 0xf8, 0xc6, 0xfc, 0x11, - 0xe5, 0x2a, 0x7d, 0xb5, 0x8d, 0x2f, 0x2d, 0xec, 0xa2, 0x2b, 0x90, 0xd5, 0xc5, 0x07, 0x7b, 0xf8, - 0xf0, 0x80, 0xa5, 0x19, 0x80, 0x2a, 0x9f, 0x92, 0x20, 0xbd, 0x7c, 0x63, 0x53, 0x37, 0x1d, 0x54, - 0x23, 0x81, 0x91, 0x90, 0xd5, 0x71, 0x57, 0x79, 0x20, 0xde, 0x62, 0x99, 0xaf, 0x0f, 0x4b, 0x0f, - 0x67, 0xab, 0xa7, 0x7f, 0xe3, 0x33, 0x8f, 0xdd, 0xcf, 0xc9, 0xdc, 0xe8, 0xcb, 0x14, 0x0b, 0x7a, - 0xfd, 0x19, 0xe4, 0xd0, 0x98, 0xaf, 0xc3, 0x24, 0xeb, 0xaa, 0x8b, 0x5e, 0x80, 0x89, 0x2e, 0xf9, - 0x83, 0x9f, 0xb8, 0x3e, 0x35, 0x54, 0xe6, 0x29, 0x7c, 0x58, 0x42, 0x18, 0x9e, 0xf2, 0x1d, 0x09, - 0x80, 0xe5, 0x1b, 0x37, 0x9a, 0x8e, 0xd9, 0x6d, 0x63, 0xef, 0xed, 0x1a, 0xfb, 0x16, 0x1c, 0x0d, - 0x65, 0x0e, 0x1d, 0xe3, 0xf0, 0xe3, 0x9f, 0x0e, 0x72, 0x88, 0x8e, 0x11, 0x4b, 0xb6, 0xe5, 0x7a, - 0x3e, 0xd9, 0xe4, 0xe1, 0xc9, 0x2e, 0xbb, 0xde, 0x20, 0x67, 0x5f, 0x82, 0x5c, 0xc0, 0x0c, 0x17, - 0xd5, 0x21, 0xe3, 0xf1, 0xbf, 0x39, 0x83, 0x95, 0xe1, 0x0c, 0x16, 0x68, 0x61, 0x26, 0xfb, 0xe8, - 0xca, 0x5f, 0x4a, 0x00, 0xa1, 0x35, 0xf2, 0xd7, 0x53, 0xc6, 0x48, 0x78, 0xc6, 0x95, 0x73, 0xf2, - 0x9e, 0xc3, 0x33, 0x46, 0x20, 0xc4, 0xd4, 0xef, 0x4a, 0xc0, 0xf4, 0x96, 0x58, 0xbd, 0x7f, 0xfd, - 0x79, 0xb0, 0x05, 0x93, 0xd8, 0xf2, 0x1c, 0xd3, 0xbf, 0x31, 0xf0, 0xf8, 0xb0, 0x39, 0x8f, 0x19, - 0x54, 0xcd, 0xf2, 0x9c, 0xfd, 0xb0, 0x04, 0x08, 0x5a, 0x21, 0x7e, 0x7c, 0x34, 0x09, 0xb3, 0xc3, - 0x50, 0xd1, 0x59, 0x28, 0x19, 0x0e, 0xa6, 0x05, 0xd1, 0x77, 0x38, 0x8b, 0xa2, 0x98, 0x9b, 0x1d, - 0x15, 0x88, 0x67, 0x49, 0x84, 0x8b, 0x80, 0xde, 0x9b, 0x2b, 0x59, 0x0c, 0x28, 0x50, 0xc3, 0xd3, - 0x84, 0x92, 0x78, 0x2a, 0x67, 0x5b, 0x6f, 0xeb, 0x96, 0x21, 0x5c, 0xee, 0x43, 0xd9, 0x7c, 0xf1, - 0xdc, 0x4e, 0x95, 0x91, 0x40, 0x35, 0x98, 0x14, 0xd4, 0x52, 0x87, 0xa7, 0x26, 0x70, 0xd1, 0x69, - 0xc8, 0x87, 0x0d, 0x03, 0xf5, 0x46, 0x52, 0x6a, 0x2e, 0x64, 0x17, 0x46, 0x59, 0x9e, 0xf4, 0x81, - 0x96, 0x87, 0x3b, 0x7c, 0x3f, 0x94, 0x84, 0x29, 0x15, 0xb7, 0xfe, 0xe6, 0x4f, 0xcb, 0x26, 0x00, - 0x5b, 0xaa, 0x44, 0x93, 0xf2, 0x99, 0xb9, 0x87, 0xf5, 0x9e, 0x65, 0x44, 0x96, 0x5d, 0xef, 0x6b, - 0x35, 0x43, 0xbf, 0x93, 0x80, 0x7c, 0x78, 0x86, 0xfe, 0x56, 0x1a, 0x2d, 0xb4, 0x1e, 0xa8, 0x29, - 0xb6, 0x51, 0xfe, 0xf0, 0x30, 0x35, 0x35, 0x20, 0xcd, 0x23, 0xf4, 0xd3, 0x97, 0x92, 0x90, 0xe6, - 0x97, 0x6e, 0x37, 0x06, 0x7c, 0xdb, 0x91, 0x8f, 0x30, 0x17, 0xc4, 0x3b, 0xd6, 0xb1, 0xae, 0xed, - 0x83, 0x50, 0x24, 0x41, 0x7d, 0xe4, 0x26, 0xaf, 0x74, 0xae, 0x40, 0x63, 0xf3, 0xe0, 0x60, 0x13, - 0x9a, 0x87, 0x1c, 0x01, 0x0b, 0xf4, 0x30, 0x81, 0x81, 0x8e, 0x7e, 0xa7, 0xc6, 0x4a, 0xd0, 0x45, - 0x40, 0x7b, 0x7e, 0xa6, 0x45, 0x0b, 0x18, 0x21, 0x9d, 0x2b, 0xd0, 0x17, 0xc9, 0xa7, 0x82, 0x5a, - 0x81, 0x72, 0x3f, 0x00, 0xe9, 0x89, 0xc6, 0xb2, 0x92, 0xfc, 0x67, 0xb2, 0x49, 0xc9, 0x32, 0xcd, - 0x4c, 0x7e, 0x9b, 0xc4, 0xdc, 0xe4, 0xbe, 0xf0, 0x9f, 0x47, 0x29, 0xcd, 0x31, 0x16, 0xc6, 0x9f, - 0xbd, 0x39, 0x3f, 0xb7, 0xaf, 0x77, 0xda, 0x65, 0x25, 0x86, 0x8e, 0x12, 0x97, 0x91, 0x20, 0xce, - 0x73, 0x34, 0x7d, 0x80, 0xea, 0x20, 0xdf, 0xc4, 0xfb, 0x9a, 0xc3, 0x7f, 0x49, 0x5e, 0xdb, 0xc1, - 0xe2, 0x2d, 0xf4, 0x13, 0x8b, 0x31, 0x39, 0xe2, 0xc5, 0x25, 0xdb, 0xb4, 0xf8, 0x16, 0x66, 0xf1, - 0x26, 0xde, 0x57, 0x39, 0xde, 0x55, 0x8c, 0xcb, 0x0f, 0x90, 0xd5, 0xf2, 0xfa, 0x1f, 0xfc, 0xcc, - 0xf9, 0x93, 0xa1, 0x7c, 0xe7, 0x1d, 0x3f, 0xb1, 0xc7, 0xa6, 0x98, 0x38, 0xbe, 0x28, 0x30, 0x42, - 0xa1, 0xdb, 0xdb, 0x10, 0x8a, 0x15, 0xa4, 0x83, 0x63, 0x90, 0x00, 0x3f, 0x12, 0x83, 0x84, 0x96, - 0xe8, 0xf3, 0x81, 0x0d, 0x48, 0x8c, 0x1a, 0x4d, 0x58, 0x3a, 0x39, 0x12, 0x5d, 0xf9, 0x47, 0x94, - 0xff, 0x24, 0xc1, 0x89, 0x01, 0x69, 0xf6, 0xbb, 0x6c, 0x00, 0x72, 0x42, 0x95, 0x54, 0x2a, 0xc4, - 0x05, 0x9e, 0x7b, 0x5b, 0x1c, 0x53, 0xce, 0x80, 0x21, 0x78, 0x7b, 0x8c, 0x19, 0xd7, 0x64, 0xbf, - 0x2a, 0xc1, 0x4c, 0xb8, 0x03, 0xfe, 0x50, 0x1a, 0x90, 0x0f, 0x37, 0xcd, 0x07, 0xf1, 0xc0, 0x38, - 0x83, 0x08, 0xf7, 0x3f, 0x42, 0x04, 0xdd, 0x08, 0x34, 0x06, 0x4b, 0x27, 0x5e, 0x1c, 0x9b, 0x29, - 0xa2, 0x63, 0xb1, 0x9a, 0x83, 0xcd, 0xcd, 0x97, 0x24, 0x48, 0x6d, 0xda, 0x76, 0x1b, 0xbd, 0x17, - 0xa6, 0x2c, 0xdb, 0xd3, 0xc8, 0xca, 0xc2, 0x2d, 0x8d, 0xa7, 0x0e, 0x98, 0x36, 0xae, 0x1d, 0xc8, - 0xab, 0x3f, 0x7c, 0x73, 0x7e, 0x10, 0x33, 0x6e, 0xcf, 0xa1, 0x64, 0xd9, 0x5e, 0x95, 0x02, 0x35, - 0x59, 0x76, 0x61, 0x07, 0x0a, 0xd1, 0xe6, 0x98, 0xc6, 0xae, 0x8c, 0x6a, 0xae, 0x30, 0xb2, 0xa9, - 0xfc, 0x76, 0xa8, 0x1d, 0xf6, 0xb3, 0x43, 0x7f, 0x42, 0x66, 0xee, 0x9b, 0x40, 0xbe, 0xd1, 0x7f, - 0x3d, 0xf4, 0x2a, 0x4c, 0x8a, 0xeb, 0xa0, 0xd2, 0xb8, 0x57, 0x4d, 0xc3, 0xfc, 0xe4, 0xc8, 0x34, - 0x5f, 0xfb, 0xb9, 0x04, 0x9c, 0x58, 0xb2, 0x2d, 0x97, 0x27, 0x7a, 0xf8, 0xaa, 0x66, 0xc9, 0xe5, - 0x7d, 0xf4, 0xf0, 0x90, 0x34, 0x54, 0x7e, 0x30, 0xd9, 0x74, 0x03, 0x4a, 0xc4, 0xc4, 0x1a, 0xb6, - 0xf5, 0x16, 0x73, 0x4d, 0x05, 0xbb, 0xdd, 0xe2, 0x3d, 0xba, 0x89, 0xf7, 0x09, 0x5d, 0x0b, 0xdf, - 0x8e, 0xd0, 0x4d, 0xde, 0x1b, 0x5d, 0x0b, 0xdf, 0x0e, 0xd1, 0x0d, 0xce, 0x0c, 0xa5, 0x22, 0x37, - 0x90, 0xae, 0x40, 0x92, 0xa8, 0xc2, 0x89, 0x43, 0x28, 0x0f, 0x82, 0x10, 0x32, 0x6b, 0x0d, 0x38, - 0xc1, 0x33, 0x05, 0xee, 0xc6, 0x0e, 0xe5, 0x28, 0xa6, 0x03, 0x7a, 0x11, 0xef, 0xc7, 0xa4, 0x0d, - 0xf2, 0x63, 0xa5, 0x0d, 0xce, 0xff, 0xbc, 0x04, 0x10, 0xe4, 0xcc, 0xd0, 0xa3, 0x70, 0xbc, 0xba, - 0xb1, 0xbe, 0x1c, 0x5c, 0xc6, 0x08, 0x6d, 0xad, 0x8b, 0x53, 0x1a, 0x6e, 0x17, 0x1b, 0xe6, 0x8e, - 0x89, 0x5b, 0xe8, 0x21, 0x98, 0x89, 0x42, 0x93, 0xaf, 0xda, 0xb2, 0x2c, 0xcd, 0xe5, 0x5f, 0xbf, - 0xbb, 0x90, 0x61, 0x31, 0x02, 0x6e, 0xa1, 0x73, 0x70, 0x74, 0x10, 0xae, 0xbe, 0xbe, 0x22, 0x27, - 0xe6, 0x0a, 0xaf, 0xdf, 0x5d, 0xc8, 0xfa, 0xc1, 0x04, 0x52, 0x00, 0x85, 0x21, 0x39, 0xbd, 0xe4, - 0x1c, 0xbc, 0x7e, 0x77, 0x21, 0xcd, 0x96, 0x0c, 0xbf, 0xc5, 0xf1, 0x8d, 0x00, 0x75, 0x6b, 0xc7, - 0xd1, 0x0d, 0xaa, 0x1a, 0xe6, 0xe0, 0x58, 0x7d, 0xfd, 0xaa, 0x5a, 0x59, 0x6a, 0xd6, 0x37, 0xd6, - 0xfb, 0x4e, 0x04, 0x44, 0xeb, 0x96, 0x37, 0xb6, 0xaa, 0xab, 0x35, 0xad, 0x51, 0x5f, 0x59, 0x67, - 0x57, 0xae, 0x22, 0x75, 0xef, 0x59, 0x6f, 0xd6, 0xd7, 0x6a, 0x72, 0xa2, 0x7a, 0x65, 0xe8, 0x76, - 0xdc, 0x7d, 0x91, 0xc5, 0x18, 0x98, 0xa3, 0xc8, 0x46, 0xdc, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, - 0xf0, 0xde, 0x01, 0x06, 0xe8, 0xa7, 0x00, 0x00, + 0x44, 0xcf, 0xc3, 0x24, 0x57, 0x0a, 0xfe, 0xb5, 0xea, 0x38, 0x6f, 0x59, 0x44, 0x67, 0xdc, 0x5f, + 0x4e, 0x33, 0x9d, 0x81, 0x4e, 0x43, 0x3e, 0xa6, 0x37, 0xb9, 0x9b, 0x41, 0x47, 0xe8, 0x73, 0x45, + 0x7c, 0x08, 0x5a, 0xd7, 0x31, 0x6d, 0xc7, 0xf4, 0xf6, 0xa9, 0xe9, 0x49, 0xaa, 0xb2, 0xa8, 0xd8, + 0xe4, 0xe5, 0x4a, 0x1b, 0x4a, 0x0d, 0xb3, 0xd3, 0xa5, 0x1e, 0x1e, 0xef, 0xfa, 0xe5, 0xa0, 0x83, + 0xd2, 0x18, 0x1d, 0x1c, 0xda, 0xb5, 0xc4, 0x40, 0xd7, 0xce, 0xff, 0x86, 0xc4, 0x6d, 0x43, 0x7d, + 0xf9, 0x4a, 0x5b, 0xdf, 0x45, 0x17, 0xe1, 0x68, 0x75, 0x75, 0x63, 0xe9, 0x65, 0xad, 0xbe, 0xac, + 0x5d, 0x59, 0xad, 0xac, 0x04, 0xa7, 0x78, 0xe7, 0x8e, 0xdd, 0xb9, 0xbb, 0x80, 0x42, 0xb0, 0x5b, + 0x16, 0x75, 0x71, 0xd0, 0x05, 0x98, 0x89, 0xa2, 0x54, 0xaa, 0x8d, 0xda, 0x7a, 0x53, 0x96, 0xe6, + 0x8e, 0xde, 0xb9, 0xbb, 0x30, 0x15, 0xc2, 0xa8, 0x6c, 0xbb, 0xd8, 0xf2, 0x06, 0x11, 0x96, 0x36, + 0xd6, 0xd6, 0xea, 0x4d, 0x39, 0x31, 0x80, 0xb0, 0x64, 0x77, 0x3a, 0xa6, 0x87, 0x1e, 0x86, 0xa9, + 0x28, 0xc2, 0x7a, 0x7d, 0x55, 0x4e, 0xce, 0xa1, 0x3b, 0x77, 0x17, 0x8a, 0x21, 0xe8, 0x75, 0xb3, + 0x3d, 0x97, 0xf9, 0xe0, 0x8f, 0x9c, 0x3a, 0xf2, 0xc9, 0x7f, 0x7c, 0x4a, 0xaa, 0xae, 0xbe, 0x2b, + 0x0b, 0xef, 0xfb, 0x13, 0x30, 0xdf, 0xef, 0x29, 0x79, 0x66, 0x07, 0xbb, 0x9e, 0xde, 0xe9, 0x0e, + 0x73, 0xda, 0x9f, 0x83, 0x6c, 0x53, 0xc0, 0x1c, 0x3a, 0x96, 0xb9, 0x7b, 0x48, 0x57, 0xb5, 0xe8, + 0x37, 0x25, 0x7c, 0xd5, 0x4b, 0x63, 0xfa, 0xaa, 0xfe, 0x38, 0xee, 0xc9, 0x59, 0xfd, 0xed, 0x06, + 0xdc, 0x17, 0x30, 0x71, 0xdb, 0x30, 0x89, 0x12, 0x61, 0xab, 0x99, 0xb1, 0x45, 0xf6, 0x65, 0x96, + 0xd4, 0x12, 0x65, 0x74, 0xb0, 0xda, 0x99, 0x1b, 0x91, 0x5e, 0x98, 0x1b, 0xe1, 0x1b, 0xcf, 0x8d, + 0xd6, 0x90, 0x43, 0xd4, 0xe1, 0xa8, 0x19, 0x56, 0xfe, 0x73, 0x16, 0x26, 0x55, 0xfc, 0xbe, 0x1e, + 0x76, 0x3d, 0xf4, 0x04, 0xa4, 0xb0, 0xb1, 0x67, 0x0f, 0xae, 0x4c, 0x3e, 0xca, 0xc5, 0x9a, 0xb1, + 0x67, 0x73, 0xe0, 0xab, 0x47, 0x54, 0x0a, 0x8c, 0x2e, 0xc3, 0xc4, 0x4e, 0xbb, 0xe7, 0xee, 0x71, + 0x85, 0x73, 0x6a, 0x10, 0xeb, 0x0a, 0xa9, 0x0e, 0xd0, 0x18, 0x38, 0x69, 0x8c, 0x3e, 0xa7, 0x95, + 0x1c, 0xd6, 0x18, 0x7d, 0x45, 0x2b, 0x68, 0x8c, 0x00, 0xa3, 0x25, 0x00, 0xd3, 0x32, 0x3d, 0xcd, + 0xd8, 0xd3, 0x4d, 0x8b, 0x7b, 0xae, 0x4a, 0x1c, 0xaa, 0xe9, 0x2d, 0x11, 0x90, 0x00, 0x3f, 0x6b, + 0x8a, 0x32, 0xd2, 0xe3, 0xf7, 0xf5, 0xb0, 0x23, 0xbc, 0xd7, 0x98, 0x1e, 0xbf, 0x87, 0x54, 0x87, + 0x7a, 0x4c, 0xc1, 0x89, 0xb7, 0xcf, 0xae, 0x7a, 0x7b, 0xb7, 0xf9, 0x03, 0x26, 0x0b, 0x83, 0xa8, + 0xf4, 0xa6, 0x77, 0xf3, 0x76, 0x80, 0x3c, 0x69, 0xb0, 0x12, 0xf4, 0x2c, 0xa4, 0x0d, 0xaa, 0x04, + 0xe8, 0x05, 0xcc, 0xdc, 0xa5, 0xf9, 0x18, 0x64, 0x5a, 0x1f, 0xe0, 0x72, 0x04, 0xb4, 0x01, 0xc5, + 0xb6, 0xe9, 0x7a, 0x9a, 0x6b, 0xe9, 0x5d, 0x77, 0xcf, 0xf6, 0x5c, 0xfa, 0x86, 0x58, 0xee, 0xd2, + 0x43, 0x83, 0x24, 0x56, 0x4d, 0xd7, 0x6b, 0x08, 0xb0, 0x80, 0x52, 0xa1, 0x1d, 0x2e, 0x27, 0x04, + 0xed, 0x9d, 0x1d, 0xec, 0xf8, 0x14, 0xe9, 0xdb, 0x63, 0xb1, 0x04, 0x37, 0x08, 0x9c, 0xc0, 0x0c, + 0x11, 0xb4, 0xc3, 0xe5, 0xe8, 0xeb, 0x60, 0xba, 0x6d, 0xeb, 0x2d, 0x9f, 0x9e, 0x66, 0xec, 0xf5, + 0xac, 0x1b, 0xb3, 0x45, 0x4a, 0xf5, 0x7c, 0x4c, 0x37, 0x6d, 0xbd, 0x25, 0x90, 0x97, 0x08, 0x68, + 0x40, 0x79, 0xaa, 0xdd, 0x5f, 0x87, 0x34, 0x98, 0xd1, 0xbb, 0xdd, 0xf6, 0x7e, 0x3f, 0xf9, 0x12, + 0x25, 0xff, 0xc8, 0x20, 0xf9, 0x0a, 0x81, 0x1e, 0x42, 0x1f, 0xe9, 0x03, 0x95, 0x68, 0x0b, 0xe4, + 0xae, 0x83, 0xe9, 0xc9, 0x0c, 0x66, 0xc5, 0xf4, 0x36, 0xbd, 0x23, 0x99, 0xbb, 0x74, 0x6e, 0x90, + 0xf8, 0x26, 0x83, 0xdc, 0xe4, 0x80, 0x01, 0xe5, 0x52, 0x37, 0x5a, 0xc3, 0xc8, 0xda, 0x06, 0xa6, + 0x77, 0xb8, 0x39, 0xd9, 0xa9, 0xe1, 0x64, 0x29, 0x64, 0x2c, 0xd9, 0x48, 0x0d, 0xba, 0x02, 0x39, + 0xf6, 0x6e, 0x0f, 0x71, 0x1e, 0x30, 0xbd, 0x5b, 0x99, 0xbb, 0x74, 0x26, 0x66, 0xb9, 0x52, 0xa0, + 0xeb, 0xb6, 0x87, 0x03, 0x62, 0x80, 0xfd, 0x42, 0xb4, 0x0d, 0x47, 0xe9, 0x3d, 0xd3, 0x7d, 0x2d, + 0xea, 0x22, 0xce, 0x4e, 0x53, 0x8a, 0x8f, 0x0e, 0x52, 0xa4, 0x8f, 0x2c, 0xed, 0x5f, 0x0f, 0xfb, + 0x8a, 0x01, 0xe9, 0xe9, 0x9b, 0x83, 0xb5, 0x44, 0xd2, 0x76, 0x4c, 0x4b, 0x6f, 0x9b, 0x6f, 0x60, + 0x16, 0x4f, 0xd1, 0x27, 0x16, 0x62, 0x25, 0xed, 0x0a, 0x87, 0xa3, 0x76, 0x30, 0x24, 0x69, 0x3b, + 0xe1, 0xf2, 0xea, 0x24, 0xcf, 0x82, 0xf8, 0x77, 0x86, 0x27, 0xe5, 0x0c, 0xbb, 0x27, 0x7c, 0x2d, + 0x95, 0x01, 0x39, 0xa7, 0x9c, 0x85, 0x5c, 0x48, 0x4f, 0x11, 0x23, 0xc5, 0xfd, 0x7c, 0x9e, 0x5b, + 0x11, 0x9f, 0x4a, 0x11, 0xf2, 0x61, 0xd5, 0xa4, 0x7c, 0x48, 0x82, 0x5c, 0x48, 0xe9, 0x10, 0x4c, + 0x11, 0x5c, 0x73, 0x4c, 0x11, 0x3a, 0x9f, 0x11, 0x81, 0x8e, 0xa8, 0x4f, 0xd0, 0x30, 0x2a, 0x4f, + 0x0b, 0x79, 0x9c, 0x85, 0xe6, 0x21, 0xd7, 0xbd, 0xd4, 0xf5, 0x41, 0x92, 0x14, 0x04, 0xba, 0x97, + 0xba, 0x02, 0xe0, 0x34, 0xe4, 0xc9, 0xd0, 0xb5, 0x70, 0x04, 0x9f, 0x55, 0x73, 0xa4, 0x8c, 0x83, + 0x28, 0xbf, 0x96, 0x00, 0xb9, 0x5f, 0x99, 0xa1, 0x67, 0x20, 0x45, 0xb4, 0x38, 0x57, 0xd3, 0x73, + 0x03, 0x31, 0x82, 0x6f, 0x35, 0x59, 0xb4, 0xf9, 0x21, 0x12, 0xeb, 0x50, 0x0c, 0x74, 0x82, 0x68, + 0x30, 0xdd, 0xb4, 0x34, 0xb3, 0x25, 0xde, 0xa9, 0xa4, 0xdf, 0xf5, 0x16, 0x89, 0x66, 0x0d, 0x91, + 0x13, 0xd1, 0x98, 0xed, 0x39, 0x20, 0x25, 0xd1, 0x97, 0x3e, 0x51, 0x4b, 0x46, 0x5f, 0x3e, 0x65, + 0x25, 0xe2, 0x56, 0xb3, 0xd7, 0x6f, 0x4e, 0xc7, 0xc8, 0x93, 0x80, 0xd9, 0xea, 0xb6, 0x74, 0x0f, + 0x73, 0x7f, 0x34, 0xec, 0x61, 0x3f, 0x04, 0x25, 0xbd, 0xdb, 0xd5, 0x5c, 0x4f, 0xf7, 0x30, 0x8f, + 0x3d, 0x27, 0xa8, 0xcf, 0x5b, 0xd0, 0xbb, 0x5d, 0xfa, 0xce, 0x17, 0x8b, 0x3d, 0x1f, 0x84, 0x22, + 0xd1, 0xf0, 0xa6, 0xde, 0x16, 0x81, 0x4d, 0x9a, 0x85, 0xa8, 0xbc, 0x94, 0x07, 0x47, 0x2d, 0xc8, + 0x87, 0x95, 0xbb, 0x9f, 0x7a, 0x96, 0x82, 0xd4, 0x33, 0x29, 0xa3, 0x17, 0x4f, 0x18, 0x87, 0xc4, + 0x65, 0x9d, 0x34, 0x27, 0xcb, 0x9c, 0x62, 0xfe, 0x45, 0x1c, 0x9d, 0xae, 0x63, 0xdf, 0x64, 0x97, + 0xa9, 0x32, 0x2a, 0xfb, 0x50, 0x5e, 0x85, 0x62, 0xd4, 0x0e, 0xa0, 0x22, 0x24, 0xbc, 0xdb, 0xbc, + 0x95, 0x84, 0x77, 0x1b, 0x5d, 0x0c, 0xbd, 0x90, 0x56, 0x8c, 0xb3, 0x7e, 0x1c, 0x3f, 0x78, 0xda, + 0xeb, 0x5a, 0x2a, 0x93, 0x90, 0x93, 0x4a, 0x09, 0x0a, 0x11, 0x2b, 0xa1, 0x1c, 0x83, 0x99, 0x38, + 0x9d, 0xaf, 0x98, 0x30, 0x13, 0xa7, 0xba, 0xd1, 0x65, 0xc8, 0xf8, 0x4a, 0x5f, 0x48, 0xd0, 0x40, + 0xeb, 0x3e, 0x92, 0x0f, 0x4b, 0x64, 0x87, 0x4c, 0x04, 0xdd, 0xa1, 0x48, 0xf0, 0xa8, 0xa3, 0xdb, + 0xbd, 0xaa, 0xbb, 0x7b, 0xca, 0x37, 0xc2, 0xec, 0x30, 0x7d, 0x1e, 0x62, 0x1c, 0x4b, 0x35, 0x08, + 0xc6, 0x1d, 0x83, 0x34, 0x7f, 0x6d, 0x21, 0x41, 0x33, 0xa7, 0xfc, 0x8b, 0x30, 0x94, 0xe9, 0xf6, + 0x24, 0x4b, 0xa8, 0xd2, 0x0f, 0x45, 0x83, 0x13, 0x43, 0x55, 0x7a, 0xb0, 0xa5, 0xc2, 0x73, 0xb0, + 0x6c, 0x4b, 0xc5, 0x27, 0xc4, 0x3a, 0xcb, 0x3e, 0xe8, 0x2b, 0x9c, 0xd8, 0x6a, 0xf1, 0xe0, 0x26, + 0xab, 0xf2, 0x2f, 0xe5, 0x23, 0x49, 0x38, 0x16, 0xaf, 0xd7, 0xd1, 0x02, 0xe4, 0x3b, 0xfa, 0x6d, + 0xcd, 0x8b, 0xa6, 0x3e, 0xa0, 0xa3, 0xdf, 0x6e, 0xf2, 0xbc, 0x87, 0x0c, 0x49, 0xef, 0xb6, 0x4b, + 0x2f, 0x72, 0xe5, 0x55, 0xf2, 0x27, 0xba, 0x0e, 0x53, 0x6d, 0xdb, 0xd0, 0xdb, 0x5a, 0x5b, 0x77, + 0x3d, 0x8d, 0x9b, 0x7d, 0xb6, 0x9c, 0x1e, 0x18, 0xa6, 0xa7, 0xd9, 0x75, 0x2b, 0xd3, 0x23, 0x2a, + 0x88, 0x2f, 0x84, 0x12, 0x25, 0xb2, 0xaa, 0xbb, 0x1e, 0x0f, 0x1f, 0x6a, 0x90, 0xeb, 0x98, 0xee, + 0x36, 0xde, 0xd3, 0x6f, 0x9a, 0xb6, 0xc3, 0xd7, 0x55, 0x8c, 0xf4, 0xac, 0x05, 0x40, 0x9c, 0x54, + 0x18, 0x2f, 0x34, 0x29, 0x13, 0x11, 0x69, 0x16, 0x9a, 0x25, 0x7d, 0x68, 0xcd, 0xf2, 0x38, 0xcc, + 0x58, 0xf8, 0x36, 0xbd, 0x2b, 0xc8, 0x57, 0x2e, 0x93, 0x14, 0x76, 0xd5, 0x0f, 0x91, 0x3a, 0x7f, + 0xad, 0xbb, 0x74, 0x57, 0xeb, 0x61, 0xf0, 0x03, 0x46, 0x4d, 0x44, 0xb3, 0x19, 0x0a, 0x5d, 0x12, + 0xe5, 0x15, 0x56, 0xac, 0xdc, 0xa1, 0x93, 0x13, 0x67, 0x1d, 0x05, 0xeb, 0xa5, 0x80, 0xf5, 0x4d, + 0x98, 0xe1, 0xf8, 0xad, 0x08, 0xf7, 0x07, 0xc2, 0xf3, 0xa8, 0xd3, 0x15, 0xe2, 0x3a, 0x12, 0xf8, + 0xc3, 0x19, 0x9f, 0xbc, 0x47, 0xc6, 0x23, 0x48, 0x51, 0xb6, 0xa4, 0x98, 0xba, 0x21, 0x7f, 0xff, + 0xbf, 0x36, 0x19, 0x1f, 0x48, 0xc2, 0xd4, 0x80, 0x63, 0xe1, 0x0f, 0x4c, 0x8a, 0x1d, 0x58, 0x22, + 0x76, 0x60, 0xc9, 0x43, 0x0f, 0x8c, 0xcf, 0x76, 0x6a, 0xf4, 0x6c, 0x4f, 0xbc, 0x93, 0xb3, 0x9d, + 0xbe, 0xc7, 0xd9, 0x7e, 0x57, 0xe7, 0xe1, 0x63, 0x12, 0xcc, 0x0d, 0x77, 0xc7, 0x62, 0x27, 0xe4, + 0x11, 0x98, 0xf2, 0xbb, 0xe2, 0x93, 0x67, 0xea, 0x51, 0xf6, 0x2b, 0x38, 0xfd, 0xa1, 0x16, 0xef, + 0x41, 0x28, 0xf6, 0x79, 0x8b, 0x4c, 0x98, 0x0b, 0x91, 0x0c, 0xa2, 0xf2, 0xad, 0x49, 0x98, 0x89, + 0x73, 0xe8, 0x62, 0x56, 0xac, 0x0a, 0xd3, 0x2d, 0x6c, 0x98, 0xad, 0x7b, 0x5e, 0xb0, 0x53, 0x1c, + 0xfd, 0xff, 0xaf, 0xd7, 0x18, 0x39, 0xf9, 0x51, 0x80, 0x8c, 0x8a, 0xdd, 0x2e, 0x71, 0xd0, 0xd8, + 0x6b, 0xcf, 0x06, 0xee, 0x7a, 0x41, 0xa6, 0x3d, 0x36, 0x6e, 0xe0, 0x20, 0x02, 0x8f, 0xc4, 0xcf, + 0x3e, 0x1e, 0x7a, 0x92, 0xa7, 0x09, 0x86, 0x06, 0xfc, 0xcc, 0xfd, 0xf6, 0x51, 0x59, 0x9e, 0xe0, + 0x69, 0x91, 0x27, 0x48, 0x0e, 0x8b, 0x7e, 0xb9, 0x33, 0xee, 0xe3, 0xf1, 0x44, 0xc1, 0x93, 0x3c, + 0x51, 0x90, 0x1a, 0xd6, 0x1c, 0xf3, 0xd9, 0x83, 0xe6, 0x4c, 0x76, 0x91, 0x3b, 0x9c, 0x29, 0x48, + 0x0f, 0x1b, 0x6a, 0xc8, 0xb9, 0x0e, 0x86, 0x1a, 0xa4, 0x0a, 0x9e, 0x16, 0xa9, 0x82, 0xc9, 0x61, + 0x9d, 0xe6, 0xde, 0x64, 0xd0, 0x69, 0x96, 0x2b, 0x78, 0x31, 0x94, 0x2b, 0xc8, 0xf6, 0xef, 0x0c, + 0x0e, 0xe4, 0x0a, 0x7c, 0x6c, 0x3f, 0x59, 0x50, 0xf6, 0x93, 0x05, 0xf9, 0xa1, 0x99, 0x06, 0xee, + 0x06, 0xfa, 0xc8, 0x22, 0x5b, 0xb0, 0x39, 0x90, 0x2d, 0x60, 0xc1, 0xfd, 0xd9, 0x91, 0xd9, 0x02, + 0x9f, 0x54, 0x5f, 0xba, 0x60, 0x73, 0x20, 0x5d, 0x50, 0x1c, 0x46, 0xb1, 0xcf, 0xe7, 0x0c, 0x28, + 0x46, 0xf3, 0x05, 0x5f, 0x1f, 0x9f, 0x2f, 0x18, 0x1a, 0xd0, 0xc7, 0xf8, 0x97, 0x3e, 0xe9, 0x98, + 0x84, 0xc1, 0x37, 0x0e, 0x49, 0x18, 0xc8, 0xc3, 0x02, 0xdb, 0x38, 0xef, 0xd2, 0x6f, 0x20, 0x2e, + 0x63, 0x70, 0x3d, 0x26, 0x63, 0xc0, 0x42, 0xfb, 0x87, 0xc7, 0xc8, 0x18, 0xf8, 0xa4, 0x07, 0x52, + 0x06, 0xd7, 0x63, 0x52, 0x06, 0x68, 0x38, 0xdd, 0x3e, 0xa7, 0x28, 0x4c, 0x37, 0x9a, 0x33, 0x58, + 0x89, 0xe6, 0x0c, 0xa6, 0x0f, 0xf6, 0x45, 0x99, 0x69, 0xf7, 0xa9, 0x85, 0x93, 0x06, 0xc6, 0xb0, + 0xa4, 0x01, 0x8b, 0xeb, 0x1f, 0x1b, 0x33, 0x69, 0xe0, 0xd3, 0x8e, 0xcd, 0x1a, 0x6c, 0x0e, 0x64, + 0x0d, 0x8e, 0x0e, 0x13, 0xb8, 0x3e, 0x23, 0x13, 0x08, 0xdc, 0xd0, 0xb4, 0x01, 0x7b, 0x64, 0x8c, + 0x3d, 0x2f, 0x06, 0x72, 0xee, 0x5a, 0x2a, 0x93, 0x93, 0xf3, 0xca, 0xc3, 0xc4, 0xad, 0xe9, 0xd3, + 0x7b, 0x24, 0x88, 0xc0, 0x8e, 0x63, 0x3b, 0xe2, 0x58, 0x06, 0xfd, 0x50, 0xce, 0x41, 0x3e, 0xac, + 0xe2, 0x0e, 0x48, 0x31, 0x94, 0xa0, 0x10, 0xd1, 0x6a, 0xca, 0xcf, 0x4b, 0x90, 0x0f, 0xeb, 0xab, + 0x48, 0x00, 0x9a, 0xe5, 0x01, 0x68, 0x28, 0xf1, 0x90, 0x88, 0x26, 0x1e, 0xe6, 0x21, 0x47, 0x82, + 0xb0, 0xbe, 0x9c, 0x82, 0xde, 0xf5, 0x73, 0x0a, 0xe7, 0x61, 0x8a, 0xda, 0x50, 0x96, 0x9e, 0xe0, + 0x76, 0x8a, 0xed, 0xcf, 0x94, 0x48, 0x05, 0x65, 0x06, 0xdf, 0x79, 0x7c, 0x0c, 0xa6, 0x43, 0xb0, + 0x7e, 0x70, 0xc7, 0xc2, 0x6b, 0xd9, 0x87, 0xae, 0xf0, 0x28, 0xef, 0x97, 0x24, 0x98, 0x1a, 0x50, + 0x97, 0xb1, 0x79, 0x03, 0xe9, 0x9d, 0xca, 0x1b, 0x24, 0xee, 0x3d, 0x6f, 0x10, 0x0e, 0x57, 0x93, + 0xd1, 0x70, 0xf5, 0x2f, 0x24, 0x28, 0x44, 0xd4, 0x36, 0x99, 0x04, 0xc3, 0x6e, 0x89, 0x43, 0x3c, + 0xf4, 0x6f, 0xe2, 0xa7, 0xb4, 0xed, 0x5d, 0x1e, 0x26, 0x92, 0x3f, 0x09, 0x94, 0x6f, 0x88, 0xb2, + 0xdc, 0xcc, 0xf8, 0xb1, 0xe7, 0x44, 0xf8, 0x38, 0x1f, 0x3f, 0xe2, 0x96, 0x0e, 0x8e, 0xb8, 0xf9, + 0x67, 0x77, 0x26, 0x43, 0x67, 0x77, 0xd0, 0xb3, 0x90, 0xa5, 0xbb, 0x00, 0x9a, 0xdd, 0x0d, 0x7e, + 0x98, 0x62, 0xf8, 0xf1, 0x36, 0x97, 0xee, 0x1f, 0xb2, 0x33, 0x71, 0x81, 0x17, 0x92, 0x8d, 0x78, + 0x21, 0xf7, 0x41, 0x96, 0x74, 0x9f, 0x3d, 0xee, 0x08, 0xfc, 0x30, 0xad, 0x28, 0x50, 0x7e, 0x22, + 0x01, 0xa5, 0x3e, 0xab, 0x13, 0x3b, 0x78, 0x21, 0x95, 0x89, 0x50, 0x5a, 0x64, 0x3c, 0x86, 0x9c, + 0x02, 0xd8, 0xd5, 0x5d, 0xed, 0x96, 0x6e, 0x79, 0xfc, 0x0d, 0xf7, 0xa4, 0x1a, 0x2a, 0x41, 0x73, + 0x90, 0x21, 0x5f, 0x3d, 0x97, 0xbf, 0xe2, 0x9e, 0x54, 0xfd, 0x6f, 0x54, 0x87, 0x34, 0xbe, 0x49, + 0x9f, 0x23, 0x61, 0x8f, 0xfa, 0x1c, 0x8f, 0x51, 0x4f, 0xa4, 0xbe, 0x3a, 0x4b, 0xa6, 0xfb, 0x0f, + 0xde, 0x9a, 0x97, 0x19, 0xf8, 0xa3, 0xfe, 0xf3, 0x0b, 0x2a, 0x27, 0x10, 0x65, 0x43, 0xa6, 0x8f, + 0x0d, 0x34, 0x5d, 0x98, 0x17, 0xb1, 0x3f, 0x61, 0x2a, 0xdb, 0xb0, 0x54, 0x0b, 0x1d, 0xdc, 0xe9, + 0xda, 0x76, 0x5b, 0x63, 0xeb, 0xbc, 0x02, 0xc5, 0xa8, 0x91, 0x65, 0x2f, 0x2f, 0x7b, 0xba, 0x69, + 0x69, 0x11, 0xdf, 0x38, 0xcf, 0x0a, 0xd9, 0xba, 0xba, 0x96, 0xca, 0x48, 0x72, 0x82, 0xa7, 0x6b, + 0xde, 0x03, 0x47, 0x63, 0x6d, 0x2c, 0x7a, 0x06, 0xb2, 0x81, 0x7d, 0x66, 0xdb, 0xce, 0x07, 0xe5, + 0x61, 0x02, 0x60, 0xe5, 0x3a, 0x1c, 0x8d, 0x35, 0xb2, 0xe8, 0x05, 0x48, 0x3b, 0xd8, 0xed, 0xb5, + 0x3d, 0xfe, 0x2c, 0xe2, 0x83, 0xa3, 0xad, 0x73, 0xaf, 0xed, 0xa9, 0x1c, 0x49, 0xb9, 0x08, 0x27, + 0x86, 0x5a, 0xd9, 0x20, 0x9b, 0x22, 0x85, 0xb2, 0x29, 0xca, 0x4f, 0x49, 0x30, 0x37, 0xdc, 0x72, + 0xa2, 0x6a, 0x5f, 0x87, 0xce, 0x8f, 0x69, 0x77, 0x43, 0xbd, 0x22, 0xe1, 0x86, 0x83, 0x77, 0xb0, + 0x67, 0xec, 0x31, 0x13, 0xce, 0x94, 0x42, 0x41, 0x2d, 0xf0, 0x52, 0x8a, 0xe3, 0x32, 0xb0, 0xd7, + 0xb1, 0xe1, 0x69, 0x6c, 0x52, 0x5d, 0xfe, 0x53, 0x3b, 0x05, 0x56, 0xda, 0x60, 0x85, 0xca, 0x23, + 0x70, 0x7c, 0x88, 0x2d, 0x1e, 0x8c, 0x4b, 0x94, 0xd7, 0x08, 0x70, 0xac, 0x81, 0x45, 0x2f, 0x41, + 0xda, 0xf5, 0x74, 0xaf, 0xe7, 0xf2, 0x91, 0x9d, 0x1d, 0x69, 0x9b, 0x1b, 0x14, 0x5c, 0xe5, 0x68, + 0xca, 0x73, 0x80, 0x06, 0x2d, 0x6d, 0x4c, 0x6c, 0x25, 0xc5, 0xc5, 0x56, 0xdb, 0x70, 0xf2, 0x00, + 0x9b, 0x8a, 0x96, 0xfa, 0x3a, 0xf7, 0xc8, 0x58, 0x26, 0xb9, 0xaf, 0x83, 0x7f, 0x94, 0x80, 0xa3, + 0xb1, 0xa6, 0x35, 0xb4, 0x4a, 0xa5, 0xb7, 0xbb, 0x4a, 0x5f, 0x00, 0xf0, 0x6e, 0x6b, 0x6c, 0xa6, + 0x85, 0xb6, 0x8f, 0x8b, 0x27, 0x6e, 0x63, 0x83, 0x2a, 0x2c, 0x22, 0x18, 0x59, 0x8f, 0xff, 0x45, + 0x82, 0xff, 0x50, 0x3c, 0xdb, 0xa3, 0x96, 0xc0, 0xe5, 0xa1, 0xde, 0xd8, 0x36, 0x23, 0x08, 0x7c, + 0x59, 0xb1, 0x8b, 0x5e, 0x83, 0xe3, 0x7d, 0x16, 0xcd, 0xa7, 0x9d, 0x1a, 0xdb, 0xb0, 0x1d, 0x8d, + 0x1a, 0x36, 0x41, 0x3b, 0x6c, 0x95, 0x26, 0xa2, 0x56, 0xe9, 0x35, 0x80, 0x20, 0xb0, 0x25, 0xeb, + 0xcd, 0xb1, 0x7b, 0x56, 0x4b, 0x1c, 0x3e, 0xa5, 0x1f, 0xe8, 0x32, 0x4c, 0x10, 0x49, 0x10, 0xac, + 0x8a, 0x51, 0x18, 0x64, 0x4a, 0x43, 0x91, 0x31, 0x03, 0x57, 0x5e, 0x17, 0xd2, 0x16, 0xce, 0x31, + 0x0e, 0x69, 0xe3, 0xc5, 0x68, 0x1b, 0xca, 0xf0, 0x74, 0x65, 0x7c, 0x5b, 0x7f, 0x07, 0x26, 0xe8, + 0xf4, 0xc7, 0x9e, 0xfd, 0xfe, 0x06, 0x00, 0xdd, 0xf3, 0x1c, 0x73, 0xbb, 0x17, 0xb4, 0xb0, 0x30, + 0x44, 0x7e, 0x2a, 0x02, 0xb0, 0x7a, 0x1f, 0x17, 0xa4, 0x99, 0x00, 0x37, 0x24, 0x4c, 0x21, 0x8a, + 0xca, 0x3a, 0x14, 0xa3, 0xb8, 0xf1, 0x87, 0xd9, 0xc5, 0xaf, 0x02, 0x04, 0x47, 0x6d, 0x03, 0x43, + 0xce, 0x6f, 0x0b, 0xd1, 0x0f, 0xe5, 0x9b, 0x12, 0x90, 0x0f, 0x4b, 0xdf, 0xdf, 0x42, 0x63, 0xa9, + 0x7c, 0xab, 0x04, 0x19, 0x7f, 0xfc, 0xd1, 0x74, 0x7e, 0x64, 0x1f, 0x24, 0xb8, 0xd6, 0xe0, 0xe7, + 0xe0, 0xd9, 0xae, 0x47, 0xd2, 0xdf, 0xf5, 0x78, 0xde, 0x37, 0x08, 0x43, 0x83, 0xf9, 0x30, 0xb7, + 0xc5, 0xf1, 0x24, 0x6e, 0xa0, 0x9e, 0x1b, 0xef, 0x0c, 0xd4, 0x0c, 0x4c, 0x84, 0x8f, 0x2f, 0xb1, + 0x0f, 0x05, 0x87, 0x4e, 0x50, 0xb2, 0xd5, 0x18, 0x3e, 0x2c, 0x25, 0x1d, 0xfe, 0xb0, 0x94, 0xdf, + 0x4c, 0x22, 0xdc, 0xcc, 0x3f, 0x92, 0x20, 0x23, 0xd6, 0x05, 0x7a, 0x29, 0x7c, 0xbe, 0x57, 0x1c, + 0x16, 0x1c, 0xae, 0x97, 0x78, 0x03, 0xa1, 0xe3, 0xbd, 0x55, 0xb1, 0xcf, 0x68, 0xb6, 0xb4, 0x9d, + 0xb6, 0xbe, 0xcb, 0xb7, 0x8b, 0x86, 0x9e, 0x4e, 0x66, 0x87, 0x87, 0xf8, 0x81, 0xcb, 0x7a, 0x8b, + 0x7c, 0x70, 0x3f, 0xe4, 0xcf, 0x24, 0x90, 0xfb, 0xd7, 0xed, 0xdb, 0xef, 0xdf, 0xa0, 0xbd, 0x4a, + 0xc6, 0xd8, 0x2b, 0x74, 0x01, 0xa6, 0x83, 0x1f, 0xe6, 0x72, 0xcd, 0x5d, 0x8b, 0x1d, 0xfe, 0x65, + 0x49, 0x35, 0xe4, 0x57, 0x35, 0x44, 0xcd, 0xe0, 0xb8, 0x27, 0xee, 0x75, 0xdc, 0x1f, 0x48, 0x40, + 0x2e, 0x94, 0xe3, 0x43, 0x4f, 0x85, 0x94, 0x52, 0x31, 0xce, 0x4a, 0x84, 0x80, 0x43, 0x3f, 0xab, + 0x13, 0xe1, 0x54, 0xe2, 0x1e, 0x38, 0x35, 0x2c, 0x9b, 0x2a, 0x92, 0x86, 0xa9, 0x43, 0x27, 0x0d, + 0xe3, 0x0f, 0x10, 0x4e, 0x0c, 0x39, 0x40, 0xf8, 0xf7, 0x24, 0xc8, 0xf8, 0xc9, 0x97, 0xc3, 0xee, + 0xc9, 0x1d, 0x83, 0x34, 0xf7, 0xbd, 0xd8, 0xa6, 0x1c, 0xff, 0x8a, 0xcd, 0x8e, 0xce, 0x41, 0x46, + 0xbc, 0x32, 0xcf, 0x2d, 0x9c, 0xff, 0x7d, 0x7e, 0x1b, 0x72, 0xa1, 0x6d, 0x4d, 0x74, 0x02, 0x8e, + 0x2e, 0x5d, 0xad, 0x2d, 0xbd, 0xac, 0x35, 0x5f, 0xe9, 0x7f, 0x5b, 0x78, 0xa0, 0x4a, 0xad, 0xd1, + 0x6f, 0x59, 0x42, 0xc7, 0x61, 0x3a, 0x5a, 0xc5, 0x2a, 0x12, 0x73, 0xa9, 0x0f, 0xfe, 0xc8, 0xa9, + 0x23, 0xe7, 0xff, 0x4c, 0x82, 0xe9, 0x18, 0x2f, 0x17, 0x9d, 0x86, 0xfb, 0x37, 0xae, 0x5c, 0xa9, + 0xa9, 0x5a, 0x63, 0xbd, 0xb2, 0xd9, 0xb8, 0xba, 0xd1, 0xd4, 0xd4, 0x5a, 0x63, 0x6b, 0xb5, 0x19, + 0x6a, 0x74, 0x01, 0xee, 0x8b, 0x07, 0xa9, 0x2c, 0x2d, 0xd5, 0x36, 0x9b, 0xec, 0x71, 0xe3, 0x21, + 0x10, 0xd5, 0x0d, 0xb5, 0x29, 0x27, 0x86, 0x93, 0x50, 0x6b, 0xd7, 0x6a, 0x4b, 0x4d, 0x39, 0x89, + 0xce, 0xc2, 0x99, 0x83, 0x20, 0xb4, 0x2b, 0x1b, 0xea, 0x5a, 0xa5, 0x29, 0xa7, 0x46, 0x02, 0x36, + 0x6a, 0xeb, 0xcb, 0x35, 0x55, 0x9e, 0xe0, 0xe3, 0x7e, 0x33, 0x01, 0xb3, 0xc3, 0x9c, 0x69, 0x42, + 0xab, 0xb2, 0xb9, 0xb9, 0xfa, 0x6a, 0x40, 0x6b, 0xe9, 0xea, 0xd6, 0xfa, 0xcb, 0x83, 0x2c, 0x78, + 0x08, 0x94, 0x83, 0x00, 0x7d, 0x46, 0x3c, 0x08, 0xa7, 0x0f, 0x84, 0xe3, 0xec, 0x18, 0x01, 0xa6, + 0xd6, 0x9a, 0xea, 0xab, 0x72, 0x12, 0x2d, 0xc2, 0xf9, 0x91, 0x60, 0x7e, 0x9d, 0x9c, 0x42, 0x17, + 0xe0, 0x91, 0x83, 0xe1, 0x19, 0x83, 0x04, 0x82, 0x60, 0xd1, 0x1d, 0x09, 0x8e, 0xc6, 0x7a, 0xe5, + 0xe8, 0x0c, 0xcc, 0x6f, 0xaa, 0x1b, 0x4b, 0xb5, 0x46, 0x43, 0xdb, 0x54, 0x37, 0x36, 0x37, 0x1a, + 0x95, 0x55, 0xad, 0xd1, 0xac, 0x34, 0xb7, 0x1a, 0x21, 0xde, 0x28, 0x70, 0x6a, 0x18, 0x90, 0xcf, + 0x97, 0x03, 0x60, 0xb8, 0x04, 0x08, 0x39, 0xbd, 0x2b, 0xc1, 0x89, 0xa1, 0x5e, 0x38, 0x3a, 0x07, + 0x0f, 0xd0, 0xdf, 0x29, 0x7b, 0x55, 0xbb, 0xbe, 0xd1, 0x0c, 0xbf, 0xa2, 0x3d, 0xd0, 0xab, 0xb3, + 0x70, 0xe6, 0x40, 0x48, 0xbf, 0x6b, 0xa3, 0x00, 0xfb, 0xfa, 0xf7, 0x2d, 0x12, 0x94, 0xfa, 0x74, + 0x21, 0xba, 0x0f, 0x66, 0xd7, 0xea, 0x8d, 0x6a, 0xed, 0x6a, 0xe5, 0x7a, 0x7d, 0x43, 0xed, 0x5f, + 0xb3, 0x67, 0x60, 0x7e, 0xa0, 0x76, 0x79, 0x6b, 0x73, 0xb5, 0xbe, 0x54, 0x69, 0xd6, 0x68, 0xa3, + 0xb2, 0x44, 0x06, 0x36, 0x00, 0xb4, 0x5a, 0x5f, 0xb9, 0xda, 0xd4, 0x96, 0x56, 0xeb, 0xb5, 0xf5, + 0xa6, 0x56, 0x69, 0x36, 0x2b, 0xc1, 0x72, 0xae, 0xbe, 0x3c, 0xf4, 0xe8, 0xeb, 0xc5, 0xf1, 0x8f, + 0xbe, 0xf2, 0x23, 0x9c, 0xc1, 0x6d, 0xb5, 0x04, 0xcc, 0xfb, 0x95, 0x3c, 0x97, 0xd6, 0x7f, 0xc4, + 0x73, 0xda, 0xd7, 0xee, 0x1c, 0x60, 0xf8, 0x8d, 0xcf, 0x17, 0x20, 0x59, 0xe9, 0x76, 0x89, 0xe6, + 0xa3, 0xdf, 0x86, 0xdd, 0xe6, 0x7a, 0xd5, 0xff, 0x26, 0x75, 0xae, 0xbd, 0xe3, 0xdd, 0xd2, 0x1d, + 0xff, 0x97, 0xd7, 0xc4, 0xb7, 0xf2, 0x2c, 0x64, 0xfd, 0xe8, 0x81, 0xbe, 0x5d, 0xea, 0xdf, 0x43, + 0x4a, 0x89, 0x7b, 0x46, 0xfc, 0xb2, 0x46, 0x22, 0xb8, 0xac, 0x91, 0xfa, 0xe2, 0x9b, 0xf3, 0x52, + 0x75, 0x7d, 0x28, 0x77, 0x9e, 0x1c, 0x9f, 0x3b, 0x01, 0x03, 0x7c, 0x06, 0x7d, 0xef, 0xfd, 0xa1, + 0xdb, 0xc0, 0xfe, 0x89, 0xd3, 0x30, 0x7b, 0x62, 0xce, 0xe3, 0x8f, 0x3a, 0xe3, 0x3a, 0xc6, 0x19, + 0xd6, 0x51, 0xb3, 0x72, 0xaf, 0x87, 0x5c, 0x9f, 0x85, 0xc2, 0xa6, 0xee, 0x78, 0x0d, 0xec, 0x5d, + 0xc5, 0x7a, 0x0b, 0x3b, 0xd1, 0xbb, 0xb9, 0x05, 0x71, 0x37, 0x57, 0xd8, 0xb3, 0x44, 0x60, 0xcf, + 0x14, 0x13, 0x52, 0xf4, 0x39, 0xe1, 0xa1, 0x87, 0x4c, 0xd8, 0xa1, 0x10, 0x7e, 0xc8, 0x84, 0x7e, + 0xa0, 0xa7, 0xc4, 0xed, 0xdb, 0xe4, 0x88, 0xdb, 0xb7, 0x22, 0x72, 0x62, 0x77, 0x70, 0x3b, 0x30, + 0xc9, 0xbd, 0x99, 0xd8, 0xdd, 0xdb, 0x75, 0x28, 0x75, 0x75, 0xc7, 0xa3, 0xbf, 0x56, 0xb2, 0x47, + 0x87, 0xc1, 0x3d, 0x91, 0xb8, 0xeb, 0x53, 0x91, 0xe1, 0xf2, 0x66, 0x0a, 0xdd, 0x70, 0xa1, 0xf2, + 0xc5, 0x14, 0xa4, 0x39, 0x3b, 0x5e, 0x8c, 0x9e, 0x74, 0x8b, 0x38, 0xe6, 0x81, 0xf8, 0x07, 0x41, + 0x2e, 0x27, 0xe8, 0xa7, 0xa5, 0x1f, 0xea, 0x3f, 0x57, 0x56, 0xcd, 0x7d, 0xfe, 0xad, 0xf9, 0x49, + 0x9a, 0x29, 0xae, 0x2f, 0x07, 0x87, 0xcc, 0xde, 0x79, 0x2f, 0x68, 0x19, 0x0a, 0xa1, 0x1c, 0xb6, + 0xd9, 0xe2, 0x1b, 0xff, 0x73, 0xc3, 0x3d, 0x45, 0xb1, 0xcd, 0xeb, 0xe7, 0xb7, 0xeb, 0x2d, 0x74, + 0x0e, 0xe4, 0xd0, 0xce, 0x33, 0x0b, 0xcf, 0x59, 0xf2, 0xb6, 0xd8, 0xf6, 0xf7, 0x94, 0xe9, 0xc6, + 0xeb, 0x49, 0xc8, 0xd2, 0x1f, 0xd0, 0x09, 0xed, 0xcf, 0x66, 0x48, 0x01, 0xad, 0x3c, 0x0b, 0xa5, + 0xfe, 0x2d, 0x5c, 0xb6, 0x29, 0x5b, 0xbc, 0x19, 0xdd, 0xbe, 0x1d, 0xb6, 0xe1, 0x9b, 0x1d, 0xba, + 0xe1, 0xfb, 0x20, 0x14, 0x83, 0xa4, 0x04, 0x85, 0x05, 0xe6, 0x69, 0xfb, 0xa5, 0x14, 0x2c, 0x9c, + 0x5f, 0xc8, 0x45, 0xf2, 0x0b, 0xfe, 0xce, 0x00, 0xcf, 0xb6, 0x30, 0x98, 0x3c, 0xdb, 0x33, 0x26, + 0x15, 0x3c, 0xa9, 0x42, 0x61, 0xcf, 0x40, 0x41, 0x5c, 0x52, 0x64, 0x70, 0x05, 0x0a, 0x97, 0x17, + 0x85, 0x43, 0xf7, 0xa0, 0x8b, 0xf1, 0x7b, 0xd0, 0xb3, 0x90, 0x5a, 0xe6, 0x51, 0x71, 0x5f, 0x8e, + 0xed, 0xb3, 0x49, 0x48, 0xd1, 0x6d, 0xa5, 0x27, 0x23, 0x8e, 0x79, 0x9c, 0x48, 0x93, 0xf0, 0x00, + 0xb7, 0xd6, 0xdc, 0xdd, 0x90, 0x5f, 0x3e, 0xec, 0x88, 0x89, 0x9f, 0xda, 0x48, 0x86, 0x53, 0x1b, + 0x57, 0x20, 0xe3, 0xcb, 0x49, 0x6a, 0xa4, 0x9c, 0x94, 0x88, 0x9c, 0x10, 0x31, 0xe6, 0x05, 0xea, + 0x24, 0x0f, 0x2f, 0x50, 0x15, 0xb2, 0xbe, 0x86, 0xf1, 0x05, 0x6e, 0x1c, 0x99, 0x0d, 0xd0, 0xe2, + 0xcf, 0x62, 0xa4, 0x87, 0x9c, 0xc5, 0x08, 0x0b, 0x16, 0xff, 0xed, 0xcd, 0x49, 0x3a, 0xb0, 0x40, + 0xb0, 0xd8, 0xef, 0x6f, 0xde, 0x07, 0xd9, 0x20, 0xbe, 0x62, 0xb2, 0x17, 0x14, 0x90, 0xda, 0x20, + 0x52, 0x63, 0xb2, 0x16, 0xfa, 0x11, 0xe7, 0x21, 0x51, 0x1a, 0x0c, 0x8b, 0xd2, 0x94, 0x7f, 0x2b, + 0x41, 0x9a, 0x1f, 0xb7, 0x38, 0x20, 0x2d, 0xc0, 0xe6, 0x21, 0x31, 0x6c, 0x1e, 0x92, 0x6f, 0x6b, + 0x1e, 0xc0, 0xef, 0xa7, 0x38, 0x64, 0x7a, 0x5f, 0x6c, 0x72, 0x8e, 0x74, 0xb2, 0x61, 0xee, 0x8a, + 0x7d, 0xa2, 0x00, 0x4b, 0x79, 0x4b, 0x22, 0xe6, 0x97, 0xd7, 0x0f, 0x06, 0x9e, 0xd2, 0xa1, 0x03, + 0xcf, 0xc3, 0x9d, 0xb2, 0x89, 0x88, 0x52, 0xf2, 0xde, 0x44, 0x29, 0x32, 0xe9, 0xa9, 0xbe, 0x49, + 0x57, 0xbe, 0x20, 0xf1, 0xdf, 0x6f, 0xf6, 0x93, 0x7f, 0x7f, 0x45, 0xb3, 0xf5, 0xb5, 0x5c, 0xbe, + 0x5a, 0xb8, 0xa5, 0x0d, 0x4c, 0xdb, 0x03, 0x71, 0xf7, 0xa6, 0x23, 0xbd, 0x0e, 0xa6, 0x0f, 0x09, + 0x32, 0x8d, 0x60, 0x1a, 0x7f, 0x36, 0x21, 0x4e, 0xa5, 0x85, 0xe0, 0xff, 0x06, 0x4e, 0x67, 0x74, + 0x0d, 0x4f, 0x8c, 0xb9, 0x86, 0xd3, 0x43, 0xd7, 0xf0, 0xcf, 0x26, 0xe8, 0x3b, 0x1b, 0xec, 0x8c, + 0xc0, 0x5f, 0x86, 0x0e, 0x3e, 0x09, 0xd9, 0xae, 0xdd, 0xd6, 0x58, 0x0d, 0x7b, 0x8c, 0x3f, 0xd3, + 0xb5, 0xdb, 0xea, 0x80, 0xa8, 0x4d, 0xbc, 0x53, 0x0a, 0x3a, 0xfd, 0x0e, 0x4c, 0xc3, 0x64, 0xff, + 0xaa, 0xf2, 0x20, 0xcf, 0x78, 0xc1, 0x3d, 0xa8, 0x8b, 0x84, 0x09, 0xd4, 0x27, 0x93, 0xfa, 0x7d, + 0x3e, 0xbf, 0xdf, 0x0c, 0x54, 0xe5, 0x80, 0x04, 0x25, 0x72, 0xd2, 0xed, 0xc4, 0x50, 0xcd, 0x25, + 0x4e, 0xf6, 0x28, 0x1f, 0x96, 0x00, 0x56, 0x09, 0x73, 0xe9, 0x88, 0x89, 0xf3, 0xe3, 0xd2, 0x4e, + 0x68, 0x91, 0xb6, 0xe7, 0x87, 0x4e, 0x1c, 0xef, 0x41, 0xde, 0x0d, 0x77, 0x7d, 0x19, 0x0a, 0x81, + 0x80, 0xbb, 0x58, 0x74, 0x67, 0xfe, 0xa0, 0x8b, 0xac, 0x0d, 0xec, 0xa9, 0xf9, 0x9b, 0xa1, 0x2f, + 0xe5, 0xdf, 0x49, 0x90, 0xa5, 0xbd, 0x5a, 0xc3, 0x9e, 0x1e, 0x99, 0x48, 0xe9, 0x6d, 0x4c, 0xe4, + 0xfd, 0x00, 0x8c, 0x8e, 0x6b, 0xbe, 0x81, 0xb9, 0x7c, 0x65, 0x69, 0x49, 0xc3, 0x7c, 0x03, 0xa3, + 0xa7, 0x7d, 0xae, 0x27, 0x47, 0x70, 0x5d, 0x24, 0x6f, 0x39, 0xef, 0x8f, 0xc3, 0xa4, 0xd5, 0xeb, + 0x68, 0xec, 0x30, 0x29, 0x15, 0x5a, 0xab, 0xd7, 0x69, 0xde, 0x76, 0x95, 0x1b, 0x30, 0xd9, 0xbc, + 0xcd, 0xde, 0xef, 0x39, 0x09, 0x59, 0xc7, 0xb6, 0xb9, 0x37, 0xc8, 0x1c, 0xf1, 0x0c, 0x29, 0xa0, + 0xce, 0x4f, 0x5c, 0xce, 0xff, 0xc2, 0xb8, 0x6e, 0x3f, 0x77, 0xf8, 0xcf, 0xff, 0x86, 0x04, 0x85, + 0xc8, 0x8a, 0x42, 0x8f, 0xc2, 0xf1, 0x46, 0x7d, 0x65, 0xbd, 0xb6, 0xac, 0xad, 0x35, 0x56, 0xfa, + 0x02, 0xec, 0xb9, 0xd2, 0x9d, 0xbb, 0x0b, 0x39, 0x7e, 0x55, 0x75, 0x18, 0xf4, 0xa6, 0x5a, 0x63, + 0x91, 0x36, 0x83, 0xde, 0x74, 0xf0, 0x4d, 0xdb, 0xc3, 0x14, 0xfa, 0x71, 0x38, 0x11, 0x03, 0xed, + 0x5f, 0x58, 0x9d, 0xba, 0x73, 0x77, 0xa1, 0xb0, 0xe9, 0x60, 0x26, 0x6a, 0x14, 0x63, 0x11, 0x66, + 0x07, 0x31, 0x58, 0x56, 0x43, 0x5e, 0x98, 0x93, 0xef, 0xdc, 0x5d, 0xc8, 0x0b, 0xdd, 0x41, 0xe0, + 0xdf, 0xf5, 0x1b, 0xab, 0x1f, 0xcd, 0xc2, 0x09, 0xf6, 0x86, 0x95, 0xc6, 0x62, 0x40, 0xf6, 0xc1, + 0x43, 0xd2, 0x7c, 0xb8, 0x6a, 0xf4, 0x8f, 0x13, 0x28, 0x2f, 0xc3, 0x74, 0xdd, 0xf2, 0xb0, 0xb3, + 0xa3, 0x87, 0x7f, 0x5e, 0x38, 0xf6, 0x07, 0x7b, 0x17, 0x22, 0xaf, 0x6c, 0xf2, 0x08, 0x3e, 0x5c, + 0xa4, 0x7c, 0x93, 0x04, 0x72, 0xc3, 0xd0, 0xdb, 0xba, 0xf3, 0x76, 0x49, 0xa1, 0xa7, 0xc5, 0x8f, + 0x52, 0xf0, 0x0b, 0x22, 0xc9, 0x73, 0xc5, 0x4b, 0xb3, 0x8b, 0xe1, 0xc1, 0x2d, 0xb2, 0x96, 0xa8, + 0x0e, 0x66, 0x3f, 0x46, 0x41, 0xfe, 0x3c, 0xff, 0x0a, 0x40, 0x50, 0x81, 0x4e, 0xc2, 0xf1, 0xc6, + 0x52, 0x65, 0xb5, 0xe2, 0xe7, 0x69, 0x1a, 0x9b, 0xb5, 0x25, 0xf6, 0xcb, 0xf7, 0x47, 0xd0, 0x31, + 0x40, 0xe1, 0x4a, 0xff, 0x77, 0xe6, 0x8e, 0xc2, 0x54, 0xb8, 0x9c, 0xfd, 0x0c, 0x79, 0xa2, 0x7c, + 0x15, 0x4a, 0xec, 0x37, 0x92, 0x89, 0x01, 0xc4, 0x2d, 0xcd, 0xb4, 0xd0, 0x88, 0x9f, 0x1c, 0x9e, + 0xfd, 0x95, 0xff, 0xca, 0x7e, 0xa2, 0xa2, 0xc0, 0x10, 0x2b, 0x04, 0xaf, 0x6e, 0x95, 0x9b, 0x30, + 0x43, 0x6f, 0x84, 0xd3, 0x9f, 0x95, 0xd1, 0x4c, 0xc1, 0xff, 0xd1, 0x6f, 0x08, 0x12, 0x7a, 0xc9, + 0x73, 0x59, 0x75, 0x3a, 0x40, 0xf7, 0x67, 0xaf, 0xfc, 0x72, 0xf0, 0xa3, 0x22, 0x7e, 0x07, 0x47, + 0x52, 0xfc, 0x55, 0xde, 0x43, 0xf1, 0x84, 0xb0, 0xe8, 0xe2, 0x2a, 0x4c, 0xe9, 0x86, 0x81, 0xbb, + 0x91, 0xfe, 0x8d, 0x78, 0xb6, 0x4d, 0x8c, 0x56, 0xe6, 0x98, 0x41, 0xd7, 0x9e, 0x86, 0xb4, 0x4b, + 0x27, 0x65, 0x14, 0x09, 0xd1, 0x1d, 0x0e, 0x5e, 0xae, 0x41, 0x91, 0x89, 0x81, 0x3f, 0xa2, 0x11, + 0x04, 0xfe, 0x23, 0x27, 0x90, 0xa7, 0x68, 0x62, 0x34, 0x16, 0x4c, 0xb5, 0xb0, 0xd1, 0xd6, 0x1d, + 0x1c, 0x1a, 0xcd, 0xc1, 0x4f, 0x17, 0xff, 0xcb, 0x4f, 0x3f, 0xee, 0xef, 0xa1, 0x87, 0x84, 0x2e, + 0x66, 0xb1, 0xa8, 0x32, 0xa7, 0x1d, 0x8c, 0x17, 0x43, 0x51, 0xb4, 0xc7, 0xc7, 0x7d, 0x70, 0x63, + 0xff, 0x8a, 0x37, 0x76, 0x2a, 0x4e, 0xc2, 0x43, 0x2d, 0x15, 0x38, 0x55, 0x56, 0x51, 0xae, 0x42, + 0x61, 0xc7, 0x6c, 0x87, 0xa6, 0xfb, 0xe0, 0x56, 0xfe, 0xf5, 0xa7, 0x1f, 0x67, 0x0b, 0x8d, 0x20, + 0x71, 0xd6, 0xdc, 0xd3, 0x4f, 0xa6, 0x50, 0xea, 0xcf, 0x85, 0xbb, 0xea, 0x6b, 0xa7, 0x4f, 0x24, + 0xe1, 0x14, 0x07, 0xde, 0xd6, 0x5d, 0x4c, 0x14, 0x17, 0xf6, 0xf4, 0x8b, 0x17, 0x0c, 0xdb, 0xb4, + 0x82, 0xa4, 0x22, 0x55, 0x58, 0xa4, 0x7e, 0x91, 0xd7, 0x0f, 0xc9, 0x69, 0x0d, 0x57, 0x74, 0x73, + 0x83, 0x3f, 0xdb, 0xa3, 0xb4, 0x21, 0xb5, 0x64, 0x9b, 0x16, 0xf1, 0xb9, 0x5a, 0xd8, 0xb2, 0x3b, + 0xe2, 0xbc, 0x22, 0xfd, 0x40, 0x57, 0x21, 0xad, 0x77, 0xec, 0x9e, 0xc5, 0xdf, 0x6f, 0xab, 0x3e, + 0x4e, 0x6c, 0xe1, 0x6f, 0xbd, 0x35, 0x7f, 0x94, 0x91, 0x75, 0x5b, 0x37, 0x16, 0x4d, 0xfb, 0x42, + 0x47, 0xf7, 0xf6, 0xc8, 0x24, 0xff, 0xfa, 0x67, 0x1e, 0x03, 0xde, 0x5e, 0xdd, 0xf2, 0x3e, 0xf9, + 0xfb, 0x3f, 0x7d, 0x5e, 0x52, 0x39, 0x3e, 0x4b, 0x3b, 0x2a, 0x5d, 0x98, 0x5c, 0xc6, 0xc6, 0x01, + 0x0d, 0xd6, 0xfb, 0x1a, 0xbc, 0xc8, 0x1b, 0x3c, 0x39, 0xd8, 0x20, 0xfb, 0x1d, 0xc1, 0x65, 0x6c, + 0x84, 0x9a, 0x5d, 0xc6, 0x46, 0xb4, 0xc5, 0xea, 0xf2, 0x6f, 0xfe, 0xee, 0xa9, 0x23, 0xef, 0xff, + 0xfc, 0xa9, 0x23, 0x43, 0xa7, 0x4c, 0x19, 0xfd, 0x2b, 0x37, 0xfe, 0x4c, 0xfd, 0x6f, 0x09, 0x4e, + 0xf4, 0x9b, 0x07, 0xdd, 0xda, 0x1f, 0xf6, 0xe6, 0xc1, 0x65, 0x48, 0x56, 0xac, 0x7d, 0x74, 0x82, + 0xbd, 0xe6, 0xaa, 0xf5, 0x9c, 0xb6, 0x38, 0xe6, 0x49, 0xbe, 0xb7, 0x9c, 0x76, 0xf4, 0x48, 0x81, + 0xff, 0x32, 0xd7, 0x77, 0x1d, 0xf2, 0xb9, 0x83, 0x4c, 0xc5, 0xda, 0x17, 0x0f, 0x1d, 0x3c, 0x3a, + 0xe6, 0x43, 0x07, 0xba, 0xb5, 0xdf, 0xdd, 0x3e, 0xec, 0xfb, 0x06, 0x77, 0x9e, 0x82, 0x07, 0x38, + 0x8f, 0x5c, 0x4f, 0xbf, 0x61, 0x5a, 0xbb, 0xbe, 0xb0, 0xf2, 0x6f, 0xce, 0x8a, 0x63, 0x7c, 0x42, + 0x44, 0xa9, 0x10, 0xd9, 0x41, 0x09, 0x9c, 0x3b, 0xf0, 0xc1, 0x84, 0xb9, 0x83, 0xb3, 0xc9, 0x73, + 0x23, 0xd6, 0xcd, 0x41, 0x8b, 0x61, 0xc8, 0xea, 0x19, 0x3a, 0xbd, 0x23, 0x5f, 0x0f, 0x1b, 0x99, + 0x4c, 0xfe, 0xb0, 0x04, 0xc5, 0xab, 0xa6, 0xeb, 0xd9, 0x8e, 0x69, 0xe8, 0x6d, 0xba, 0x91, 0xfe, + 0xfc, 0xd8, 0xde, 0x7f, 0x35, 0x4b, 0x96, 0x02, 0x5f, 0x54, 0x7b, 0xc2, 0x01, 0x4f, 0xdf, 0xd4, + 0xdb, 0xcc, 0xf3, 0x0e, 0xeb, 0xdd, 0x7e, 0xb6, 0x87, 0xf6, 0x97, 0xc3, 0x54, 0x18, 0x6e, 0x39, + 0x31, 0x2b, 0x29, 0xdf, 0x97, 0x80, 0x12, 0x0d, 0x19, 0x5c, 0x7a, 0x20, 0x8c, 0x1e, 0x39, 0xba, + 0x06, 0x29, 0x47, 0xf7, 0xb8, 0x13, 0x52, 0xbd, 0x7c, 0xe8, 0x95, 0xc8, 0x5a, 0xa1, 0x34, 0xd0, + 0x7b, 0x20, 0xd3, 0xd1, 0x6f, 0x6b, 0x94, 0x5e, 0xe2, 0x6d, 0xd1, 0x9b, 0xec, 0xe8, 0xb7, 0x49, + 0xff, 0xd0, 0x37, 0x40, 0x89, 0x90, 0x34, 0xf6, 0x74, 0x6b, 0x17, 0x33, 0xca, 0xc9, 0xb7, 0x45, + 0xb9, 0xd0, 0xd1, 0x6f, 0x2f, 0x51, 0x6a, 0x84, 0x3e, 0xd7, 0x58, 0xbf, 0x28, 0xf1, 0xd3, 0x55, + 0x94, 0x31, 0x48, 0x07, 0xd9, 0xf0, 0xbf, 0x68, 0xa3, 0xe2, 0xd0, 0xf2, 0xd9, 0x61, 0xbc, 0xef, + 0x63, 0x6b, 0xb5, 0x40, 0xba, 0xf7, 0xb9, 0xb7, 0xe6, 0x25, 0xd6, 0x6a, 0xc9, 0x18, 0x60, 0x7b, + 0x8e, 0x9d, 0x1a, 0xd3, 0x68, 0x66, 0x3b, 0x31, 0x32, 0x08, 0x2d, 0x88, 0x20, 0x94, 0x11, 0x04, + 0x86, 0x4d, 0xea, 0xf9, 0x18, 0xfe, 0x44, 0x82, 0xdc, 0x72, 0xc8, 0x4f, 0x9c, 0x85, 0xc9, 0x8e, + 0x6d, 0x99, 0x37, 0xb0, 0xe3, 0x9f, 0x3a, 0x67, 0x9f, 0x68, 0x0e, 0x32, 0xec, 0x17, 0x20, 0xbd, + 0x7d, 0xb1, 0xdb, 0x24, 0xbe, 0x09, 0xd6, 0x2d, 0xbc, 0xed, 0x9a, 0x82, 0xcf, 0xaa, 0xf8, 0x44, + 0x0f, 0x83, 0xec, 0x62, 0xa3, 0xe7, 0x98, 0xde, 0xbe, 0x66, 0xd8, 0x96, 0xa7, 0x1b, 0x1e, 0x3f, + 0xac, 0x54, 0x12, 0xe5, 0x4b, 0xac, 0x98, 0x10, 0x69, 0x61, 0x4f, 0x37, 0xdb, 0xec, 0x32, 0x76, + 0x56, 0x15, 0x9f, 0x68, 0x25, 0xb4, 0xfd, 0x9f, 0xf6, 0x77, 0x27, 0x62, 0x39, 0x2a, 0x7e, 0x6f, + 0x9e, 0x0a, 0x33, 0x1d, 0xf5, 0x91, 0xe0, 0xac, 0x00, 0x1f, 0xf3, 0x0e, 0x64, 0x04, 0x18, 0x7a, + 0x08, 0x4a, 0x5d, 0xc7, 0xa6, 0x56, 0xbf, 0x6b, 0x1a, 0x5a, 0xcf, 0x31, 0xf9, 0xb8, 0x0b, 0xbc, + 0x78, 0xd3, 0x34, 0xb6, 0x1c, 0x13, 0x3d, 0x0a, 0xc8, 0xb5, 0x0d, 0x7a, 0x11, 0x5c, 0xb7, 0x5a, + 0x6d, 0xa2, 0xb0, 0x4d, 0x76, 0xd6, 0x2c, 0xab, 0xca, 0xac, 0xe6, 0x2a, 0xad, 0xd8, 0x72, 0x4c, + 0x97, 0xb7, 0x73, 0x77, 0x32, 0x7c, 0xb6, 0x68, 0x09, 0x64, 0xbb, 0x8b, 0x9d, 0x48, 0xc6, 0x87, + 0x2d, 0x9f, 0xd9, 0x5f, 0xff, 0xcc, 0x63, 0x33, 0x7c, 0x3c, 0x3c, 0xe7, 0xc3, 0x5e, 0x71, 0x54, + 0x4b, 0x02, 0x43, 0xa4, 0x82, 0x5e, 0x8d, 0x1c, 0x8c, 0xef, 0x6d, 0x07, 0x6f, 0x32, 0xcd, 0x0c, + 0x48, 0x41, 0xc5, 0xda, 0xaf, 0xce, 0xfe, 0x6a, 0x40, 0x9a, 0xc7, 0x8b, 0x9b, 0xf4, 0xa4, 0x51, + 0xf8, 0x90, 0x3c, 0x25, 0x83, 0x8e, 0x41, 0xfa, 0x75, 0xdd, 0x6c, 0x8b, 0x5f, 0xf7, 0x55, 0xf9, + 0x17, 0x2a, 0xfb, 0x07, 0x3f, 0x53, 0x34, 0x83, 0xa3, 0x0c, 0x63, 0x7d, 0xd5, 0xb6, 0x5a, 0xd1, + 0xf3, 0x9e, 0x68, 0x09, 0xd2, 0x9e, 0x7d, 0x03, 0x5b, 0x7c, 0x46, 0xab, 0x8f, 0x1c, 0xc2, 0x47, + 0x50, 0x39, 0x2a, 0xfa, 0x3a, 0x90, 0x5b, 0xb8, 0x8d, 0x77, 0x59, 0x2a, 0x61, 0x4f, 0x77, 0x30, + 0xcb, 0x69, 0xdf, 0x93, 0x07, 0x50, 0xf2, 0x49, 0x35, 0x28, 0x25, 0xb4, 0x19, 0x0d, 0x9d, 0x26, + 0xfd, 0x3b, 0x5d, 0xb1, 0x63, 0x0c, 0x2d, 0x95, 0xb0, 0xba, 0x8c, 0x84, 0x5a, 0x0f, 0x83, 0xdc, + 0xb3, 0xb6, 0x6d, 0x8b, 0xfe, 0x28, 0x26, 0x4f, 0x62, 0x65, 0xd8, 0x65, 0x09, 0xbf, 0x9c, 0x5f, + 0x96, 0xd8, 0x84, 0x62, 0x00, 0x4a, 0x97, 0x74, 0xf6, 0xb0, 0x4b, 0xba, 0xe0, 0x13, 0x20, 0x20, + 0x68, 0x0d, 0x20, 0x50, 0x1a, 0x34, 0xcd, 0x9e, 0x1b, 0x3e, 0x63, 0x81, 0xfa, 0x09, 0x0f, 0x26, + 0x44, 0x00, 0x59, 0x30, 0xdd, 0x31, 0x2d, 0xcd, 0xc5, 0xed, 0x1d, 0x8d, 0x73, 0x8e, 0xd0, 0xcd, + 0x51, 0xf6, 0xbf, 0x78, 0x88, 0xd9, 0xfc, 0xad, 0xcf, 0x3c, 0x56, 0x0a, 0x5c, 0xa7, 0x85, 0xc7, + 0x17, 0x9f, 0x7c, 0x5a, 0x9d, 0xea, 0x98, 0x56, 0x03, 0xb7, 0x77, 0x96, 0x7d, 0xc2, 0xe8, 0x79, + 0x38, 0x19, 0x30, 0xc4, 0xb6, 0xb4, 0x3d, 0xbb, 0xdd, 0xd2, 0x1c, 0xbc, 0xa3, 0x19, 0xd4, 0xf1, + 0xcb, 0x53, 0x36, 0x1e, 0xf7, 0x41, 0x36, 0xac, 0xab, 0x76, 0xbb, 0xa5, 0xe2, 0x9d, 0x25, 0x52, + 0x8d, 0xce, 0x40, 0xc0, 0x0d, 0xcd, 0x6c, 0xb9, 0xb3, 0x85, 0x85, 0xe4, 0xb9, 0x94, 0x9a, 0xf7, + 0x0b, 0xeb, 0x2d, 0xb7, 0x9c, 0xf9, 0xe0, 0x9b, 0xf3, 0x47, 0xbe, 0xf8, 0xe6, 0xfc, 0x11, 0xe5, + 0x0a, 0x7d, 0xb5, 0x8d, 0x2f, 0x2d, 0xec, 0xa2, 0xcb, 0x90, 0xd5, 0xc5, 0x07, 0x7b, 0xf8, 0xf0, + 0x80, 0xa5, 0x19, 0x80, 0x2a, 0x9f, 0x92, 0x20, 0xbd, 0x7c, 0x7d, 0x53, 0x37, 0x1d, 0x54, 0x23, + 0x81, 0x91, 0x90, 0xd5, 0x71, 0x57, 0x79, 0x20, 0xde, 0x62, 0x99, 0xaf, 0x0f, 0x4b, 0x0f, 0x67, + 0xab, 0xa7, 0x7f, 0xfd, 0x33, 0x8f, 0xdd, 0xcf, 0xc9, 0x5c, 0xef, 0xcb, 0x14, 0x0b, 0x7a, 0xfd, + 0x19, 0xe4, 0xd0, 0x98, 0xaf, 0xc1, 0x24, 0xeb, 0xaa, 0x8b, 0x5e, 0x82, 0x89, 0x2e, 0xf9, 0x83, + 0x9f, 0xb8, 0x3e, 0x35, 0x54, 0xe6, 0x29, 0x7c, 0x58, 0x42, 0x18, 0x9e, 0xf2, 0xed, 0x09, 0x80, + 0xe5, 0xeb, 0xd7, 0x9b, 0x8e, 0xd9, 0x6d, 0x63, 0xef, 0x9d, 0x1a, 0xfb, 0x16, 0x1c, 0x0d, 0x65, + 0x0e, 0x1d, 0xe3, 0xf0, 0xe3, 0x9f, 0x0e, 0x72, 0x88, 0x8e, 0x11, 0x4b, 0xb6, 0xe5, 0x7a, 0x3e, + 0xd9, 0xe4, 0xe1, 0xc9, 0x2e, 0xbb, 0xde, 0x20, 0x67, 0x5f, 0x81, 0x5c, 0xc0, 0x0c, 0x17, 0xd5, + 0x21, 0xe3, 0xf1, 0xbf, 0x39, 0x83, 0x95, 0xe1, 0x0c, 0x16, 0x68, 0x61, 0x26, 0xfb, 0xe8, 0xca, + 0x5f, 0x48, 0x00, 0xa1, 0x35, 0xf2, 0xd7, 0x53, 0xc6, 0x48, 0x78, 0xc6, 0x95, 0x73, 0xf2, 0x9e, + 0xc3, 0x33, 0x46, 0x20, 0xc4, 0xd4, 0xef, 0x4c, 0xc0, 0xf4, 0x96, 0x58, 0xbd, 0x7f, 0xfd, 0x79, + 0xb0, 0x05, 0x93, 0xd8, 0xf2, 0x1c, 0xd3, 0xbf, 0x31, 0xf0, 0xf8, 0xb0, 0x39, 0x8f, 0x19, 0x54, + 0xcd, 0xf2, 0x9c, 0xfd, 0xb0, 0x04, 0x08, 0x5a, 0x21, 0x7e, 0xfc, 0x60, 0x12, 0x66, 0x87, 0xa1, + 0xa2, 0xb3, 0x50, 0x32, 0x1c, 0x4c, 0x0b, 0xa2, 0xef, 0x70, 0x16, 0x45, 0x31, 0x37, 0x3b, 0x2a, + 0x10, 0xcf, 0x92, 0x08, 0x17, 0x01, 0xbd, 0x37, 0x57, 0xb2, 0x18, 0x50, 0xa0, 0x86, 0xa7, 0x09, + 0x25, 0xf1, 0x54, 0xce, 0xb6, 0xde, 0xd6, 0x2d, 0x43, 0xb8, 0xdc, 0x87, 0xb2, 0xf9, 0xe2, 0xb9, + 0x9d, 0x2a, 0x23, 0x81, 0x6a, 0x30, 0x29, 0xa8, 0xa5, 0x0e, 0x4f, 0x4d, 0xe0, 0xa2, 0x07, 0x21, + 0x1f, 0x36, 0x0c, 0xd4, 0x1b, 0x49, 0xd1, 0xe7, 0x87, 0x73, 0x21, 0xdb, 0x30, 0xca, 0xfa, 0xa4, + 0x0f, 0xb4, 0x3e, 0xdc, 0xe9, 0xfb, 0xc1, 0x24, 0x4c, 0xa9, 0xb8, 0xf5, 0x37, 0x7f, 0x6a, 0x36, + 0x01, 0xd8, 0x72, 0x25, 0xda, 0x94, 0xcf, 0xce, 0x3d, 0xac, 0xf9, 0x2c, 0x23, 0xb2, 0xec, 0xd2, + 0x1f, 0x57, 0x1f, 0x9c, 0xa5, 0x77, 0x7e, 0x86, 0x7e, 0x3b, 0x01, 0xf9, 0xf0, 0x0c, 0xfd, 0xad, + 0x34, 0x5c, 0x68, 0x3d, 0x50, 0x55, 0x6c, 0xb3, 0xfc, 0xe1, 0x61, 0xaa, 0x6a, 0x40, 0x9a, 0x47, + 0xe8, 0xa8, 0x2f, 0x25, 0x21, 0xcd, 0x2f, 0xde, 0x6e, 0x0c, 0xf8, 0xb7, 0x23, 0x1f, 0x62, 0x2e, + 0x88, 0xb7, 0xac, 0x63, 0xdd, 0xdb, 0x07, 0xa1, 0x48, 0x02, 0xfb, 0xc8, 0x6d, 0x5e, 0xe9, 0x5c, + 0x81, 0xc6, 0xe7, 0xc1, 0xe1, 0x26, 0x34, 0x0f, 0x39, 0x02, 0x16, 0xe8, 0x62, 0x02, 0x03, 0x1d, + 0xfd, 0x76, 0x8d, 0x95, 0xa0, 0x8b, 0x80, 0xf6, 0xfc, 0x6c, 0x8b, 0x16, 0x30, 0x42, 0x3a, 0x57, + 0xa0, 0x6a, 0x61, 0x2a, 0xa8, 0x15, 0x28, 0xf7, 0x03, 0x90, 0x9e, 0x68, 0x2c, 0x33, 0xc9, 0x7f, + 0x2a, 0x9b, 0x94, 0x2c, 0xd3, 0xec, 0xe4, 0xb7, 0x48, 0xcc, 0x55, 0xee, 0x4b, 0x01, 0xf0, 0x48, + 0xa5, 0x39, 0xc6, 0xc2, 0xf8, 0xd3, 0xb7, 0xe6, 0xe7, 0xf6, 0xf5, 0x4e, 0xbb, 0xac, 0xc4, 0xd0, + 0x51, 0xe2, 0xb2, 0x12, 0xc4, 0x81, 0x8e, 0xa6, 0x10, 0x50, 0x1d, 0xe4, 0x1b, 0x78, 0x5f, 0x73, + 0xf8, 0xaf, 0xc9, 0x6b, 0x3b, 0x58, 0xbc, 0x87, 0x7e, 0x62, 0x31, 0x26, 0x4f, 0xbc, 0xb8, 0x64, + 0x9b, 0x16, 0xdf, 0xc6, 0x2c, 0xde, 0xc0, 0xfb, 0x2a, 0xc7, 0xbb, 0x82, 0x71, 0xf9, 0x01, 0xb2, + 0x5a, 0xee, 0xfc, 0xfe, 0x4f, 0x9f, 0x3f, 0x19, 0xca, 0x79, 0xde, 0xf6, 0x93, 0x7b, 0x6c, 0x8a, + 0x89, 0xf3, 0x8b, 0x02, 0x43, 0x14, 0xba, 0xc1, 0x0d, 0xa1, 0x78, 0x41, 0x3a, 0x38, 0x0e, 0x09, + 0xf0, 0x23, 0x71, 0x48, 0x68, 0x89, 0xbe, 0x18, 0xd8, 0x81, 0xc4, 0xa8, 0xd1, 0x84, 0xa5, 0x93, + 0x23, 0xd1, 0x95, 0x7f, 0x44, 0xf9, 0x4f, 0x12, 0x9c, 0x18, 0x90, 0x66, 0xbf, 0xcb, 0x06, 0x20, + 0x27, 0x54, 0x49, 0xa5, 0x42, 0x5c, 0xe2, 0xb9, 0xb7, 0xc5, 0x31, 0xe5, 0x0c, 0x18, 0x82, 0x77, + 0xc6, 0xa0, 0x71, 0x4d, 0xf6, 0x2b, 0x12, 0xcc, 0x84, 0x3b, 0xe0, 0x0f, 0xa5, 0x01, 0xf9, 0x70, + 0xd3, 0x7c, 0x10, 0x0f, 0x8c, 0x33, 0x88, 0x70, 0xff, 0x23, 0x44, 0xd0, 0xf5, 0x40, 0x63, 0xb0, + 0x94, 0xe2, 0xc5, 0xb1, 0x99, 0x22, 0x3a, 0x16, 0xab, 0x39, 0xd8, 0xdc, 0x7c, 0x49, 0x82, 0xd4, + 0xa6, 0x6d, 0xb7, 0xd1, 0xfb, 0x60, 0xca, 0xb2, 0x3d, 0x8d, 0xac, 0x2c, 0xdc, 0xd2, 0x78, 0xfa, + 0x80, 0x69, 0xe3, 0xda, 0x81, 0xbc, 0xfa, 0x83, 0xb7, 0xe6, 0x07, 0x31, 0xe3, 0xf6, 0x1d, 0x4a, + 0x96, 0xed, 0x55, 0x29, 0x50, 0x93, 0x65, 0x18, 0x76, 0xa0, 0x10, 0x6d, 0x8e, 0x69, 0xec, 0xca, + 0xa8, 0xe6, 0x0a, 0x23, 0x9b, 0xca, 0x6f, 0x87, 0xda, 0x61, 0x3f, 0x3d, 0xf4, 0xc7, 0x64, 0xe6, + 0xbe, 0x01, 0xe4, 0xeb, 0xfd, 0x57, 0x44, 0xaf, 0xc0, 0xa4, 0xb8, 0x12, 0x2a, 0x8d, 0x7b, 0xdd, + 0x34, 0xcc, 0x4f, 0x8e, 0x4c, 0x73, 0xb6, 0x9f, 0x4b, 0xc0, 0x89, 0x25, 0xdb, 0x72, 0x79, 0xb2, + 0x87, 0xaf, 0x6a, 0x96, 0x60, 0xde, 0x47, 0x0f, 0x0f, 0x49, 0x45, 0xe5, 0x07, 0x13, 0x4e, 0xd7, + 0xa1, 0x44, 0x4c, 0xac, 0x61, 0x5b, 0x6f, 0x33, 0xdf, 0x54, 0xb0, 0xdb, 0x2d, 0xde, 0xa3, 0x1b, + 0x78, 0x9f, 0xd0, 0xb5, 0xf0, 0xad, 0x08, 0xdd, 0xe4, 0xbd, 0xd1, 0xb5, 0xf0, 0xad, 0x10, 0xdd, + 0xe0, 0xdc, 0x50, 0x2a, 0x72, 0x0b, 0xe9, 0x32, 0x24, 0x89, 0x2a, 0x9c, 0x38, 0x84, 0xf2, 0x20, + 0x08, 0x21, 0xb3, 0xd6, 0x80, 0x13, 0x3c, 0x5b, 0xe0, 0x6e, 0xec, 0x50, 0x8e, 0x62, 0x3a, 0xa0, + 0x97, 0xf1, 0x7e, 0x4c, 0xea, 0x20, 0x3f, 0x56, 0xea, 0xe0, 0xfc, 0xcf, 0x49, 0x00, 0x41, 0xde, + 0x0c, 0x3d, 0x0a, 0xc7, 0xab, 0x1b, 0xeb, 0xcb, 0xc1, 0x85, 0x8c, 0xd0, 0xf6, 0xba, 0x38, 0xa9, + 0xe1, 0x76, 0xb1, 0x61, 0xee, 0x98, 0xb8, 0x85, 0x1e, 0x82, 0x99, 0x28, 0x34, 0xf9, 0xaa, 0x2d, + 0xcb, 0xd2, 0x5c, 0xfe, 0xce, 0xdd, 0x85, 0x0c, 0x8b, 0x13, 0x70, 0x0b, 0x9d, 0x83, 0xa3, 0x83, + 0x70, 0xf5, 0xf5, 0x15, 0x39, 0x31, 0x57, 0xb8, 0x73, 0x77, 0x21, 0xeb, 0x07, 0x14, 0x48, 0x01, + 0x14, 0x86, 0xe4, 0xf4, 0x92, 0x73, 0x70, 0xe7, 0xee, 0x42, 0x9a, 0x2d, 0x19, 0x7e, 0x93, 0xe3, + 0xeb, 0x01, 0xea, 0xd6, 0x8e, 0xa3, 0x1b, 0x54, 0x35, 0xcc, 0xc1, 0xb1, 0xfa, 0xfa, 0x15, 0xb5, + 0xb2, 0xd4, 0xac, 0x6f, 0xac, 0xf7, 0x9d, 0x0a, 0x88, 0xd6, 0x2d, 0x6f, 0x6c, 0x55, 0x57, 0x6b, + 0x5a, 0xa3, 0xbe, 0xb2, 0xce, 0xae, 0x5d, 0x45, 0xea, 0xde, 0xbb, 0xde, 0xac, 0xaf, 0xd5, 0xe4, + 0x44, 0xf5, 0xf2, 0xd0, 0x2d, 0xb9, 0xfb, 0x22, 0x8b, 0x31, 0x30, 0x47, 0x91, 0xcd, 0xb8, 0xff, + 0x1b, 0x00, 0x00, 0xff, 0xff, 0x99, 0x81, 0xa8, 0x52, 0xec, 0xa7, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r)