From ac493742f10ab3fd7fd68b0ac76599e88d4b497a Mon Sep 17 00:00:00 2001 From: Matt Kocubinski Date: Wed, 29 May 2024 12:27:07 -0400 Subject: [PATCH 01/16] refactor(core): remove redundant ExecMode (#20322) --- core/context/context.go | 15 --------------- server/v2/stf/internal/transaction.go | 18 ++++++++++++++++++ server/v2/stf/stf.go | 26 +++++++++++++------------- 3 files changed, 31 insertions(+), 28 deletions(-) create mode 100644 server/v2/stf/internal/transaction.go diff --git a/core/context/context.go b/core/context/context.go index 0092beb3f368..5fcccefc3b95 100644 --- a/core/context/context.go +++ b/core/context/context.go @@ -1,20 +1,5 @@ package context -// ExecMode defines the execution mode which can be set on a Context. -type ExecMode uint8 - -// All possible execution modes. -const ( - ExecModeCheck ExecMode = iota - ExecModeReCheck - ExecModeSimulate - ExecModePrepareProposal - ExecModeProcessProposal - ExecModeVoteExtension - ExecModeVerifyVoteExtension - ExecModeFinalize -) - const ( ExecModeKey = iota CometInfoKey diff --git a/server/v2/stf/internal/transaction.go b/server/v2/stf/internal/transaction.go new file mode 100644 index 000000000000..3499472b6f74 --- /dev/null +++ b/server/v2/stf/internal/transaction.go @@ -0,0 +1,18 @@ +package internal + +import "cosmossdk.io/core/transaction" + +// All possible transaction execution modes. +// For backwards compatibility and easier casting, the ExecMode values must be: +// 1) set equivalent to cosmos/cosmos-sdk/types package. +// 2) a superset of core/transaction/service.go:ExecMode with same numeric values. +const ( + ExecModeCheck transaction.ExecMode = iota + ExecModeReCheck + ExecModeSimulate + ExecModePrepareProposal + ExecModeProcessProposal + ExecModeVoteExtension + ExecModeVerifyVoteExtension + ExecModeFinalize +) diff --git a/server/v2/stf/stf.go b/server/v2/stf/stf.go index 9df1876d0ca5..57535d12d25d 100644 --- a/server/v2/stf/stf.go +++ b/server/v2/stf/stf.go @@ -7,7 +7,6 @@ import ( appmanager "cosmossdk.io/core/app" appmodulev2 "cosmossdk.io/core/appmodule/v2" - corecontext "cosmossdk.io/core/context" "cosmossdk.io/core/event" "cosmossdk.io/core/gas" "cosmossdk.io/core/header" @@ -15,6 +14,7 @@ import ( "cosmossdk.io/core/transaction" "cosmossdk.io/log" stfgas "cosmossdk.io/server/v2/stf/gas" + "cosmossdk.io/server/v2/stf/internal" ) // STF is a struct that manages the state transition component of the app. @@ -87,7 +87,7 @@ func (s STF[T]) DeliverBlock( return nil, nil, fmt.Errorf("unable to set initial header info, %w", err) } - exCtx := s.makeContext(ctx, appmanager.ConsensusIdentity, newState, corecontext.ExecModeFinalize) + exCtx := s.makeContext(ctx, appmanager.ConsensusIdentity, newState, internal.ExecModeFinalize) exCtx.setHeaderInfo(hi) consMessagesResponses, err := s.runConsensusMessages(exCtx, block.ConsensusMessages) if err != nil { @@ -127,7 +127,7 @@ func (s STF[T]) DeliverBlock( if err = isCtxCancelled(ctx); err != nil { return nil, nil, err } - txResults[i] = s.deliverTx(ctx, newState, txBytes, corecontext.ExecModeFinalize, hi) + txResults[i] = s.deliverTx(ctx, newState, txBytes, transaction.ExecModeFinalize, hi) } // reset events exCtx.events = make([]event.Event, 0) @@ -153,7 +153,7 @@ func (s STF[T]) deliverTx( ctx context.Context, state store.WriterMap, tx T, - execMode corecontext.ExecMode, + execMode transaction.ExecMode, hi header.Info, ) appmanager.TxResult { // recover in the case of a panic @@ -208,7 +208,7 @@ func (s STF[T]) validateTx( if err != nil { return 0, nil, err } - validateCtx := s.makeContext(ctx, appmanager.RuntimeIdentity, validateState, corecontext.ExecModeCheck) + validateCtx := s.makeContext(ctx, appmanager.RuntimeIdentity, validateState, transaction.ExecModeCheck) validateCtx.setHeaderInfo(hi) validateCtx.setGasLimit(gasLimit) err = s.doTxValidation(validateCtx, tx) @@ -227,7 +227,7 @@ func (s STF[T]) execTx( state store.WriterMap, gasLimit uint64, tx T, - execMode corecontext.ExecMode, + execMode transaction.ExecMode, hi header.Info, ) ([]transaction.Msg, uint64, []event.Event, error) { execState := s.branchFn(state) @@ -283,7 +283,7 @@ func (s STF[T]) runTxMsgs( state store.WriterMap, gasLimit uint64, tx T, - execMode corecontext.ExecMode, + execMode transaction.ExecMode, hi header.Info, ) ([]transaction.Msg, uint64, []event.Event, error) { txSenders, err := tx.GetSenders() @@ -450,7 +450,7 @@ func (s STF[T]) Simulate( if err != nil { return appmanager.TxResult{}, nil } - txr := s.deliverTx(ctx, simulationState, tx, corecontext.ExecModeSimulate, hi) + txr := s.deliverTx(ctx, simulationState, tx, internal.ExecModeSimulate, hi) return txr, simulationState } @@ -484,7 +484,7 @@ func (s STF[T]) Query( if err != nil { return nil, err } - queryCtx := s.makeContext(ctx, nil, queryState, corecontext.ExecModeSimulate) + queryCtx := s.makeContext(ctx, nil, queryState, internal.ExecModeSimulate) queryCtx.setHeaderInfo(hi) queryCtx.setGasLimit(gasLimit) return s.handleQuery(queryCtx, req) @@ -503,7 +503,7 @@ func (s STF[T]) RunWithCtx( closure func(ctx context.Context) error, ) (store.WriterMap, error) { branchedState := s.branchFn(state) - stfCtx := s.makeContext(ctx, nil, branchedState, corecontext.ExecModeFinalize) + stfCtx := s.makeContext(ctx, nil, branchedState, internal.ExecModeFinalize) return branchedState, closure(stfCtx) } @@ -542,7 +542,7 @@ type executionContext struct { // headerInfo contains the block info. headerInfo header.Info // execMode retains information about the exec mode. - execMode corecontext.ExecMode + execMode transaction.ExecMode branchFn branchFn makeGasMeter makeGasMeterFn @@ -577,7 +577,7 @@ func (s STF[T]) makeContext( ctx context.Context, sender transaction.Identity, store store.WriterMap, - execMode corecontext.ExecMode, + execMode transaction.ExecMode, ) *executionContext { return newExecutionContext( s.makeGasMeter, @@ -597,7 +597,7 @@ func newExecutionContext( ctx context.Context, sender transaction.Identity, state store.WriterMap, - execMode corecontext.ExecMode, + execMode transaction.ExecMode, ) *executionContext { meter := makeGasMeterFn(gas.NoGasLimit) meteredState := makeGasMeteredStoreFn(meter, state) From 7f756523ff13eb8c85cb1bbdd8f67f5154f8db5e Mon Sep 17 00:00:00 2001 From: Alexander Peters Date: Thu, 30 May 2024 12:43:54 +0200 Subject: [PATCH 02/16] fix: Bump CometBFT versions (#20481) --- .github/workflows/test.yml | 8 ++++---- client/v2/go.mod | 8 ++++---- client/v2/go.sum | 15 ++++++--------- go.mod | 7 +++---- go.sum | 15 ++++++--------- simapp/go.mod | 7 +++---- simapp/go.sum | 15 ++++++--------- tests/go.mod | 7 +++---- tests/go.sum | 15 ++++++--------- tests/systemtests/upgrade_test.go | 1 - x/accounts/defaults/lockup/go.mod | 6 ++---- x/accounts/defaults/lockup/go.sum | 15 ++++++--------- x/accounts/go.mod | 7 +++---- x/accounts/go.sum | 15 ++++++--------- x/auth/go.mod | 7 +++---- x/auth/go.sum | 15 ++++++--------- x/authz/go.mod | 11 ++++++----- x/authz/go.sum | 15 ++++++--------- x/bank/go.mod | 11 ++++++----- x/bank/go.sum | 15 ++++++--------- x/circuit/go.mod | 7 +++---- x/circuit/go.sum | 15 ++++++--------- x/consensus/go.mod | 7 +++---- x/consensus/go.sum | 15 ++++++--------- x/distribution/go.mod | 11 ++++++----- x/distribution/go.sum | 15 ++++++--------- x/epochs/go.mod | 7 +++---- x/epochs/go.sum | 15 ++++++--------- x/evidence/go.mod | 7 +++---- x/evidence/go.sum | 15 ++++++--------- x/feegrant/go.mod | 7 +++---- x/feegrant/go.sum | 15 ++++++--------- x/gov/go.mod | 8 ++++---- x/gov/go.sum | 15 ++++++--------- x/group/go.mod | 7 +++---- x/group/go.sum | 15 ++++++--------- x/mint/go.mod | 11 ++++++----- x/mint/go.sum | 15 ++++++--------- x/nft/go.mod | 7 +++---- x/nft/go.sum | 15 ++++++--------- x/params/go.mod | 7 +++---- x/params/go.sum | 15 ++++++--------- x/protocolpool/go.mod | 7 +++---- x/protocolpool/go.sum | 15 ++++++--------- x/slashing/go.mod | 7 +++---- x/slashing/go.sum | 15 ++++++--------- x/staking/go.mod | 7 +++---- x/staking/go.sum | 15 ++++++--------- x/upgrade/go.mod | 7 +++---- x/upgrade/go.sum | 15 ++++++--------- 50 files changed, 233 insertions(+), 321 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 18dc0faee101..687c6fe46807 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -184,10 +184,10 @@ jobs: name: "testnet-setup" path: ./systemtests/testnet/ retention-days: 3 - # - name: system tests v2 - # if: env.GIT_DIFF - # run: | - # make test-system + - name: system tests v2 + if: env.GIT_DIFF + run: | + make test-system - uses: actions/upload-artifact@v3 if: failure() with: diff --git a/client/v2/go.mod b/client/v2/go.mod index 2c59a43b2c82..615ac5cf73c5 100644 --- a/client/v2/go.mod +++ b/client/v2/go.mod @@ -48,9 +48,9 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -107,7 +107,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -117,7 +116,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -172,6 +170,8 @@ require ( pgregory.net/rapid v1.1.0 // indirect ) +require github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + replace github.com/cosmos/cosmos-sdk => ./../../ replace ( diff --git a/client/v2/go.sum b/client/v2/go.sum index 754f7991aabe..0feea0fcca70 100644 --- a/client/v2/go.sum +++ b/client/v2/go.sum @@ -93,12 +93,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -285,6 +285,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -313,8 +315,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -347,8 +347,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -598,7 +596,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/go.mod b/go.mod index 447829e23930..e300dfc85a18 100644 --- a/go.mod +++ b/go.mod @@ -19,8 +19,8 @@ require ( cosmossdk.io/x/tx v0.13.3 github.com/99designs/keyring v1.2.2 github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/btcutil v1.0.5 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 @@ -116,13 +116,13 @@ require ( github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // 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.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -132,7 +132,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/go.sum b/go.sum index e59b84000744..b3507453609e 100644 --- a/go.sum +++ b/go.sum @@ -82,12 +82,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -273,6 +273,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -300,8 +302,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -338,8 +338,6 @@ github.com/mdp/qrterminal/v3 v3.2.0 h1:qteQMXO3oyTK4IHwj2mWsKYYRBOp1Pj2WRYFYYNTC github.com/mdp/qrterminal/v3 v3.2.0/go.mod h1:XGGuua4Lefrl7TLEsSONiD+UEjQXJZ4mPzF+gWYIJkk= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -583,7 +581,6 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/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-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/simapp/go.mod b/simapp/go.mod index 7a6319920dce..39a3ee140aca 100644 --- a/simapp/go.mod +++ b/simapp/go.mod @@ -31,7 +31,7 @@ require ( cosmossdk.io/x/staking v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/tx v0.13.3 cosmossdk.io/x/upgrade v0.0.0-20230613133644-0a778132a60f - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-db v1.0.2 // this version is not used as it is always replaced by the latest Cosmos SDK version github.com/cosmos/cosmos-sdk v0.51.0 @@ -45,7 +45,7 @@ require ( google.golang.org/protobuf v1.34.1 ) -require github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 +require github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 require cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 @@ -139,6 +139,7 @@ require ( github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -148,7 +149,6 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -162,7 +162,6 @@ require ( github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mdp/qrterminal/v3 v3.2.0 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect diff --git a/simapp/go.sum b/simapp/go.sum index 70d404a3801a..5e99ea54aa45 100644 --- a/simapp/go.sum +++ b/simapp/go.sum @@ -291,12 +291,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -574,6 +574,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -610,8 +612,6 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -653,8 +653,6 @@ github.com/mdp/qrterminal/v3 v3.2.0 h1:qteQMXO3oyTK4IHwj2mWsKYYRBOp1Pj2WRYFYYNTC github.com/mdp/qrterminal/v3 v3.2.0/go.mod h1:XGGuua4Lefrl7TLEsSONiD+UEjQXJZ4mPzF+gWYIJkk= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= @@ -1070,7 +1068,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/tests/go.mod b/tests/go.mod index 0e22d8be4009..c6f59558c69c 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -18,7 +18,7 @@ require ( cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 cosmossdk.io/x/tx v0.13.3 cosmossdk.io/x/upgrade v0.0.0-20230613133644-0a778132a60f - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 // this version is not used as it is always replaced by the latest Cosmos SDK version @@ -46,7 +46,7 @@ require ( cosmossdk.io/x/mint v0.0.0-00010101000000-000000000000 cosmossdk.io/x/slashing v0.0.0-00010101000000-000000000000 cosmossdk.io/x/staking v0.0.0-20240226161501-23359a0b6d91 - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/google/go-cmp v0.6.0 github.com/google/gofuzz v1.2.0 github.com/jhump/protoreflect v1.16.0 @@ -141,6 +141,7 @@ require ( github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -150,7 +151,6 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -161,7 +161,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect diff --git a/tests/go.sum b/tests/go.sum index 952981598728..6dbeb953f23d 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -291,12 +291,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -571,6 +571,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -607,8 +609,6 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -644,8 +644,6 @@ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= @@ -1060,7 +1058,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/tests/systemtests/upgrade_test.go b/tests/systemtests/upgrade_test.go index c1b64c3301ba..d1b093175165 100644 --- a/tests/systemtests/upgrade_test.go +++ b/tests/systemtests/upgrade_test.go @@ -17,7 +17,6 @@ import ( ) func TestChainUpgrade(t *testing.T) { - t.Skip("Deactivated until there is a migration path for comet. See https://github.com/cosmos/cosmos-sdk/issues/20318") // Scenario: // start a legacy chain with some state // when a chain upgrade proposal is executed diff --git a/x/accounts/defaults/lockup/go.mod b/x/accounts/defaults/lockup/go.mod index d719e11dfb68..b628983250ec 100644 --- a/x/accounts/defaults/lockup/go.mod +++ b/x/accounts/defaults/lockup/go.mod @@ -18,13 +18,11 @@ require cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.1-20240312114316-c0d3497e35d6.1 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/flatbuffers v2.0.8+incompatible // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/supranational/blst v0.3.11 // indirect go.opencensus.io v0.24.0 // indirect ) @@ -53,7 +51,7 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect diff --git a/x/accounts/defaults/lockup/go.sum b/x/accounts/defaults/lockup/go.sum index b0c907140ea6..928525bd1989 100644 --- a/x/accounts/defaults/lockup/go.sum +++ b/x/accounts/defaults/lockup/go.sum @@ -77,12 +77,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= 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= @@ -263,6 +263,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -291,8 +293,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -323,8 +323,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -558,7 +556,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/accounts/go.mod b/x/accounts/go.mod index 2f59eab8ab01..abf2291ddd41 100644 --- a/x/accounts/go.mod +++ b/x/accounts/go.mod @@ -21,7 +21,7 @@ require cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect require ( cosmossdk.io/log v1.3.1 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect go.opencensus.io v0.24.0 // indirect ) @@ -50,9 +50,9 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 @@ -116,7 +116,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/accounts/go.sum b/x/accounts/go.sum index a197d274a6d0..4490a34e4417 100644 --- a/x/accounts/go.sum +++ b/x/accounts/go.sum @@ -87,12 +87,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -279,6 +279,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -307,8 +309,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -339,8 +339,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -585,7 +583,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/auth/go.mod b/x/auth/go.mod index e885489ad08a..02112c9ce685 100644 --- a/x/auth/go.mod +++ b/x/auth/go.mod @@ -13,7 +13,7 @@ require ( cosmossdk.io/x/accounts v0.0.0-20240226161501-23359a0b6d91 cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 cosmossdk.io/x/tx v0.13.3 - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 github.com/cosmos/gogoproto v1.4.12 @@ -56,7 +56,7 @@ require ( github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -100,6 +100,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -108,7 +109,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -118,7 +118,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/auth/go.sum b/x/auth/go.sum index 40fc19ed51da..a2a61e6850b4 100644 --- a/x/auth/go.sum +++ b/x/auth/go.sum @@ -87,12 +87,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -279,6 +279,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -307,8 +309,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -339,8 +339,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -588,7 +586,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/authz/go.mod b/x/authz/go.mod index 81fef3b59508..b1bf77da11dc 100644 --- a/x/authz/go.mod +++ b/x/authz/go.mod @@ -16,7 +16,7 @@ require ( cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 cosmossdk.io/x/tx v0.13.3 github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 github.com/cosmos/gogoproto v1.4.12 @@ -50,7 +50,7 @@ require ( github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -103,7 +103,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -113,7 +112,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -169,7 +167,10 @@ require ( sigs.k8s.io/yaml v1.4.0 // indirect ) -require cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect +require ( + cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect +) replace github.com/cosmos/cosmos-sdk => ../../. diff --git a/x/authz/go.sum b/x/authz/go.sum index 40fc19ed51da..a2a61e6850b4 100644 --- a/x/authz/go.sum +++ b/x/authz/go.sum @@ -87,12 +87,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -279,6 +279,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -307,8 +309,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -339,8 +339,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -588,7 +586,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/bank/go.mod b/x/bank/go.mod index 039a51d38444..748b2f05f28b 100644 --- a/x/bank/go.mod +++ b/x/bank/go.mod @@ -13,7 +13,7 @@ require ( cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/accounts v0.0.0-20240226161501-23359a0b6d91 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 github.com/cosmos/gogoproto v1.4.12 @@ -50,7 +50,7 @@ require ( github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -102,7 +102,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -112,7 +111,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -168,7 +166,10 @@ require ( sigs.k8s.io/yaml v1.4.0 // indirect ) -require cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect +require ( + cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect +) replace github.com/cosmos/cosmos-sdk => ../../. diff --git a/x/bank/go.sum b/x/bank/go.sum index 40fc19ed51da..a2a61e6850b4 100644 --- a/x/bank/go.sum +++ b/x/bank/go.sum @@ -87,12 +87,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -279,6 +279,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -307,8 +309,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -339,8 +339,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -588,7 +586,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/circuit/go.mod b/x/circuit/go.mod index 91acadd40bde..b8504ae4455f 100644 --- a/x/circuit/go.mod +++ b/x/circuit/go.mod @@ -44,9 +44,9 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect @@ -93,6 +93,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -101,7 +102,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -111,7 +111,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/circuit/go.sum b/x/circuit/go.sum index 8019327ee0a1..885e0fa697e2 100644 --- a/x/circuit/go.sum +++ b/x/circuit/go.sum @@ -89,12 +89,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -281,6 +281,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -309,8 +311,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -341,8 +341,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -590,7 +588,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/consensus/go.mod b/x/consensus/go.mod index a7d785ed0fab..c203529a29ec 100644 --- a/x/consensus/go.mod +++ b/x/consensus/go.mod @@ -9,8 +9,8 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/auth v0.0.0-00010101000000-000000000000 - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 github.com/cosmos/gogoproto v1.4.12 @@ -92,6 +92,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -100,7 +101,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -110,7 +110,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/consensus/go.sum b/x/consensus/go.sum index 8019327ee0a1..885e0fa697e2 100644 --- a/x/consensus/go.sum +++ b/x/consensus/go.sum @@ -89,12 +89,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -281,6 +281,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -309,8 +311,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -341,8 +341,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -590,7 +588,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/distribution/go.mod b/x/distribution/go.mod index 04c1800a281b..4f490821df9a 100644 --- a/x/distribution/go.mod +++ b/x/distribution/go.mod @@ -29,7 +29,10 @@ require ( gotest.tools/v3 v3.5.1 ) -require github.com/cockroachdb/errors v1.11.1 // indirect +require ( + github.com/cockroachdb/errors v1.11.1 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect +) require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.1-20240312114316-c0d3497e35d6.1 // indirect @@ -52,9 +55,9 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -106,7 +109,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -116,7 +118,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/distribution/go.sum b/x/distribution/go.sum index c93063005352..c0db7f8dd8c1 100644 --- a/x/distribution/go.sum +++ b/x/distribution/go.sum @@ -89,12 +89,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -281,6 +281,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -309,8 +311,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -341,8 +341,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -590,7 +588,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/epochs/go.mod b/x/epochs/go.mod index 5d2f00be7de9..fbffc6345c18 100644 --- a/x/epochs/go.mod +++ b/x/epochs/go.mod @@ -43,9 +43,9 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -98,7 +98,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -108,7 +107,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -169,6 +167,7 @@ require ( require ( cosmossdk.io/log v1.3.1 // indirect cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect ) replace github.com/cosmos/cosmos-sdk => ../../. diff --git a/x/epochs/go.sum b/x/epochs/go.sum index 622c656db5d8..f0252f034f8f 100644 --- a/x/epochs/go.sum +++ b/x/epochs/go.sum @@ -87,12 +87,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -279,6 +279,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -307,8 +309,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -339,8 +339,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -585,7 +583,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/evidence/go.mod b/x/evidence/go.mod index f7d9b70679cf..6ef3d7fb2b29 100644 --- a/x/evidence/go.mod +++ b/x/evidence/go.mod @@ -48,9 +48,9 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -95,6 +95,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -103,7 +104,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -113,7 +113,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/evidence/go.sum b/x/evidence/go.sum index 8019327ee0a1..885e0fa697e2 100644 --- a/x/evidence/go.sum +++ b/x/evidence/go.sum @@ -89,12 +89,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -281,6 +281,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -309,8 +311,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -341,8 +341,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -590,7 +588,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 13ed27b8c772..b87bbcc49e20 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/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/gov v0.0.0-20230925135524-a1bc045b3190 - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 github.com/cosmos/gogoproto v1.4.12 @@ -53,7 +53,7 @@ require ( github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -106,7 +106,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -117,7 +116,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -175,6 +173,7 @@ require ( require ( cosmossdk.io/log v1.3.1 // indirect cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect ) replace github.com/cosmos/cosmos-sdk => ../../. diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index 6edfa48f05b7..b4323f443c6b 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -95,12 +95,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -287,6 +287,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -315,8 +317,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -349,8 +349,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -600,7 +598,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/gov/go.mod b/x/gov/go.mod index 3ce7db093cf8..6f3bcc3592b6 100644 --- a/x/gov/go.mod +++ b/x/gov/go.mod @@ -18,7 +18,7 @@ require ( cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 github.com/chzyer/readline v1.5.1 github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 github.com/cosmos/gogoproto v1.4.12 @@ -57,7 +57,7 @@ require ( github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -110,7 +110,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -120,7 +119,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -173,6 +171,8 @@ require ( sigs.k8s.io/yaml v1.4.0 // indirect ) +require github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + replace github.com/cosmos/cosmos-sdk => ../../. replace ( diff --git a/x/gov/go.sum b/x/gov/go.sum index ea366f85ec3e..4c5becd0714c 100644 --- a/x/gov/go.sum +++ b/x/gov/go.sum @@ -93,12 +93,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -285,6 +285,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -313,8 +315,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -347,8 +347,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -598,7 +596,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/group/go.mod b/x/group/go.mod index 4dc035413835..5db2fed2edb1 100644 --- a/x/group/go.mod +++ b/x/group/go.mod @@ -19,7 +19,7 @@ require ( cosmossdk.io/x/mint v0.0.0-00010101000000-000000000000 cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 github.com/cockroachdb/apd/v2 v2.0.2 - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 @@ -60,7 +60,7 @@ require ( github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect @@ -104,6 +104,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -112,7 +113,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -122,7 +122,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/group/go.sum b/x/group/go.sum index 384b5480ffbf..546e038be58c 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -95,12 +95,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -287,6 +287,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -315,8 +317,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -349,8 +349,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -600,7 +598,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/mint/go.mod b/x/mint/go.mod index 01c08fd00272..1655f3525390 100644 --- a/x/mint/go.mod +++ b/x/mint/go.mod @@ -45,7 +45,7 @@ require ( github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect @@ -159,19 +159,20 @@ require ( require ( buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.1-20240312114316-c0d3497e35d6.1 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/flatbuffers v2.0.8+incompatible // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/supranational/blst v0.3.11 // indirect go.opencensus.io v0.24.0 // indirect ) -require cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect +require ( + cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect +) replace github.com/cosmos/cosmos-sdk => ../../. diff --git a/x/mint/go.sum b/x/mint/go.sum index 8019327ee0a1..885e0fa697e2 100644 --- a/x/mint/go.sum +++ b/x/mint/go.sum @@ -89,12 +89,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -281,6 +281,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -309,8 +311,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -341,8 +341,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -590,7 +588,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/nft/go.mod b/x/nft/go.mod index 3660bf2d07a2..2eea056245e6 100644 --- a/x/nft/go.mod +++ b/x/nft/go.mod @@ -46,9 +46,9 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -93,6 +93,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -101,7 +102,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -111,7 +111,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/nft/go.sum b/x/nft/go.sum index 8019327ee0a1..885e0fa697e2 100644 --- a/x/nft/go.sum +++ b/x/nft/go.sum @@ -89,12 +89,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -281,6 +281,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -309,8 +311,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -341,8 +341,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -590,7 +588,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/params/go.mod b/x/params/go.mod index 1c3e8c00fbb5..b7c1b2074694 100644 --- a/x/params/go.mod +++ b/x/params/go.mod @@ -11,7 +11,7 @@ require ( cosmossdk.io/math v1.3.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc cosmossdk.io/x/gov v0.0.0-20230925135524-a1bc045b3190 - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 @@ -50,7 +50,7 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -95,6 +95,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -103,7 +104,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -113,7 +113,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/params/go.sum b/x/params/go.sum index 8019327ee0a1..885e0fa697e2 100644 --- a/x/params/go.sum +++ b/x/params/go.sum @@ -89,12 +89,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -281,6 +281,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -309,8 +311,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -341,8 +341,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -590,7 +588,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/protocolpool/go.mod b/x/protocolpool/go.mod index 5879bb734446..b26b90a19be6 100644 --- a/x/protocolpool/go.mod +++ b/x/protocolpool/go.mod @@ -48,9 +48,9 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -95,6 +95,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -103,7 +104,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -113,7 +113,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/protocolpool/go.sum b/x/protocolpool/go.sum index 8019327ee0a1..885e0fa697e2 100644 --- a/x/protocolpool/go.sum +++ b/x/protocolpool/go.sum @@ -89,12 +89,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -281,6 +281,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -309,8 +311,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -341,8 +341,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -590,7 +588,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/slashing/go.mod b/x/slashing/go.mod index 2bb8ecb3a636..b5c7116200b0 100644 --- a/x/slashing/go.mod +++ b/x/slashing/go.mod @@ -49,9 +49,9 @@ require ( github.com/cockroachdb/pebble v1.1.0 // 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-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 // indirect + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect @@ -96,6 +96,7 @@ require ( github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -104,7 +105,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -114,7 +114,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/x/slashing/go.sum b/x/slashing/go.sum index 9564083d74ec..1ff412a0d8b3 100644 --- a/x/slashing/go.sum +++ b/x/slashing/go.sum @@ -91,12 +91,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -283,6 +283,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -311,8 +313,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -343,8 +343,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -592,7 +590,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/staking/go.mod b/x/staking/go.mod index dd1ad4551456..19ff3233acca 100644 --- a/x/staking/go.mod +++ b/x/staking/go.mod @@ -10,8 +10,8 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 github.com/cosmos/gogoproto v1.4.12 @@ -162,8 +162,6 @@ require ( github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/flatbuffers v2.0.8+incompatible // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/supranational/blst v0.3.11 // indirect go.opencensus.io v0.24.0 // indirect ) @@ -174,6 +172,7 @@ require ( cosmossdk.io/log v1.3.1 // indirect cosmossdk.io/x/accounts v0.0.0-20240226161501-23359a0b6d91 // indirect cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20240417181816-5e7aae0db1f5 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect ) replace github.com/cosmos/cosmos-sdk => ../../. diff --git a/x/staking/go.sum b/x/staking/go.sum index 40fc19ed51da..a2a61e6850b4 100644 --- a/x/staking/go.sum +++ b/x/staking/go.sum @@ -87,12 +87,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -279,6 +279,8 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b 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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -307,8 +309,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -339,8 +339,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -588,7 +586,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/x/upgrade/go.mod b/x/upgrade/go.mod index de8938f6950b..86ea12eb11b5 100644 --- a/x/upgrade/go.mod +++ b/x/upgrade/go.mod @@ -12,8 +12,8 @@ require ( cosmossdk.io/x/auth v0.0.0-00010101000000-000000000000 cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 cosmossdk.io/x/gov v0.0.0-20230925135524-a1bc045b3190 - github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 - github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.51.0 @@ -117,6 +117,7 @@ require ( github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -126,7 +127,6 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -137,7 +137,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect diff --git a/x/upgrade/go.sum b/x/upgrade/go.sum index f23425cf1dce..187555ff9262 100644 --- a/x/upgrade/go.sum +++ b/x/upgrade/go.sum @@ -295,12 +295,12 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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-alpha.2.0.20240429102542-490e9bc3de65 h1:vNrFdj8MmdHmZPovE1bZcOpY8VNK2fy3O3bjgkvGA8A= -github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:FH1mC3P645pmV3TcHly2xc/2QnKOztRVS7QI77L8Pkk= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65 h1:Bj+DkG59qYZE54uWBKXsNtiug1u6M4x8Tk3l5tAb/3I= -github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240429102542-490e9bc3de65/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -573,6 +573,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= @@ -609,8 +611,6 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -646,8 +646,6 @@ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= @@ -1062,7 +1060,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From 90cbb022d5f6c1e6a025512403167fc7b94828b1 Mon Sep 17 00:00:00 2001 From: Dev Ojha Date: Thu, 30 May 2024 19:44:14 +0900 Subject: [PATCH 03/16] perf(math): Significantly speedup Dec quo truncate and quo Roundup (#20034) Co-authored-by: Marko Co-authored-by: marbar3778 Co-authored-by: Alex Peters --- math/CHANGELOG.md | 2 + math/dec.go | 16 +-- math/dec_test.go | 272 +++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 269 insertions(+), 21 deletions(-) diff --git a/math/CHANGELOG.md b/math/CHANGELOG.md index d700534ae461..d05484340906 100644 --- a/math/CHANGELOG.md +++ b/math/CHANGELOG.md @@ -36,6 +36,8 @@ Ref: https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.j ## [Unreleased] +* [#20034](https://github.com/cosmos/cosmos-sdk/pull/20034) Significantly speedup LegacyDec.QuoTruncate and LegacyDec.QuoRoundUp. + ## [math/v1.3.0](https://github.com/cosmos/cosmos-sdk/releases/tag/math/v1.3.0) - 2024-02-22 ### Features diff --git a/math/dec.go b/math/dec.go index 0ca1cfcb8c22..0bcd40a4a4a6 100644 --- a/math/dec.go +++ b/math/dec.go @@ -397,13 +397,12 @@ func (d LegacyDec) QuoTruncate(d2 LegacyDec) LegacyDec { return d.ImmutOp(LegacyDec.QuoTruncateMut, d2) } -// QuoTruncateMut mutable quotient truncate +// QuoTruncateMut divides the current LegacyDec value by the provided LegacyDec value, truncating the result. func (d LegacyDec) QuoTruncateMut(d2 LegacyDec) LegacyDec { - // multiply precision twice - d.i.Mul(d.i, squaredPrecisionReuse) + // multiply precision once before performing division + d.i.Mul(d.i, precisionReuse) d.i.Quo(d.i, d2.i) - chopPrecisionAndTruncate(d.i) if d.i.BitLen() > maxDecBitLen { panic("Int overflow") } @@ -418,10 +417,13 @@ func (d LegacyDec) QuoRoundUp(d2 LegacyDec) LegacyDec { // QuoRoundupMut mutable quotient, round up func (d LegacyDec) QuoRoundupMut(d2 LegacyDec) LegacyDec { // multiply precision twice - d.i.Mul(d.i, squaredPrecisionReuse) - d.i.Quo(d.i, d2.i) + d.i.Mul(d.i, precisionReuse) + _, rem := d.i.QuoRem(d.i, d2.i, big.NewInt(0)) + if rem.Sign() > 0 && d.IsNegative() == d2.IsNegative() || + rem.Sign() < 0 && d.IsNegative() != d2.IsNegative() { + d.i.Add(d.i, oneInt) + } - chopPrecisionAndRoundUp(d.i) if d.i.BitLen() > maxDecBitLen { panic("Int overflow") } diff --git a/math/dec_test.go b/math/dec_test.go index 96d7231a9413..1e72e173e84f 100644 --- a/math/dec_test.go +++ b/math/dec_test.go @@ -104,7 +104,7 @@ func (s *decimalTestSuite) TestNewDecFromStr() { s.Require().NotNil(err, "error expected, decimalStr %v, tc %v", tc.decimalStr, tcIndex) } else { s.Require().Nil(err, "unexpected error, decimalStr %v, tc %v", tc.decimalStr, tcIndex) - s.Require().True(res.Equal(tc.exp), "equality was incorrect, res %v, exp %v, tc %v", res, tc.exp, tcIndex) + s.Require().True(res.Equal(tc.exp), "equality was incorrect, res %v, expTruncated %v, tc %v", res, tc.exp, tcIndex) } // negative tc @@ -114,7 +114,7 @@ func (s *decimalTestSuite) TestNewDecFromStr() { } else { s.Require().Nil(err, "unexpected error, decimalStr %v, tc %v", tc.decimalStr, tcIndex) exp := tc.exp.Mul(math.LegacyNewDec(-1)) - s.Require().True(res.Equal(exp), "equality was incorrect, res %v, exp %v, tc %v", res, exp, tcIndex) + s.Require().True(res.Equal(exp), "equality was incorrect, res %v, expTruncated %v, tc %v", res, exp, tcIndex) } } } @@ -267,24 +267,24 @@ func (s *decimalTestSuite) TestArithmetic() { resMul := tc.d1.Mul(tc.d2) resMulTruncate := tc.d1.MulTruncate(tc.d2) resMulRoundUp := tc.d1.MulRoundUp(tc.d2) - s.Require().True(tc.expAdd.Equal(resAdd), "exp %v, res %v, tc %d", tc.expAdd, resAdd, tcIndex) - s.Require().True(tc.expSub.Equal(resSub), "exp %v, res %v, tc %d", tc.expSub, resSub, tcIndex) - s.Require().True(tc.expMul.Equal(resMul), "exp %v, res %v, tc %d", tc.expMul, resMul, tcIndex) - s.Require().True(tc.expMulTruncate.Equal(resMulTruncate), "exp %v, res %v, tc %d", tc.expMulTruncate, resMulTruncate, tcIndex) - s.Require().True(tc.expMulRoundUp.Equal(resMulRoundUp), "exp %v, res %v, tc %d", tc.expMulRoundUp, resMulRoundUp, tcIndex) + s.Require().True(tc.expAdd.Equal(resAdd), "expTruncated %v, res %v, tc %d", tc.expAdd, resAdd, tcIndex) + s.Require().True(tc.expSub.Equal(resSub), "expTruncated %v, res %v, tc %d", tc.expSub, resSub, tcIndex) + s.Require().True(tc.expMul.Equal(resMul), "expTruncated %v, res %v, tc %d", tc.expMul, resMul, tcIndex) + s.Require().True(tc.expMulTruncate.Equal(resMulTruncate), "expTruncated %v, res %v, tc %d", tc.expMulTruncate, resMulTruncate, tcIndex) + s.Require().True(tc.expMulRoundUp.Equal(resMulRoundUp), "expTruncated %v, res %v, tc %d", tc.expMulRoundUp, resMulRoundUp, tcIndex) if tc.d2.IsZero() { // panic for divide by zero s.Require().Panics(func() { tc.d1.Quo(tc.d2) }) } else { resQuo := tc.d1.Quo(tc.d2) - s.Require().True(tc.expQuo.Equal(resQuo), "exp %v, res %v, tc %d", tc.expQuo.String(), resQuo.String(), tcIndex) + s.Require().True(tc.expQuo.Equal(resQuo), "expTruncated %v, res %v, tc %d", tc.expQuo.String(), resQuo.String(), tcIndex) resQuoRoundUp := tc.d1.QuoRoundUp(tc.d2) - s.Require().True(tc.expQuoRoundUp.Equal(resQuoRoundUp), "exp %v, res %v, tc %d", + s.Require().True(tc.expQuoRoundUp.Equal(resQuoRoundUp), "expTruncated %v, res %v, tc %d", tc.expQuoRoundUp.String(), resQuoRoundUp.String(), tcIndex) resQuoTruncate := tc.d1.QuoTruncate(tc.d2) - s.Require().True(tc.expQuoTruncate.Equal(resQuoTruncate), "exp %v, res %v, tc %d", + s.Require().True(tc.expQuoTruncate.Equal(resQuoTruncate), "expTruncated %v, res %v, tc %d", tc.expQuoTruncate.String(), resQuoTruncate.String(), tcIndex) } } @@ -299,10 +299,10 @@ func (s *decimalTestSuite) TestMulRoundUp_RoundingAtPrecisionEnd() { ) actualRoundUp := a.MulRoundUp(b) - s.Require().Equal(expectedRoundUp.String(), actualRoundUp.String(), "exp %v, res %v", expectedRoundUp, actualRoundUp) + s.Require().Equal(expectedRoundUp.String(), actualRoundUp.String(), "expTruncated %v, res %v", expectedRoundUp, actualRoundUp) actualTruncate := a.MulTruncate(b) - s.Require().Equal(expectedTruncate.String(), actualTruncate.String(), "exp %v, res %v", expectedRoundUp, actualTruncate) + s.Require().Equal(expectedTruncate.String(), actualTruncate.String(), "expTruncated %v, res %v", expectedRoundUp, actualTruncate) } func (s *decimalTestSuite) TestBankerRoundChop() { @@ -668,11 +668,15 @@ func BenchmarkLegacyQuoMut(b *testing.B) { func BenchmarkLegacyQuoTruncateMut(b *testing.B) { b1 := math.LegacyNewDec(17e2 + 8371) + baseArr := make([]math.LegacyDec, b.N) + for i := 0; i < b.N; i++ { + baseArr[i] = b1.Clone() + } b2 := math.LegacyNewDec(4371) b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { - sink = b1.QuoTruncateMut(b2) + sink = baseArr[i].QuoTruncateMut(b2) } if sink == nil { @@ -697,11 +701,15 @@ func BenchmarkLegacySqrtOnMersennePrime(b *testing.B) { func BenchmarkLegacyQuoRoundupMut(b *testing.B) { b1 := math.LegacyNewDec(17e2 + 8371) + baseArr := make([]math.LegacyDec, b.N) + for i := 0; i < b.N; i++ { + baseArr[i] = b1.Clone() + } b2 := math.LegacyNewDec(4371) b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { - sink = b1.QuoRoundupMut(b2) + sink = baseArr[i].QuoRoundupMut(b2) } if sink == nil { @@ -782,3 +790,239 @@ func (s *decimalTestSuite) TestConvertToBigIntMutativeForLegacyDec() { s.Require().NotEqual(big.NewInt(50), i.BigIntMut()) s.Require().NotEqual(big.NewInt(50), i.BigInt()) } + +func TestQuoMut(t *testing.T) { + specs := map[string]struct { + dividend, divisor math.LegacyDec + expTruncated, expRoundedUp string + expPanic bool + }{ + "0.0000000000000000001": { + dividend: math.LegacyNewDecWithPrec(1, 18), + divisor: math.LegacyMustNewDecFromStr("10"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "0.0000000000000000002": { + dividend: math.LegacyNewDecWithPrec(1, 18), + divisor: math.LegacyMustNewDecFromStr("5"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "0.0000000000000000003": { + dividend: math.LegacyNewDecWithPrec(1, 18), + divisor: math.LegacyMustNewDecFromStr("3.333333333333333"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "0.0000000000000000004": { + dividend: math.LegacyNewDecWithPrec(1, 18), + divisor: math.LegacyMustNewDecFromStr("2.5"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "0.0000000000000000005": { + dividend: math.LegacyNewDecWithPrec(1, 18), + divisor: math.LegacyMustNewDecFromStr("2"), + expRoundedUp: "0.000000000000000001", + + expTruncated: "0.000000000000000000", + }, + "0.0000000000000000006": { + dividend: math.LegacyNewDecWithPrec(1, 18), + divisor: math.LegacyMustNewDecFromStr("1.666666666666666666"), + expRoundedUp: "0.000000000000000001", + + expTruncated: "0.000000000000000000", + }, + "0.0000000000000000007": { + dividend: math.LegacyNewDecWithPrec(1, 18), + divisor: math.LegacyMustNewDecFromStr("1.428571428571429"), + expRoundedUp: "0.000000000000000001", + + expTruncated: "0.000000000000000000", + }, + "0.0000000000000000008": { + dividend: math.LegacyNewDecWithPrec(1, 18), + divisor: math.LegacyMustNewDecFromStr("1.25"), + expRoundedUp: "0.000000000000000001", + + expTruncated: "0.000000000000000000", + }, + "0.0000000000000000009": { + dividend: math.LegacyNewDecWithPrec(1, 18), + divisor: math.LegacyMustNewDecFromStr("1.111111111111111"), + expRoundedUp: "0.000000000000000001", + + expTruncated: "0.000000000000000000", + }, + "-0.0000000000000000001": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("10"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "-0.0000000000000000002": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("5"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "-0.0000000000000000003": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("3.333333333333333"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "-0.0000000000000000004": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("2.5"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "-0.0000000000000000005": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("2"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "-0.0000000000000000006": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("1.666666666666666666"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "-0.0000000000000000007": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("1.428571428571429"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "-0.0000000000000000008": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("1.25"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "-0.0000000000000000009": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("1.111111111111111"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "--0.0000000000000000001": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("-10"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "--0.0000000000000000002": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("-5"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "--0.0000000000000000003": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("-3.333333333333333"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "--0.0000000000000000004": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("-2.5"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "--0.0000000000000000005": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("-2"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "--0.0000000000000000006": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("-1.666666666666666666"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "--0.0000000000000000007": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("-1.428571428571429"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "--0.0000000000000000008": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("-1.25"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "--0.0000000000000000009": { + dividend: math.LegacyNewDecWithPrec(1, 18).Neg(), + divisor: math.LegacyMustNewDecFromStr("-1.111111111111111"), + expRoundedUp: "0.000000000000000001", + expTruncated: "0.000000000000000000", + }, + "big / small": { + dividend: math.LegacyMustNewDecFromStr("999999999999999999"), + divisor: math.LegacyNewDecWithPrec(1, 18), + expRoundedUp: "999999999999999999000000000000000000.000000000000000000", + expTruncated: "999999999999999999000000000000000000.000000000000000000", + }, + "divide by dividend": { + dividend: math.LegacyNewDecWithPrec(123, 0), + divisor: math.LegacyMustNewDecFromStr("123"), + expRoundedUp: "1.000000000000000000", + expTruncated: "1.000000000000000000", + }, + "zero divided": { + dividend: math.LegacyNewDecWithPrec(0, 0), + divisor: math.LegacyMustNewDecFromStr("1"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "zero divided by negative value": { + dividend: math.LegacyNewDecWithPrec(0, 0), + divisor: math.LegacyMustNewDecFromStr("-1"), + expRoundedUp: "0.000000000000000000", + expTruncated: "0.000000000000000000", + }, + "zero divided by zero": { + dividend: math.LegacyNewDecWithPrec(0, 0), + divisor: math.LegacyMustNewDecFromStr("0"), + expPanic: true, + }, + "divide by zero": { + dividend: math.LegacyNewDecWithPrec(1, 0), + divisor: math.LegacyMustNewDecFromStr("0"), + expPanic: true, + }, + } + for name, spec := range specs { + t.Run(name, func(t *testing.T) { + t.Run("round up", func(t *testing.T) { + t.Parallel() + if !spec.expPanic { + got := spec.dividend.Clone().QuoRoundupMut(spec.divisor.Clone()) + require.Equal(t, spec.expRoundedUp, got.String()) + return + } + require.Panics(t, func() { + _ = spec.dividend.Clone().QuoRoundupMut(spec.divisor.Clone()) + }) + }) + t.Run("truncate", func(t *testing.T) { + t.Parallel() + if !spec.expPanic { + got := spec.dividend.Clone().QuoTruncateMut(spec.divisor.Clone()) + require.Equal(t, spec.expTruncated, got.String()) + return + } + require.Panics(t, func() { + _ = spec.dividend.Clone().QuoTruncateMut(spec.divisor.Clone()) + }) + }) + }) + } +} From 465410c75bce6f09c7d1e441dafade0322d012b8 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Thu, 30 May 2024 19:45:13 +0530 Subject: [PATCH 04/16] feat(cosmovisor): load cosmovisor configuration from toml file (#19995) --- tools/cosmovisor/CHANGELOG.md | 12 ++ tools/cosmovisor/args.go | 185 +++++++++++++++--- tools/cosmovisor/args_test.go | 164 ++++++++++++---- .../cosmovisor/cmd/cosmovisor/add_upgrade.go | 7 +- tools/cosmovisor/cmd/cosmovisor/config.go | 8 +- tools/cosmovisor/cmd/cosmovisor/init.go | 38 +++- tools/cosmovisor/cmd/cosmovisor/init_test.go | 154 ++++++++++++++- tools/cosmovisor/cmd/cosmovisor/root.go | 5 +- tools/cosmovisor/cmd/cosmovisor/run.go | 42 +++- tools/cosmovisor/cmd/cosmovisor/version.go | 3 +- tools/cosmovisor/flags.go | 1 + tools/cosmovisor/process.go | 8 +- tools/cosmovisor/process_test.go | 4 +- 13 files changed, 537 insertions(+), 94 deletions(-) diff --git a/tools/cosmovisor/CHANGELOG.md b/tools/cosmovisor/CHANGELOG.md index d3255d8d57db..39b549e882ba 100644 --- a/tools/cosmovisor/CHANGELOG.md +++ b/tools/cosmovisor/CHANGELOG.md @@ -38,6 +38,18 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#20062](https://github.com/cosmos/cosmos-sdk/pull/20062) Fixed cosmovisor add-upgrade permissions +## Features + +* [#19764](https://github.com/cosmos/cosmos-sdk/issues/19764) Use config file for cosmovisor configuration. + +## Improvements + +* [#19995](https://github.com/cosmos/cosmos-sdk/pull/19995): + * `init command` writes the configuration to the config file only at the default path `DAEMON_HOME/cosmovisor/config.toml`. + * Provide `--cosmovisor-config` flag with value as args to provide the path to the configuration file in the `run` command. `run --cosmovisor-config (other cmds with flags) ...`. + * Add `--cosmovisor-config` flag to provide `config.toml` path to the configuration file in root command used by `add-upgrade` and `config` subcommands. + * `config command` now displays the configuration from the config file if it is provided. If the config file is not provided, it will display the configuration from the environment variables. + ## v1.5.0 - 2023-07-17 ## Features diff --git a/tools/cosmovisor/args.go b/tools/cosmovisor/args.go index 4501e8e7d880..e89112749b30 100644 --- a/tools/cosmovisor/args.go +++ b/tools/cosmovisor/args.go @@ -12,6 +12,9 @@ import ( "strings" "time" + "github.com/pelletier/go-toml/v2" + "github.com/spf13/viper" + "cosmossdk.io/log" "cosmossdk.io/x/upgrade/plan" upgradetypes "cosmossdk.io/x/upgrade/types" @@ -42,26 +45,29 @@ const ( genesisDir = "genesis" upgradesDir = "upgrades" currentLink = "current" + + cfgFileName = "config" + cfgExtension = "toml" ) // Config is the information passed in to control the daemon type Config struct { - Home string - Name string - AllowDownloadBinaries bool - DownloadMustHaveChecksum bool - RestartAfterUpgrade bool - RestartDelay time.Duration - ShutdownGrace time.Duration - PollInterval time.Duration - UnsafeSkipBackup bool - DataBackupPath string - PreupgradeMaxRetries int - DisableLogs bool - ColorLogs bool - TimeFormatLogs string - CustomPreupgrade string - DisableRecase bool + Home string `toml:"daemon_home" mapstructure:"daemon_home"` + Name string `toml:"daemon_name" mapstructure:"daemon_name"` + AllowDownloadBinaries bool `toml:"daemon_allow_download_binaries" mapstructure:"daemon_allow_download_binaries" default:"false"` + DownloadMustHaveChecksum bool `toml:"daemon_download_must_have_checksum" mapstructure:"daemon_download_must_have_checksum" default:"false"` + RestartAfterUpgrade bool `toml:"daemon_restart_after_upgrade" mapstructure:"daemon_restart_after_upgrade" default:"true"` + RestartDelay time.Duration `toml:"daemon_restart_delay" mapstructure:"daemon_restart_delay"` + ShutdownGrace time.Duration `toml:"daemon_shutdown_grace" mapstructure:"daemon_shutdown_grace"` + PollInterval time.Duration `toml:"daemon_poll_interval" mapstructure:"daemon_poll_interval" default:"300ms"` + UnsafeSkipBackup bool `toml:"unsafe_skip_backup" mapstructure:"unsafe_skip_backup" default:"false"` + DataBackupPath string `toml:"daemon_data_backup_dir" mapstructure:"daemon_data_backup_dir"` + PreUpgradeMaxRetries int `toml:"daemon_preupgrade_max_retries" mapstructure:"daemon_preupgrade_max_retries" default:"0"` + DisableLogs bool `toml:"cosmovisor_disable_logs" mapstructure:"cosmovisor_disable_logs" default:"false"` + ColorLogs bool `toml:"cosmovisor_color_logs" mapstructure:"cosmovisor_color_logs" default:"true"` + TimeFormatLogs string `toml:"cosmovisor_timeformat_logs" mapstructure:"cosmovisor_timeformat_logs" default:"kitchen"` + CustomPreUpgrade string `toml:"cosmovisor_custom_preupgrade" mapstructure:"cosmovisor_custom_preupgrade" default:""` + DisableRecase bool `toml:"cosmovisor_disable_recase" mapstructure:"cosmovisor_disable_recase" default:"false"` // currently running upgrade currentUpgrade upgradetypes.Plan @@ -72,6 +78,11 @@ func (cfg *Config) Root() string { return filepath.Join(cfg.Home, rootName) } +// DefaultCfgPath returns the default path to the configuration file. +func (cfg *Config) DefaultCfgPath() string { + return filepath.Join(cfg.Root(), cfgFileName+"."+cfgExtension) +} + // GenesisBin is the path to the genesis binary - must be in place to start manager func (cfg *Config) GenesisBin() string { return filepath.Join(cfg.Root(), genesisDir, "bin", cfg.Name) @@ -145,6 +156,51 @@ func (cfg *Config) CurrentBin() (string, error) { return binpath, nil } +// GetConfigFromFile will read the configuration from the file at the given path. +// If the file path is not provided, it will try to read the configuration from the ENV variables. +// If a file path is provided and ENV variables are set, they will override the values in the file. +func GetConfigFromFile(filePath string) (*Config, error) { + if filePath == "" { + return GetConfigFromEnv() + } + + // ensure the file exist + if _, err := os.Stat(filePath); err != nil { + return nil, fmt.Errorf("config not found: at %s : %w", filePath, err) + } + + // read the configuration from the file + viper.SetConfigFile(filePath) + // load the env variables + // if the env variable is set, it will override the value provided by the config + viper.AutomaticEnv() + + if err := viper.ReadInConfig(); err != nil { + return nil, fmt.Errorf("failed to read config file: %w", err) + } + + cfg := &Config{} + if err := viper.Unmarshal(cfg); err != nil { + return nil, fmt.Errorf("failed to unmarshal configuration: %w", err) + } + + var ( + err error + errs []error + ) + + if cfg.TimeFormatLogs, err = getTimeFormatOption(cfg.TimeFormatLogs); err != nil { + errs = append(errs, err) + } + + errs = append(errs, cfg.validate()...) + if len(errs) > 0 { + return nil, errors.Join(errs...) + } + + return cfg, nil +} + // GetConfigFromEnv will read the environmental variables into a config // and then validate it is reasonable func GetConfigFromEnv() (*Config, error) { @@ -153,7 +209,7 @@ func GetConfigFromEnv() (*Config, error) { Home: os.Getenv(EnvHome), Name: os.Getenv(EnvName), DataBackupPath: os.Getenv(EnvDataBackupPath), - CustomPreupgrade: os.Getenv(EnvCustomPreupgrade), + CustomPreUpgrade: os.Getenv(EnvCustomPreupgrade), } if cfg.DataBackupPath == "" { @@ -220,8 +276,8 @@ func GetConfigFromEnv() (*Config, error) { } } - envPreupgradeMaxRetriesVal := os.Getenv(EnvPreupgradeMaxRetries) - if cfg.PreupgradeMaxRetries, err = strconv.Atoi(envPreupgradeMaxRetriesVal); err != nil && envPreupgradeMaxRetriesVal != "" { + envPreUpgradeMaxRetriesVal := os.Getenv(EnvPreupgradeMaxRetries) + if cfg.PreUpgradeMaxRetries, err = strconv.Atoi(envPreUpgradeMaxRetriesVal); err != nil && envPreUpgradeMaxRetriesVal != "" { errs = append(errs, fmt.Errorf("%s could not be parsed to int: %w", EnvPreupgradeMaxRetries, err)) } @@ -355,6 +411,7 @@ func (cfg *Config) SetCurrentUpgrade(u upgradetypes.Plan) (rerr error) { return err } +// UpgradeInfo returns the current upgrade info func (cfg *Config) UpgradeInfo() (upgradetypes.Plan, error) { if cfg.currentUpgrade.Name != "" { return cfg.currentUpgrade, nil @@ -381,7 +438,7 @@ returnError: return cfg.currentUpgrade, fmt.Errorf("failed to read %q: %w", filename, err) } -// checks and validates env option +// BooleanOption checks and validate env option func BooleanOption(name string, defaultVal bool) (bool, error) { p := strings.ToLower(os.Getenv(name)) switch p { @@ -395,12 +452,17 @@ func BooleanOption(name string, defaultVal bool) (bool, error) { return false, fmt.Errorf("env variable %q must have a boolean value (\"true\" or \"false\"), got %q", name, p) } -// checks and validates env option +// TimeFormatOptionFromEnv checks and validates the time format option func TimeFormatOptionFromEnv(env, defaultVal string) (string, error) { val, set := os.LookupEnv(env) if !set { return defaultVal, nil } + + return getTimeFormatOption(val) +} + +func getTimeFormatOption(val string) (string, error) { switch val { case "layout": return time.Layout, nil @@ -432,6 +494,38 @@ func TimeFormatOptionFromEnv(env, defaultVal string) (string, error) { return "", fmt.Errorf("env variable %q must have a timeformat value (\"layout|ansic|unixdate|rubydate|rfc822|rfc822z|rfc850|rfc1123|rfc1123z|rfc3339|rfc3339nano|kitchen\"), got %q", EnvTimeFormatLogs, val) } +// ValueToTimeFormatOption converts the time format option to the env value +func ValueToTimeFormatOption(format string) string { + switch format { + case time.Layout: + return "layout" + case time.ANSIC: + return "ansic" + case time.UnixDate: + return "unixdate" + case time.RubyDate: + return "rubydate" + case time.RFC822: + return "rfc822" + case time.RFC822Z: + return "rfc822z" + case time.RFC850: + return "rfc850" + case time.RFC1123: + return "rfc1123" + case time.RFC1123Z: + return "rfc1123z" + case time.RFC3339: + return "rfc3339" + case time.RFC3339Nano: + return "rfc3339nano" + case time.Kitchen: + return "kitchen" + default: + return "" + } +} + // DetailString returns a multi-line string with details about this config. func (cfg Config) DetailString() string { configEntries := []struct{ name, value string }{ @@ -445,11 +539,11 @@ func (cfg Config) DetailString() string { {EnvInterval, cfg.PollInterval.String()}, {EnvSkipBackup, fmt.Sprintf("%t", cfg.UnsafeSkipBackup)}, {EnvDataBackupPath, cfg.DataBackupPath}, - {EnvPreupgradeMaxRetries, fmt.Sprintf("%d", cfg.PreupgradeMaxRetries)}, + {EnvPreupgradeMaxRetries, fmt.Sprintf("%d", cfg.PreUpgradeMaxRetries)}, {EnvDisableLogs, fmt.Sprintf("%t", cfg.DisableLogs)}, {EnvColorLogs, fmt.Sprintf("%t", cfg.ColorLogs)}, {EnvTimeFormatLogs, cfg.TimeFormatLogs}, - {EnvCustomPreupgrade, cfg.CustomPreupgrade}, + {EnvCustomPreupgrade, cfg.CustomPreUpgrade}, {EnvDisableRecase, fmt.Sprintf("%t", cfg.DisableRecase)}, } @@ -479,3 +573,48 @@ func (cfg Config) DetailString() string { } return sb.String() } + +// Export exports the configuration to a file at the given path. +func (cfg Config) Export() (string, error) { + // always use the default path + path := filepath.Clean(cfg.DefaultCfgPath()) + + // check if config file already exists ask user if they want to overwrite it + if _, err := os.Stat(path); err == nil { + // ask user if they want to overwrite the file + if !askForConfirmation(fmt.Sprintf("file %s already exists, do you want to overwrite it?", path)) { + cfg.Logger(os.Stdout).Info("file already exists, not overriding") + return path, nil + } + } + + // create the file + file, err := os.Create(filepath.Clean(path)) + if err != nil { + return "", fmt.Errorf("failed to create configuration file: %w", err) + } + + // convert the time value to its format option + cfg.TimeFormatLogs = ValueToTimeFormatOption(cfg.TimeFormatLogs) + + defer file.Close() + + // write the configuration to the file + err = toml.NewEncoder(file).Encode(cfg) + if err != nil { + return "", fmt.Errorf("failed to encode configuration: %w", err) + } + + return path, nil +} + +func askForConfirmation(str string) bool { + var response string + fmt.Printf("%s [y/n]: ", str) + _, err := fmt.Scanln(&response) + if err != nil { + return false + } + + return strings.ToLower(response) == "y" +} diff --git a/tools/cosmovisor/args_test.go b/tools/cosmovisor/args_test.go index e161d229e7db..b379720763f0 100644 --- a/tools/cosmovisor/args_test.go +++ b/tools/cosmovisor/args_test.go @@ -7,6 +7,7 @@ import ( "testing" "time" + "github.com/pelletier/go-toml/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -412,7 +413,7 @@ func (s *argsTestSuite) TestDetailString() { PollInterval: pollInterval, UnsafeSkipBackup: unsafeSkipBackup, DataBackupPath: dataBackupPath, - PreupgradeMaxRetries: preupgradeMaxRetries, + PreUpgradeMaxRetries: preupgradeMaxRetries, } expectedPieces := []string{ @@ -444,6 +445,41 @@ func (s *argsTestSuite) TestDetailString() { } } +var newConfig = func( + home, name string, + downloadBin bool, + downloadMustHaveChecksum bool, + restartUpgrade bool, + restartDelay int, + skipBackup bool, + dataBackupPath string, + interval, preupgradeMaxRetries int, + disableLogs, colorLogs bool, + timeFormatLogs string, + customPreUpgrade string, + disableRecase bool, + shutdownGrace int, +) *Config { + return &Config{ + Home: home, + Name: name, + AllowDownloadBinaries: downloadBin, + DownloadMustHaveChecksum: downloadMustHaveChecksum, + RestartAfterUpgrade: restartUpgrade, + RestartDelay: time.Millisecond * time.Duration(restartDelay), + PollInterval: time.Millisecond * time.Duration(interval), + UnsafeSkipBackup: skipBackup, + DataBackupPath: dataBackupPath, + PreUpgradeMaxRetries: preupgradeMaxRetries, + DisableLogs: disableLogs, + ColorLogs: colorLogs, + TimeFormatLogs: timeFormatLogs, + CustomPreUpgrade: customPreUpgrade, + DisableRecase: disableRecase, + ShutdownGrace: time.Duration(shutdownGrace), + } +} + func (s *argsTestSuite) TestGetConfigFromEnv() { initialEnv := s.clearEnv() defer s.setEnv(nil, initialEnv) @@ -452,41 +488,6 @@ func (s *argsTestSuite) TestGetConfigFromEnv() { absPath, perr := filepath.Abs(relPath) s.Require().NoError(perr) - newConfig := func( - home, name string, - downloadBin bool, - downloadMustHaveChecksum bool, - restartUpgrade bool, - restartDelay int, - skipBackup bool, - dataBackupPath string, - interval, preupgradeMaxRetries int, - disableLogs, colorLogs bool, - timeFormatLogs string, - customPreUpgrade string, - disableRecase bool, - shutdownGrace int, - ) *Config { - return &Config{ - Home: home, - Name: name, - AllowDownloadBinaries: downloadBin, - DownloadMustHaveChecksum: downloadMustHaveChecksum, - RestartAfterUpgrade: restartUpgrade, - RestartDelay: time.Millisecond * time.Duration(restartDelay), - PollInterval: time.Millisecond * time.Duration(interval), - UnsafeSkipBackup: skipBackup, - DataBackupPath: dataBackupPath, - PreupgradeMaxRetries: preupgradeMaxRetries, - DisableLogs: disableLogs, - ColorLogs: colorLogs, - TimeFormatLogs: timeFormatLogs, - CustomPreupgrade: customPreUpgrade, - DisableRecase: disableRecase, - ShutdownGrace: time.Duration(shutdownGrace), - } - } - tests := []struct { name string envVals cosmovisorEnv @@ -783,6 +784,95 @@ func (s *argsTestSuite) TestGetConfigFromEnv() { } } +func (s *argsTestSuite) setUpDir() string { + s.T().Helper() + + home := s.T().TempDir() + err := os.MkdirAll(filepath.Join(home, rootName), 0o755) + s.Require().NoError(err) + return home +} + +func (s *argsTestSuite) setupConfig(home string) string { + s.T().Helper() + + cfg := newConfig(home, "test", true, true, true, 406, false, home, 8, 0, false, true, "kitchen", "", true, 10000000000) + path := filepath.Join(home, rootName, "config.toml") + f, err := os.Create(path) + s.Require().NoError(err) + + enc := toml.NewEncoder(f) + s.Require().NoError(enc.Encode(&cfg)) + + err = f.Close() + s.Require().NoError(err) + + return path +} + +func (s *argsTestSuite) TestConfigFromFile() { + home := s.setUpDir() + // create a config file + cfgFilePath := s.setupConfig(home) + + testCases := []struct { + name string + config *Config + expectedCfg func() *Config + filePath string + expectedError string + malleate func() + }{ + { + name: "valid config", + expectedCfg: func() *Config { + return newConfig(home, "test", true, true, true, 406, false, home, 8, 0, false, true, time.Kitchen, "", true, 10000000000) + }, + filePath: cfgFilePath, + expectedError: "", + malleate: func() {}, + }, + { + name: "env variable will override config file fields", + filePath: cfgFilePath, + expectedError: "", + malleate: func() { + // set env variable different from the config file + os.Setenv(EnvName, "env-name") + }, + expectedCfg: func() *Config { + return newConfig(home, "env-name", true, true, true, 406, false, home, 8, 0, false, true, time.Kitchen, "", true, 10000000000) + }, + }, + { + name: "empty config file path will load config from ENV variables", + expectedCfg: func() *Config { + return newConfig(home, "test", true, true, true, 406, false, home, 8, 0, false, true, time.Kitchen, "", true, 10000000000) + }, + filePath: "", + expectedError: "", + malleate: func() { + s.setEnv(s.T(), &cosmovisorEnv{home, "test", "true", "true", "true", "406ms", "false", home, "8ms", "0", "false", "true", "kitchen", "", "true", "10s"}) + }, + }, + } + + for _, tc := range testCases { + s.T().Run(tc.name, func(t *testing.T) { + tc.malleate() + actualCfg, err := GetConfigFromFile(tc.filePath) + if tc.expectedError != "" { + s.Require().NoError(err) + s.Require().Contains(err.Error(), tc.expectedError) + return + } + + s.Require().NoError(err) + s.Require().EqualValues(tc.expectedCfg(), actualCfg) + }) + } +} + var sink interface{} func BenchmarkDetailString(b *testing.B) { @@ -791,7 +881,7 @@ func BenchmarkDetailString(b *testing.B) { AllowDownloadBinaries: true, UnsafeSkipBackup: true, PollInterval: 450 * time.Second, - PreupgradeMaxRetries: 1e7, + PreUpgradeMaxRetries: 1e7, } b.ReportAllocs() diff --git a/tools/cosmovisor/cmd/cosmovisor/add_upgrade.go b/tools/cosmovisor/cmd/cosmovisor/add_upgrade.go index 4e52d85728c5..b188ab05fdc4 100644 --- a/tools/cosmovisor/cmd/cosmovisor/add_upgrade.go +++ b/tools/cosmovisor/cmd/cosmovisor/add_upgrade.go @@ -30,7 +30,12 @@ func NewAddUpgradeCmd() *cobra.Command { // AddUpgrade adds upgrade info to manifest func AddUpgrade(cmd *cobra.Command, args []string) error { - cfg, err := cosmovisor.GetConfigFromEnv() + configPath, err := cmd.Flags().GetString(cosmovisor.FlagCosmovisorConfig) + if err != nil { + return fmt.Errorf("failed to get config flag: %w", err) + } + + cfg, err := cosmovisor.GetConfigFromFile(configPath) if err != nil { return err } diff --git a/tools/cosmovisor/cmd/cosmovisor/config.go b/tools/cosmovisor/cmd/cosmovisor/config.go index 927e005ebf6a..d651e5fb3839 100644 --- a/tools/cosmovisor/cmd/cosmovisor/config.go +++ b/tools/cosmovisor/cmd/cosmovisor/config.go @@ -7,11 +7,13 @@ import ( ) var configCmd = &cobra.Command{ - Use: "config", - Short: "Display cosmovisor config (prints environment variables used by cosmovisor).", + Use: "config", + Short: "Display cosmovisor config.", + Long: `Display cosmovisor config. If a config file is provided, it will display the config from the file, +otherwise it will display the config from the environment variables.`, SilenceUsage: true, RunE: func(cmd *cobra.Command, args []string) error { - cfg, err := cosmovisor.GetConfigFromEnv() + cfg, err := cosmovisor.GetConfigFromFile(cmd.Flag(cosmovisor.FlagCosmovisorConfig).Value.String()) if err != nil { return err } diff --git a/tools/cosmovisor/cmd/cosmovisor/init.go b/tools/cosmovisor/cmd/cosmovisor/init.go index 9b08529e647e..66d99b68032e 100644 --- a/tools/cosmovisor/cmd/cosmovisor/init.go +++ b/tools/cosmovisor/cmd/cosmovisor/init.go @@ -15,14 +15,20 @@ import ( "cosmossdk.io/x/upgrade/plan" ) -var initCmd = &cobra.Command{ - Use: "init ", - Short: "Initialize a cosmovisor daemon home directory.", - Args: cobra.ExactArgs(1), - SilenceUsage: true, - RunE: func(cmd *cobra.Command, args []string) error { - return InitializeCosmovisor(nil, args) - }, +func NewIntCmd() *cobra.Command { + initCmd := &cobra.Command{ + Use: "init ", + Short: "Initialize a cosmovisor daemon home directory.", + Long: `Initialize a cosmovisor daemon home directory with the provided executable. +Configuration file is initialized at the default path (<-home->/cosmovisor/config.toml).`, + Args: cobra.ExactArgs(1), + SilenceUsage: true, + RunE: func(cmd *cobra.Command, args []string) error { + return InitializeCosmovisor(nil, args) + }, + } + + return initCmd } // InitializeCosmovisor initializes the cosmovisor directories, current link, and initial executable. @@ -88,12 +94,20 @@ func InitializeCosmovisor(logger log.Logger, args []string) error { } logger.Info(fmt.Sprintf("the current symlink points to: %q", cur)) + filePath, err := cfg.Export() + if err != nil { + return fmt.Errorf("failed to export configuration: %w", err) + } + + logger.Info(fmt.Sprintf("config file present at: %s", filePath)) + return nil } // getConfigForInitCmd gets just the configuration elements needed to initialize cosmovisor. func getConfigForInitCmd() (*cosmovisor.Config, error) { var errs []error + // Note: Not using GetConfigFromEnv here because that checks that the directories already exist. // We also don't care about the rest of the configuration stuff in here. cfg := &cosmovisor.Config{ @@ -105,19 +119,27 @@ func getConfigForInitCmd() (*cosmovisor.Config, error) { if cfg.ColorLogs, err = cosmovisor.BooleanOption(cosmovisor.EnvColorLogs, true); err != nil { errs = append(errs, err) } + if cfg.TimeFormatLogs, err = cosmovisor.TimeFormatOptionFromEnv(cosmovisor.EnvTimeFormatLogs, time.Kitchen); err != nil { errs = append(errs, err) } + // if backup is not set, use the home directory + if cfg.DataBackupPath == "" { + cfg.DataBackupPath = cfg.Home + } + if len(cfg.Name) == 0 { errs = append(errs, fmt.Errorf("%s is not set", cosmovisor.EnvName)) } + switch { case len(cfg.Home) == 0: errs = append(errs, fmt.Errorf("%s is not set", cosmovisor.EnvHome)) case !filepath.IsAbs(cfg.Home): errs = append(errs, fmt.Errorf("%s must be an absolute path", cosmovisor.EnvHome)) } + if len(errs) > 0 { return cfg, errors.Join(errs...) } diff --git a/tools/cosmovisor/cmd/cosmovisor/init_test.go b/tools/cosmovisor/cmd/cosmovisor/init_test.go index c872675e280d..95d971ab08ed 100644 --- a/tools/cosmovisor/cmd/cosmovisor/init_test.go +++ b/tools/cosmovisor/cmd/cosmovisor/init_test.go @@ -9,6 +9,8 @@ import ( "testing" "time" + "github.com/pelletier/go-toml/v2" + "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -18,7 +20,10 @@ import ( ) const ( - notset = " is not set" + notset = " is not set" + cosmovisorDirName = "cosmovisor" + + cfgFileWithExt = "config.toml" ) type InitTestSuite struct { @@ -79,6 +84,7 @@ func (s *InitTestSuite) clearEnv() *cosmovisorInitEnv { for envVar := range rv.ToMap() { rv.Set(envVar, os.Getenv(envVar)) s.Require().NoError(os.Unsetenv(envVar)) + viper.Reset() } return &rv } @@ -111,6 +117,26 @@ func (s *InitTestSuite) setEnv(t *testing.T, env *cosmovisorInitEnv) { //nolint: } } +// readStdInpFromFile reads the provided data as if it were a standard input. +func (s *InitTestSuite) readStdInpFromFile(data []byte) { + // Create a temporary file and write the test input into it + tmpfile, err := os.CreateTemp("", "test") + if err != nil { + s.T().Fatal(err) + } + + // write the test input into the temporary file + if _, err := tmpfile.Write(data); err != nil { + s.T().Fatal(err) + } + + if _, err := tmpfile.Seek(0, 0); err != nil { + s.T().Fatal(err) + } + + os.Stdin = tmpfile +} + var ( _ io.Reader = BufferedPipe{} _ io.Writer = BufferedPipe{} @@ -247,7 +273,7 @@ func (p *BufferedPipe) panicIfStarted(msg string) { func (s *InitTestSuite) NewCapturingLogger() (*BufferedPipe, log.Logger) { bufferedStdOut, err := StartNewBufferedPipe("stdout", os.Stdout) s.Require().NoError(err, "creating stdout buffered pipe") - logger := log.NewLogger(bufferedStdOut, log.ColorOption(false), log.TimeFormatOption(time.RFC3339Nano)).With(log.ModuleKey, "cosmovisor") + logger := log.NewLogger(bufferedStdOut, log.ColorOption(false), log.TimeFormatOption(time.RFC3339Nano)).With(log.ModuleKey, cosmovisorDirName) return &bufferedStdOut, logger } @@ -360,7 +386,7 @@ func (s *InitTestSuite) TestInitializeCosmovisorInvalidExisting() { Home: filepath.Join(testDir, "home"), Name: "pear", } - genDir := filepath.Join(env.Home, "cosmovisor", "genesis") + genDir := filepath.Join(env.Home, cosmovisorDirName, "genesis") genBin := filepath.Join(genDir, "bin") require.NoError(t, os.MkdirAll(genDir, 0o755), "creating genesis directory") require.NoError(t, copyFile(hwExe, genBin), "copying exe to genesis/bin") @@ -380,7 +406,7 @@ func (s *InitTestSuite) TestInitializeCosmovisorInvalidExisting() { } // Create the genesis bin executable path fully as a directory (instead of a file). // That should get through all the other stuff, but error when EnsureBinary is called. - genBinExe := filepath.Join(env.Home, "cosmovisor", "genesis", "bin", env.Name) + genBinExe := filepath.Join(env.Home, cosmovisorDirName, "genesis", "bin", env.Name) require.NoError(t, os.MkdirAll(genBinExe, 0o755)) expErr := fmt.Sprintf("%s is not a regular file", env.Name) // Check the log messages just to make sure it's erroring where expecting. @@ -416,7 +442,7 @@ func (s *InitTestSuite) TestInitializeCosmovisorInvalidExisting() { Home: filepath.Join(testDir, "home"), Name: "orange", } - rootDir := filepath.Join(env.Home, "cosmovisor") + rootDir := filepath.Join(env.Home, cosmovisorDirName) require.NoError(t, os.MkdirAll(rootDir, 0o755)) curLn := filepath.Join(rootDir, "current") genDir := filepath.Join(rootDir, "genesis") @@ -465,8 +491,8 @@ func (s *InitTestSuite) TestInitializeCosmovisorValid() { Home: filepath.Join(testDir, "home"), Name: "blank", } - curLn := filepath.Join(env.Home, "cosmovisor", "current") - genBinDir := filepath.Join(env.Home, "cosmovisor", "genesis", "bin") + curLn := filepath.Join(env.Home, cosmovisorDirName, "current") + genBinDir := filepath.Join(env.Home, cosmovisorDirName, "genesis", "bin") genBinExe := filepath.Join(genBinDir, env.Name) expInLog := []string{ "checking on the genesis/bin directory", @@ -476,6 +502,7 @@ func (s *InitTestSuite) TestInitializeCosmovisorValid() { fmt.Sprintf("making sure %q is executable", genBinExe), "checking on the current symlink and creating it if needed", fmt.Sprintf("the current symlink points to: %q", genBinExe), + fmt.Sprintf("config file present at: %s", filepath.Join(env.Home, cosmovisorDirName, cfgFileWithExt)), } s.setEnv(s.T(), env) @@ -508,7 +535,7 @@ func (s *InitTestSuite) TestInitializeCosmovisorValid() { Home: filepath.Join(testDir, "home"), Name: "nocur", } - rootDir := filepath.Join(env.Home, "cosmovisor") + rootDir := filepath.Join(env.Home, cosmovisorDirName) genBinDir := filepath.Join(rootDir, "genesis", "bin") genBinDirExe := filepath.Join(genBinDir, env.Name) require.NoError(t, os.MkdirAll(genBinDir, 0o755), "making genesis bin dir") @@ -528,6 +555,7 @@ func (s *InitTestSuite) TestInitializeCosmovisorValid() { fmt.Sprintf("the %q file already exists", genBinDirExe), fmt.Sprintf("making sure %q is executable", genBinDirExe), fmt.Sprintf("the current symlink points to: %q", genBinDirExe), + fmt.Sprintf("config file present at: %s", filepath.Join(env.Home, cosmovisorDirName, cfgFileWithExt)), } s.setEnv(t, env) @@ -548,7 +576,7 @@ func (s *InitTestSuite) TestInitializeCosmovisorValid() { Home: filepath.Join(testDir, "home"), Name: "emptygen", } - rootDir := filepath.Join(env.Home, "cosmovisor") + rootDir := filepath.Join(env.Home, cosmovisorDirName) genBinDir := filepath.Join(rootDir, "genesis", "bin") genBinExe := filepath.Join(genBinDir, env.Name) require.NoError(t, os.MkdirAll(genBinDir, 0o755), "making genesis bin dir") @@ -560,6 +588,7 @@ func (s *InitTestSuite) TestInitializeCosmovisorValid() { fmt.Sprintf("copying executable into place: %q", genBinExe), fmt.Sprintf("making sure %q is executable", genBinExe), fmt.Sprintf("the current symlink points to: %q", genBinExe), + fmt.Sprintf("config file present at: %s", filepath.Join(env.Home, cosmovisorDirName, cfgFileWithExt)), } s.setEnv(t, env) @@ -573,4 +602,111 @@ func (s *InitTestSuite) TestInitializeCosmovisorValid() { assert.Contains(t, bufferStr, exp) } }) + + s.T().Run("ask to override (y/n) the existing config file", func(t *testing.T) { + }) + + s.T().Run("init command exports configs to default path", func(t *testing.T) { + testDir := s.T().TempDir() + env := &cosmovisorInitEnv{ + Home: filepath.Join(testDir, "home"), + Name: "emptygen", + } + + s.setEnv(t, env) + buffer, logger := s.NewCapturingLogger() + logger.Info(fmt.Sprintf("Calling InitializeCosmovisor: %s", t.Name())) + err := InitializeCosmovisor(logger, []string{hwExe}) + require.NoError(t, err, "calling InitializeCosmovisor") + bufferBz := buffer.Collect() + bufferStr := string(bufferBz) + assert.Contains(t, bufferStr, fmt.Sprintf("config file present at: %s", filepath.Join(env.Home, cosmovisorDirName, cfgFileWithExt))) + }) +} + +func (s *InitTestSuite) TestInitializeCosmovisorWithOverrideCfg() { + initEnv := s.clearEnv() + defer s.setEnv(nil, initEnv) + + tmpExe := s.CreateHelloWorld(0o755) + testDir := s.T().TempDir() + homePath := filepath.Join(testDir, "backup") + testCases := []struct { + name string + input string + cfg *cosmovisor.Config + override bool + }{ + { + name: "yes override", + input: "y\n", + cfg: &cosmovisor.Config{ + Home: homePath, + Name: "old_test", + DataBackupPath: homePath, + }, + override: true, + }, + { + name: "no override", + input: "n\n", + cfg: &cosmovisor.Config{ + Home: homePath, + Name: "old_test", + DataBackupPath: homePath, + }, + override: false, + }, + } + + for _, tc := range testCases { + s.T().Run(tc.name, func(t *testing.T) { + // create a root cosmovisor directory + require.NoError(t, os.MkdirAll(tc.cfg.Root(), 0o755), "making root dir") + + // create a config file in the default location + file, err := os.Create(tc.cfg.DefaultCfgPath()) + require.NoError(t, err) + + // write the config to the file + err = toml.NewEncoder(file).Encode(tc.cfg) + require.NoError(t, err) + + err = file.Close() + require.NoError(t, err) + + s.readStdInpFromFile([]byte(tc.input)) + + _, logger := s.NewCapturingLogger() + logger.Info(fmt.Sprintf("Calling InitializeCosmovisor: %s", t.Name())) + + // override the daemon name in environment file + // if override is true (y), then the name should be updated in the config file + // otherwise (n), the name should not be updated in the config file + s.setEnv(t, &cosmovisorInitEnv{ + Home: tc.cfg.Home, + Name: "update_name", + }) + + err = InitializeCosmovisor(logger, []string{tmpExe}) + require.NoError(t, err, "calling InitializeCosmovisor") + + cfg := &cosmovisor.Config{} + // read the config file + cfgFile, err := os.Open(tc.cfg.DefaultCfgPath()) + require.NoError(t, err) + defer cfgFile.Close() + + err = toml.NewDecoder(cfgFile).Decode(cfg) + require.NoError(t, err) + if tc.override { + // check if the name is updated + // basically, override the existing config file + assert.Equal(t, "update_name", cfg.Name) + } else { + // daemon name should not be updated + assert.Equal(t, tc.cfg.Name, cfg.Name) + } + }) + } } diff --git a/tools/cosmovisor/cmd/cosmovisor/root.go b/tools/cosmovisor/cmd/cosmovisor/root.go index 4d87d9867c2d..d9f6094d593c 100644 --- a/tools/cosmovisor/cmd/cosmovisor/root.go +++ b/tools/cosmovisor/cmd/cosmovisor/root.go @@ -2,6 +2,8 @@ package main import ( "github.com/spf13/cobra" + + "cosmossdk.io/tools/cosmovisor" ) func NewRootCmd() *cobra.Command { @@ -12,12 +14,13 @@ func NewRootCmd() *cobra.Command { } rootCmd.AddCommand( - initCmd, + NewIntCmd(), runCmd, configCmd, NewVersionCmd(), NewAddUpgradeCmd(), ) + rootCmd.PersistentFlags().StringP(cosmovisor.FlagCosmovisorConfig, "c", "", "path to cosmovisor config file") return rootCmd } diff --git a/tools/cosmovisor/cmd/cosmovisor/run.go b/tools/cosmovisor/cmd/cosmovisor/run.go index 24aa9b6f8991..6aa938c7d780 100644 --- a/tools/cosmovisor/cmd/cosmovisor/run.go +++ b/tools/cosmovisor/cmd/cosmovisor/run.go @@ -1,24 +1,35 @@ package main import ( + "fmt" + "strings" + "github.com/spf13/cobra" "cosmossdk.io/tools/cosmovisor" ) var runCmd = &cobra.Command{ - Use: "run", - Short: "Run an APP command.", + Use: "run", + Short: "Run an APP command.", + Long: `Run an APP command. This command is intended to be used by the cosmovisor binary. +Provide cosmovisor config file path in command args or set env variables to load configuration. +`, SilenceUsage: true, DisableFlagParsing: true, RunE: func(_ *cobra.Command, args []string) error { - return run(args) + cfgPath, args, err := parseCosmovisorConfig(args) + if err != nil { + return fmt.Errorf("failed to parse cosmovisor config: %w", err) + } + + return run(cfgPath, args) }, } // run runs the configured program with the given args and monitors it for upgrades. -func run(args []string, options ...RunOption) error { - cfg, err := cosmovisor.GetConfigFromEnv() +func run(cfgPath string, args []string, options ...RunOption) error { + cfg, err := cosmovisor.GetConfigFromFile(cfgPath) if err != nil { return err } @@ -47,3 +58,24 @@ func run(args []string, options ...RunOption) error { return err } + +func parseCosmovisorConfig(args []string) (string, []string, error) { + var configFilePath string + for i, arg := range args { + // Check if the argument is the config flag + if strings.EqualFold(arg, fmt.Sprintf("--%s", cosmovisor.FlagCosmovisorConfig)) || + strings.EqualFold(arg, fmt.Sprintf("-%s", cosmovisor.FlagCosmovisorConfig)) { + // Check if there is an argument after the flag which should be the config file path + if i+1 >= len(args) { + return "", nil, fmt.Errorf("--%s requires an argument", cosmovisor.FlagCosmovisorConfig) + } + + configFilePath = args[i+1] + // Remove the flag and its value from the arguments + args = append(args[:i], args[i+2:]...) + break + } + } + + return configFilePath, args, nil +} diff --git a/tools/cosmovisor/cmd/cosmovisor/version.go b/tools/cosmovisor/cmd/cosmovisor/version.go index fa9778ea54d8..a51b376355af 100644 --- a/tools/cosmovisor/cmd/cosmovisor/version.go +++ b/tools/cosmovisor/cmd/cosmovisor/version.go @@ -47,7 +47,7 @@ func printVersion(cmd *cobra.Command, args []string, noAppVersion bool) error { return nil } - if err := run(append([]string{"version"}, args...)); err != nil { + if err := run("", append([]string{"version"}, args...)); err != nil { return fmt.Errorf("failed to run version command: %w", err) } @@ -62,6 +62,7 @@ func printVersionJSON(cmd *cobra.Command, args []string, noAppVersion bool) erro buf := new(strings.Builder) if err := run( + "", []string{"version", "--long", "--output", "json"}, StdOutRunOption(buf), ); err != nil { diff --git a/tools/cosmovisor/flags.go b/tools/cosmovisor/flags.go index 73c17b9247dd..7c0db36bee66 100644 --- a/tools/cosmovisor/flags.go +++ b/tools/cosmovisor/flags.go @@ -6,4 +6,5 @@ const ( FlagCosmovisorOnly = "cosmovisor-only" FlagForce = "force" FlagUpgradeHeight = "upgrade-height" + FlagCosmovisorConfig = "cosmovisor-config" ) diff --git a/tools/cosmovisor/process.go b/tools/cosmovisor/process.go index 47d70e301f93..8eb4eae6a073 100644 --- a/tools/cosmovisor/process.go +++ b/tools/cosmovisor/process.go @@ -201,7 +201,7 @@ func (l Launcher) doBackup() error { // doCustomPreUpgrade executes the custom preupgrade script if provided. func (l Launcher) doCustomPreUpgrade() error { - if l.cfg.CustomPreupgrade == "" { + if l.cfg.CustomPreUpgrade == "" { return nil } @@ -221,7 +221,7 @@ func (l Launcher) doCustomPreUpgrade() error { } // check if preupgradeFile is executable file - preupgradeFile := filepath.Join(l.cfg.Home, "cosmovisor", l.cfg.CustomPreupgrade) + preupgradeFile := filepath.Join(l.cfg.Home, "cosmovisor", l.cfg.CustomPreUpgrade) l.logger.Info("looking for COSMOVISOR_CUSTOM_PREUPGRADE file", "file", preupgradeFile) info, err := os.Stat(preupgradeFile) if err != nil { @@ -264,8 +264,8 @@ func (l Launcher) doCustomPreUpgrade() error { func (l *Launcher) doPreUpgrade() error { counter := 0 for { - if counter > l.cfg.PreupgradeMaxRetries { - return fmt.Errorf("pre-upgrade command failed. reached max attempt of retries - %d", l.cfg.PreupgradeMaxRetries) + if counter > l.cfg.PreUpgradeMaxRetries { + return fmt.Errorf("pre-upgrade command failed. reached max attempt of retries - %d", l.cfg.PreUpgradeMaxRetries) } if err := l.executePreUpgradeCmd(); err != nil { diff --git a/tools/cosmovisor/process_test.go b/tools/cosmovisor/process_test.go index 3169ba3e3082..aa587042668c 100644 --- a/tools/cosmovisor/process_test.go +++ b/tools/cosmovisor/process_test.go @@ -272,7 +272,7 @@ func (s *processTestSuite) TestLaunchProcessWithDownloadsAndMissingPreupgrade() AllowDownloadBinaries: true, PollInterval: 100, UnsafeSkipBackup: true, - CustomPreupgrade: "missing.sh", + CustomPreUpgrade: "missing.sh", } logger := log.NewTestLogger(s.T()).With(log.ModuleKey, "cosmovisor") upgradeFilename := cfg.UpgradeInfoFilePath() @@ -308,7 +308,7 @@ func (s *processTestSuite) TestLaunchProcessWithDownloadsAndPreupgrade() { AllowDownloadBinaries: true, PollInterval: 100, UnsafeSkipBackup: true, - CustomPreupgrade: "preupgrade.sh", + CustomPreUpgrade: "preupgrade.sh", } buf := newBuffer() // inspect output using buf.String() logger := log.NewLogger(buf).With(log.ModuleKey, "cosmovisor") From 4d4b7064c8dc0a5de5a6a4728f6914629c7c8ba9 Mon Sep 17 00:00:00 2001 From: Marko Date: Thu, 30 May 2024 17:19:47 +0200 Subject: [PATCH 05/16] docs: code guidelines changes (#20482) --- CODING_GUIDELINES.md | 28 +++++++++++++++++----------- RELEASES.md | 22 ++++++++++++++++------ RELEASE_PROCESS.md | 11 +++-------- docs/0ver.png | Bin 66742 -> 0 bytes docs/semver.png | Bin 67627 -> 0 bytes 5 files changed, 36 insertions(+), 25 deletions(-) delete mode 100644 docs/0ver.png delete mode 100644 docs/semver.png diff --git a/CODING_GUIDELINES.md b/CODING_GUIDELINES.md index 920804357318..60aeb1192746 100644 --- a/CODING_GUIDELINES.md +++ b/CODING_GUIDELINES.md @@ -7,7 +7,7 @@ This document is an extension to [CONTRIBUTING](./CONTRIBUTING.md) and provides * Code must be well structured: * packages must have a limited responsibility (different concerns can go to different packages), * types must be easy to compose, - * think about maintainbility and testability. + * think about maintainability and testability. * "Depend upon abstractions, [not] concretions". * Try to limit the number of methods you are exposing. It's easier to expose something later than to hide it. * Take advantage of `internal` package concept. @@ -18,11 +18,11 @@ This document is an extension to [CONTRIBUTING](./CONTRIBUTING.md) and provides * Minimize code duplication. * Limit third-party dependencies. -Performance: +### Performance * Avoid unnecessary operations or memory allocations. -Security: +### Security * Pay proper attention to exploits involving: * gas usage @@ -31,6 +31,12 @@ Security: * code must be always deterministic * Thread safety. If some functionality is not thread-safe, or uses something that is not thread-safe, then clearly indicate the risk on each level. +### Documentation + +When writing code that is complex or relies on another piece of the code, it is advised to create a diagram or a flowchart to explain the logic. This will help other developers to understand the code and will also help you to understand the logic better. + +The Cosmos SDK uses [Mermaid.js](https://mermaid.js.org/), you can find the documentation on how to use it [here](https://mermaid.js.org/intro/). + ## Acceptance tests Start the design by defining Acceptance Tests. The purpose of Acceptance Testing is to @@ -108,14 +114,14 @@ The idea is you should be able to see the error message and figure out exactly what failed. Here is an example check: -```go - -for tcIndex, tc := range cases { - - resp, err := doSomething() - require.NoError(err) - require.Equal(t, tc.expected, resp, "should correctly perform X") -``` + ```go + + for tcIndex, tc := range cases { + + resp, err := doSomething() + require.NoError(err) + require.Equal(t, tc.expected, resp, "should correctly perform X") + ``` ## Quality Assurance diff --git a/RELEASES.md b/RELEASES.md index fd0fc3c26742..ed4a74fa30f2 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -6,14 +6,24 @@ The Cosmos-SDK follows both [0ver](https://0ver.org/) and [Semver](https://semve Although we adhere to semantic versioning (semver), we have introduced a few modifications to accommodate the unique characteristics of blockchains. One significant divergence is that the major version (Y.x.x) is incremented solely when a consensus-breaking change occurs. On the other hand, the minor version (x.Y.x) is increased when there is a non-consensus-breaking alteration that also results in an incompatible API change. Patch versions will be bumped for all other changes that dont break the API nor Consensus. -

- Releases Semver decision tree -

+```mermaid +flowchart TD + A[Change] --> B{Consensus Breaking?} + B -->|Yes| C[Increase Major Version] + B -->|No| D{API Breaking?} + D -->|Yes| E[Increase Minor Version] + D -->|No| F[Increase Patch Version] +``` ## 0ver Dependencies In terms of the Cosmos-SDK dependency, we adhere to a simpler versioning approach known as 0ver. This flow differs from the previous Semver flow. Under this system, when a consensus-breaking change or an API-breaking change occurs, the Cosmos-SDK team increments the minor version (x.Y.x). Conversely, when a non-consensus-breaking change and a non-API-breaking change take place, the team bumps the patch version (x.x.Y). -

- Releases 0ver decision tree -

+```mermaid +flowchart TD + A[Change] --> B{Consensus Breaking?} + B -->|Yes| C[Increase Minor Version] + B -->|No| D{API Breaking?} + D -->|Yes| E[Increase Minor Version] + D -->|No| F[Increase Patch Version] +``` diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index 5af7b2a22f65..37242e8750ec 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md @@ -46,12 +46,7 @@ v1.0.0-beta1 → v1.0.0-beta2 → ... → v1.0.0-rc1 → v1.0.0-rc2 → ... → * create a new annotated git tag (eg `git -a v1.1.0`) in the release branch. * Create a GitHub release. -Following _semver_ philosophy, point releases after `v1.0`: - -* must not break API -* can break consensus - -Before `v1.0`, point release can break both point API and consensus. +See the [Releases document](./RELEASES.md) for more information on the versioning scheme. ## Patch Release Procedure @@ -82,8 +77,8 @@ Major Release series is maintained in compliance with the **Stable Release Polic Only the following major release series have a stable release status: -* **0.47** is the previous major release and is supported until the release of **0.51.0**. A fairly strict **bugfix-only** rule applies to pull requests that are requested to be included into a not latest stable point-release. -* **0.50** is the last major release and is supported until the release of **0.52.0**. +* **0.47** is the previous major release and is supported until the release of **0.52.0**. A fairly strict **bugfix-only** rule applies to pull requests that are requested to be included into a not latest stable point-release. +* **0.50** is the last major release and is supported until the release of **0.54.0**. The SDK team maintains the last two major releases, any other major release is considered to have reached end of life. The SDK team will not backport any bug fixes to releases that are not supported. diff --git a/docs/0ver.png b/docs/0ver.png deleted file mode 100644 index 35f7a1fe6e2a6b144d0b2898da1f2775d39404b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66742 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
d7a+Ry6(N~y4*wD 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 E0K1D$pa1{> diff --git a/docs/semver.png b/docs/semver.png deleted file mode 100644 index 49be36b926f8bbbb05596ce6b32d6d9b2b1b05d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67627 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 II;Vst0Ha2_v;Y7A From 7dbbc0799e4d05c22be850ce11e61d4f5d682fa7 Mon Sep 17 00:00:00 2001 From: Matt Kocubinski Date: Thu, 30 May 2024 15:16:57 -0400 Subject: [PATCH 06/16] refactor(x/upgrade): migrate to appmodule.VersionMap (#20485) --- simapp/CHANGELOG.md | 1 + simapp/app_test.go | 4 ++-- simapp/upgrades.go | 4 ++-- types/module/module.go | 8 ++++---- x/upgrade/keeper/abci_test.go | 13 ++++++------- x/upgrade/keeper/grpc_query_test.go | 6 +++--- x/upgrade/keeper/keeper.go | 13 ++++++------- x/upgrade/keeper/keeper_test.go | 20 +++++++++++--------- x/upgrade/types/handler.go | 4 ++-- 9 files changed, 37 insertions(+), 36 deletions(-) diff --git a/simapp/CHANGELOG.md b/simapp/CHANGELOG.md index 4d0d22dad753..31fc417533f4 100644 --- a/simapp/CHANGELOG.md +++ b/simapp/CHANGELOG.md @@ -33,6 +33,7 @@ It is an exautive list of changes that completes the SimApp section in the [UPGR Always refer to the [UPGRADING.md](https://github.com/cosmos/cosmos-sdk/blob/main/UPGRADING.md) to understand the changes. * [#20409](https://github.com/cosmos/cosmos-sdk/pull/20409) Add `tx` as `SkipStoreKeys` in `app_config.go`. +* [#20485](https://github.com/cosmos/cosmos-sdk/pull/20485) The signature of `x/upgrade/types.UpgradeHandler` has changed to accept `appmodule.VersionMap` from `module.VersionMap`. These types are interchangeable, but usages of `UpradeKeeper.SetUpgradeHandler` may need to adjust their usages to match the new signature. diff --git a/simapp/app_test.go b/simapp/app_test.go index 20de441ef08b..62312557efaf 100644 --- a/simapp/app_test.go +++ b/simapp/app_test.go @@ -196,7 +196,7 @@ func TestRunMigrations(t *testing.T) { // their latest ConsensusVersion. _, err = app.ModuleManager.RunMigrations( app.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()}), configurator, - module.VersionMap{ + appmodule.VersionMap{ "accounts": accounts.AppModule{}.ConsensusVersion(), "bank": 1, "auth": auth.AppModule{}.ConsensusVersion(), @@ -247,7 +247,7 @@ func TestInitGenesisOnMigration(t *testing.T) { // Run migrations only for "mock" module. We exclude it from // the VersionMap to simulate upgrading with a new module. _, err := app.ModuleManager.RunMigrations(ctx, app.Configurator(), - module.VersionMap{ + appmodule.VersionMap{ "bank": bank.AppModule{}.ConsensusVersion(), "auth": auth.AppModule{}.ConsensusVersion(), "authz": authzmodule.AppModule{}.ConsensusVersion(), diff --git a/simapp/upgrades.go b/simapp/upgrades.go index ed6d35c0b490..01fe745d6e88 100644 --- a/simapp/upgrades.go +++ b/simapp/upgrades.go @@ -3,13 +3,13 @@ package simapp import ( "context" + "cosmossdk.io/core/appmodule" storetypes "cosmossdk.io/store/types" "cosmossdk.io/x/accounts" epochstypes "cosmossdk.io/x/epochs/types" protocolpooltypes "cosmossdk.io/x/protocolpool/types" upgradetypes "cosmossdk.io/x/upgrade/types" - "github.com/cosmos/cosmos-sdk/types/module" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" ) @@ -24,7 +24,7 @@ const UpgradeName = "v050-to-v051" func (app SimApp) RegisterUpgradeHandlers() { app.UpgradeKeeper.SetUpgradeHandler( UpgradeName, - func(ctx context.Context, _ upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + func(ctx context.Context, _ upgradetypes.Plan, fromVM appmodule.VersionMap) (appmodule.VersionMap, error) { return app.ModuleManager.RunMigrations(ctx, app.Configurator(), fromVM) }, ) diff --git a/types/module/module.go b/types/module/module.go index 306db89d4fbf..4248143dc7df 100644 --- a/types/module/module.go +++ b/types/module/module.go @@ -657,7 +657,7 @@ func (m *Manager) assertNoForgottenModules(setOrderFnName string, moduleNames [] // }) // // Please also refer to https://docs.cosmos.network/main/core/upgrade for more information. -func (m Manager) RunMigrations(ctx context.Context, cfg Configurator, fromVM VersionMap) (VersionMap, error) { +func (m Manager) RunMigrations(ctx context.Context, cfg Configurator, fromVM appmodule.VersionMap) (appmodule.VersionMap, error) { c, ok := cfg.(*configurator) if !ok { return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidType, "expected %T, got %T", &configurator{}, cfg) @@ -668,7 +668,7 @@ func (m Manager) RunMigrations(ctx context.Context, cfg Configurator, fromVM Ver } sdkCtx := sdk.UnwrapSDKContext(ctx) - updatedVM := VersionMap{} + updatedVM := appmodule.VersionMap{} for _, moduleName := range modules { module := m.Modules[moduleName] fromVersion, exists := fromVM[moduleName] @@ -824,8 +824,8 @@ func (m *Manager) PrepareCheckState(ctx sdk.Context) error { } // GetVersionMap gets consensus version from all modules -func (m *Manager) GetVersionMap() VersionMap { - vermap := make(VersionMap) +func (m *Manager) GetVersionMap() appmodule.VersionMap { + vermap := make(appmodule.VersionMap) for name, v := range m.Modules { version := uint64(0) if v, ok := v.(appmodule.HasConsensusVersion); ok { diff --git a/x/upgrade/keeper/abci_test.go b/x/upgrade/keeper/abci_test.go index 1cf0793aba3f..f0de252394d2 100644 --- a/x/upgrade/keeper/abci_test.go +++ b/x/upgrade/keeper/abci_test.go @@ -26,7 +26,6 @@ import ( "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/types/module" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" ) @@ -52,7 +51,7 @@ func (s *TestSuite) VerifyDoUpgrade(t *testing.T) { require.ErrorContains(t, err, "UPGRADE \"test\" NEEDED at height: 11: ") t.Log("Verify that the upgrade can be successfully applied with a handler") - s.keeper.SetUpgradeHandler("test", func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + s.keeper.SetUpgradeHandler("test", func(ctx context.Context, plan types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) @@ -70,7 +69,7 @@ func (s *TestSuite) VerifyDoUpgradeWithCtx(t *testing.T, newCtx sdk.Context, pro require.ErrorContains(t, err, "UPGRADE \""+proposalName+"\" NEEDED at height: ") t.Log("Verify that the upgrade can be successfully applied with a handler") - s.keeper.SetUpgradeHandler(proposalName, func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + s.keeper.SetUpgradeHandler(proposalName, func(ctx context.Context, plan types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) @@ -175,7 +174,7 @@ func TestHaltIfTooNew(t *testing.T) { s := setupTest(t, 10, map[int64]bool{}) t.Log("Verify that we don't panic with registered plan not in database at all") var called int - s.keeper.SetUpgradeHandler("future", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + s.keeper.SetUpgradeHandler("future", func(_ context.Context, _ types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { called++ return vm, nil }) @@ -421,7 +420,7 @@ func TestBinaryVersion(t *testing.T) { { "test not panic: upgrade handler is present for last applied upgrade", func() sdk.Context { - s.keeper.SetUpgradeHandler("test0", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + s.keeper.SetUpgradeHandler("test0", func(_ context.Context, _ types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) @@ -472,7 +471,7 @@ func TestDowngradeVerification(t *testing.T) { s.ctx = s.ctx.WithHeaderInfo(header.Info{Height: s.ctx.HeaderInfo().Height + 1}) // set the handler. - s.keeper.SetUpgradeHandler(planName, func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + s.keeper.SetUpgradeHandler(planName, func(_ context.Context, _ types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) @@ -487,7 +486,7 @@ func TestDowngradeVerification(t *testing.T) { }{ "valid binary": { preRun: func(k *keeper.Keeper, ctx sdk.Context, name string) { - k.SetUpgradeHandler(planName, func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + k.SetUpgradeHandler(planName, func(ctx context.Context, plan types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) }, diff --git a/x/upgrade/keeper/grpc_query_test.go b/x/upgrade/keeper/grpc_query_test.go index dedfeff9b4e6..8e28c2ac136a 100644 --- a/x/upgrade/keeper/grpc_query_test.go +++ b/x/upgrade/keeper/grpc_query_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/suite" + "cosmossdk.io/core/appmodule" "cosmossdk.io/core/header" "cosmossdk.io/core/log" storetypes "cosmossdk.io/store/types" @@ -21,7 +22,6 @@ import ( "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" ) @@ -48,7 +48,7 @@ func (suite *UpgradeTestSuite) SetupTest() { suite.Require().NoError(err) suite.encodedAuthority = authority suite.upgradeKeeper = keeper.NewKeeper(env, skipUpgradeHeights, suite.encCfg.Codec, suite.T().TempDir(), nil, authority) - err = suite.upgradeKeeper.SetModuleVersionMap(suite.ctx, module.VersionMap{ + err = suite.upgradeKeeper.SetModuleVersionMap(suite.ctx, appmodule.VersionMap{ "bank": 0, }) suite.Require().NoError(err) @@ -136,7 +136,7 @@ func (suite *UpgradeTestSuite) TestAppliedCurrentPlan() { err := suite.upgradeKeeper.ScheduleUpgrade(suite.ctx, plan) suite.Require().NoError(err) suite.ctx = suite.ctx.WithHeaderInfo(header.Info{Height: expHeight}) - suite.upgradeKeeper.SetUpgradeHandler(planName, func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + suite.upgradeKeeper.SetUpgradeHandler(planName, func(ctx context.Context, plan types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) err = suite.upgradeKeeper.ApplyUpgrade(suite.ctx, plan) diff --git a/x/upgrade/keeper/keeper.go b/x/upgrade/keeper/keeper.go index e11904e1b4bd..89aa35c98d1c 100644 --- a/x/upgrade/keeper/keeper.go +++ b/x/upgrade/keeper/keeper.go @@ -26,7 +26,6 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/kv" - "github.com/cosmos/cosmos-sdk/types/module" ) type Keeper struct { @@ -39,7 +38,7 @@ type Keeper struct { versionModifier app.VersionModifier // implements setting the protocol version field on BaseApp downgradeVerified bool // tells if we've already sanity checked that this binary version isn't being used against an old state. authority string // the address capable of executing and canceling an upgrade. Usually the gov module account - initVersionMap module.VersionMap // the module version map at init genesis + initVersionMap appmodule.VersionMap // the module version map at init genesis } // NewKeeper constructs an upgrade Keeper which requires the following arguments: @@ -75,13 +74,13 @@ func NewKeeper( // SetInitVersionMap sets the initial version map. // This is only used in app wiring and should not be used in any other context. -func (k *Keeper) SetInitVersionMap(vm module.VersionMap) { +func (k *Keeper) SetInitVersionMap(vm appmodule.VersionMap) { k.initVersionMap = vm } // GetInitVersionMap gets the initial version map // This is only used in upgrade InitGenesis and should not be used in any other context. -func (k *Keeper) GetInitVersionMap() module.VersionMap { +func (k *Keeper) GetInitVersionMap() appmodule.VersionMap { return k.initVersionMap } @@ -93,7 +92,7 @@ func (k Keeper) SetUpgradeHandler(name string, upgradeHandler types.UpgradeHandl } // SetModuleVersionMap saves a given version map to state -func (k Keeper) SetModuleVersionMap(ctx context.Context, vm module.VersionMap) error { +func (k Keeper) SetModuleVersionMap(ctx context.Context, vm appmodule.VersionMap) error { if len(vm) > 0 { store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)) versionStore := prefix.NewStore(store, []byte{types.VersionMapByte}) @@ -121,7 +120,7 @@ func (k Keeper) SetModuleVersionMap(ctx context.Context, vm module.VersionMap) e // GetModuleVersionMap returns a map of key module name and value module consensus version // as defined in ADR-041. -func (k Keeper) GetModuleVersionMap(ctx context.Context) (module.VersionMap, error) { +func (k Keeper) GetModuleVersionMap(ctx context.Context) (appmodule.VersionMap, error) { store := k.KVStoreService.OpenKVStore(ctx) prefix := []byte{types.VersionMapByte} it, err := store.Iterator(prefix, storetypes.PrefixEndBytes(prefix)) @@ -130,7 +129,7 @@ func (k Keeper) GetModuleVersionMap(ctx context.Context) (module.VersionMap, err } defer it.Close() - vm := make(module.VersionMap) + vm := make(appmodule.VersionMap) for ; it.Valid(); it.Next() { moduleBytes := it.Key() // first byte is prefix key, so we remove it here diff --git a/x/upgrade/keeper/keeper_test.go b/x/upgrade/keeper/keeper_test.go index a1a572c7a437..0135c034fbd2 100644 --- a/x/upgrade/keeper/keeper_test.go +++ b/x/upgrade/keeper/keeper_test.go @@ -9,6 +9,7 @@ import ( cmttypes "github.com/cometbft/cometbft/types" "github.com/stretchr/testify/suite" + "cosmossdk.io/core/appmodule" "cosmossdk.io/core/header" "cosmossdk.io/core/log" storetypes "cosmossdk.io/store/types" @@ -24,7 +25,6 @@ import ( "github.com/cosmos/cosmos-sdk/testutil" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" ) @@ -167,7 +167,7 @@ func (s *KeeperTestSuite) TestScheduleUpgrade() { Height: 123450000, }, setup: func() { - s.upgradeKeeper.SetUpgradeHandler("all-good", func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + s.upgradeKeeper.SetUpgradeHandler("all-good", func(ctx context.Context, plan types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) err := s.upgradeKeeper.ApplyUpgrade(s.ctx, types.Plan{ @@ -289,7 +289,9 @@ func (s *KeeperTestSuite) TestIncrementProtocolVersion() { err = s.upgradeKeeper.ApplyUpgrade(s.ctx, dummyPlan) s.Require().EqualError(err, "ApplyUpgrade should never be called without first checking HasHandler") - s.upgradeKeeper.SetUpgradeHandler("dummy", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { return vm, nil }) + s.upgradeKeeper.SetUpgradeHandler("dummy", func(_ context.Context, _ types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { + return vm, nil + }) err = s.upgradeKeeper.ApplyUpgrade(s.ctx, dummyPlan) s.Require().NoError(err) upgradedProtocolVersion, err := s.baseApp.AppVersion(s.ctx) @@ -301,13 +303,13 @@ func (s *KeeperTestSuite) TestIncrementProtocolVersion() { // Tests that the underlying state of x/upgrade is set correctly after // an upgrade. func (s *KeeperTestSuite) TestMigrations() { - initialVM := module.VersionMap{"bank": uint64(1)} + initialVM := appmodule.VersionMap{"bank": uint64(1)} err := s.upgradeKeeper.SetModuleVersionMap(s.ctx, initialVM) s.Require().NoError(err) vmBefore, err := s.upgradeKeeper.GetModuleVersionMap(s.ctx) s.Require().NoError(err) - s.upgradeKeeper.SetUpgradeHandler("dummy", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + s.upgradeKeeper.SetUpgradeHandler("dummy", func(_ context.Context, _ types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { // simulate upgrading the bank module vm["bank"]++ return vm, nil @@ -334,7 +336,7 @@ func (s *KeeperTestSuite) TestLastCompletedUpgrade() { require.Equal(int64(0), height) require.NoError(err) - keeper.SetUpgradeHandler("test0", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + keeper.SetUpgradeHandler("test0", func(_ context.Context, _ types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) @@ -351,7 +353,7 @@ func (s *KeeperTestSuite) TestLastCompletedUpgrade() { require.Equal(int64(10), height) require.NoError(err) - keeper.SetUpgradeHandler("test1", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + keeper.SetUpgradeHandler("test1", func(_ context.Context, _ types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) @@ -376,7 +378,7 @@ func (s *KeeperTestSuite) TestLastCompletedUpgradeOrdering() { require := s.Require() // apply first upgrade - keeper.SetUpgradeHandler("test-v0.9", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + keeper.SetUpgradeHandler("test-v0.9", func(_ context.Context, _ types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) @@ -392,7 +394,7 @@ func (s *KeeperTestSuite) TestLastCompletedUpgradeOrdering() { require.NoError(err) // apply second upgrade - keeper.SetUpgradeHandler("test-v0.10", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + keeper.SetUpgradeHandler("test-v0.10", func(_ context.Context, _ types.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) { return vm, nil }) diff --git a/x/upgrade/types/handler.go b/x/upgrade/types/handler.go index 3af3043053a8..4c130046139c 100644 --- a/x/upgrade/types/handler.go +++ b/x/upgrade/types/handler.go @@ -3,7 +3,7 @@ package types import ( "context" - "github.com/cosmos/cosmos-sdk/types/module" + "cosmossdk.io/core/appmodule" ) // UpgradeHandler specifies the type of function that is called when an upgrade @@ -24,4 +24,4 @@ import ( // function. // // Please also refer to docs/core/upgrade.md for more information. -type UpgradeHandler func(ctx context.Context, plan Plan, fromVM module.VersionMap) (module.VersionMap, error) +type UpgradeHandler func(ctx context.Context, plan Plan, fromVM appmodule.VersionMap) (appmodule.VersionMap, error) From 46d6406ab37365b9264a01c121888fb078db1ede Mon Sep 17 00:00:00 2001 From: Matt Kocubinski Date: Thu, 30 May 2024 20:30:15 -0400 Subject: [PATCH 07/16] feat(server/v2): introduce cometbft v2 (#20483) --- core/app/app.go | 3 + runtime/v2/go.mod | 2 +- runtime/v2/go.sum | 4 +- server/v2/cometbft/abci.go | 596 ++ .../client/grpc/cmtservice/autocli.go | 71 + .../client/grpc/cmtservice/query.pb.go | 5452 +++++++++++++++++ .../client/grpc/cmtservice/query.pb.gw.go | 669 ++ .../client/grpc/cmtservice/service.go | 312 + .../cometbft/client/grpc/cmtservice/types.go | 47 + .../client/grpc/cmtservice/types.pb.go | 1371 +++++ .../cometbft/client/grpc/cmtservice/util.go | 39 + server/v2/cometbft/client/rpc/block.go | 103 + server/v2/cometbft/client/rpc/client.go | 36 + server/v2/cometbft/client/rpc/utils.go | 75 + server/v2/cometbft/commands.go | 414 ++ server/v2/cometbft/config.go | 37 + server/v2/cometbft/flags/flags.go | 79 + server/v2/cometbft/go.mod | 190 + server/v2/cometbft/go.sum | 694 +++ server/v2/cometbft/handlers/defaults.go | 186 + server/v2/cometbft/handlers/handlers.go | 31 + server/v2/cometbft/handlers/tx_selector.go | 76 + server/v2/cometbft/log/logger.go | 23 + server/v2/cometbft/mempool/config.go | 11 + server/v2/cometbft/mempool/doc.go | 6 + server/v2/cometbft/mempool/mempool.go | 41 + server/v2/cometbft/mempool/noop.go | 22 + server/v2/cometbft/query.go | 130 + server/v2/cometbft/server.go | 225 + server/v2/cometbft/service.go | 70 + server/v2/cometbft/snapshots.go | 192 + server/v2/cometbft/streaming.go | 77 + server/v2/cometbft/types/errors/errors.go | 17 + server/v2/cometbft/types/peer.go | 6 + server/v2/cometbft/types/store.go | 32 + server/v2/cometbft/types/vote.go | 13 + server/v2/cometbft/utils.go | 414 ++ tools/cosmovisor/go.mod | 4 +- 38 files changed, 11765 insertions(+), 5 deletions(-) create mode 100644 server/v2/cometbft/abci.go create mode 100644 server/v2/cometbft/client/grpc/cmtservice/autocli.go create mode 100644 server/v2/cometbft/client/grpc/cmtservice/query.pb.go create mode 100644 server/v2/cometbft/client/grpc/cmtservice/query.pb.gw.go create mode 100644 server/v2/cometbft/client/grpc/cmtservice/service.go create mode 100644 server/v2/cometbft/client/grpc/cmtservice/types.go create mode 100644 server/v2/cometbft/client/grpc/cmtservice/types.pb.go create mode 100644 server/v2/cometbft/client/grpc/cmtservice/util.go create mode 100644 server/v2/cometbft/client/rpc/block.go create mode 100644 server/v2/cometbft/client/rpc/client.go create mode 100644 server/v2/cometbft/client/rpc/utils.go create mode 100644 server/v2/cometbft/commands.go create mode 100644 server/v2/cometbft/config.go create mode 100644 server/v2/cometbft/flags/flags.go create mode 100644 server/v2/cometbft/go.mod create mode 100644 server/v2/cometbft/go.sum create mode 100644 server/v2/cometbft/handlers/defaults.go create mode 100644 server/v2/cometbft/handlers/handlers.go create mode 100644 server/v2/cometbft/handlers/tx_selector.go create mode 100644 server/v2/cometbft/log/logger.go create mode 100644 server/v2/cometbft/mempool/config.go create mode 100644 server/v2/cometbft/mempool/doc.go create mode 100644 server/v2/cometbft/mempool/mempool.go create mode 100644 server/v2/cometbft/mempool/noop.go create mode 100644 server/v2/cometbft/query.go create mode 100644 server/v2/cometbft/server.go create mode 100644 server/v2/cometbft/service.go create mode 100644 server/v2/cometbft/snapshots.go create mode 100644 server/v2/cometbft/streaming.go create mode 100644 server/v2/cometbft/types/errors/errors.go create mode 100644 server/v2/cometbft/types/peer.go create mode 100644 server/v2/cometbft/types/store.go create mode 100644 server/v2/cometbft/types/vote.go create mode 100644 server/v2/cometbft/utils.go diff --git a/core/app/app.go b/core/app/app.go index 5bc62bdf1cde..99263953e255 100644 --- a/core/app/app.go +++ b/core/app/app.go @@ -28,6 +28,9 @@ type BlockRequest[T any] struct { AppHash []byte Txs []T ConsensusMessages []transaction.Msg + + // IsGenesis indicates if this block is the first block of the chain. + IsGenesis bool } type BlockResponse struct { diff --git a/runtime/v2/go.mod b/runtime/v2/go.mod index e58b4f577a74..9840ca88316a 100644 --- a/runtime/v2/go.mod +++ b/runtime/v2/go.mod @@ -50,7 +50,7 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect - github.com/cosmos/iavl v1.1.4 // indirect + github.com/cosmos/iavl v1.2.0 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/dot v1.6.2 // indirect diff --git a/runtime/v2/go.sum b/runtime/v2/go.sum index cf33e39ac964..a3a26f890ba6 100644 --- a/runtime/v2/go.sum +++ b/runtime/v2/go.sum @@ -42,8 +42,8 @@ github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+R github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= -github.com/cosmos/iavl v1.1.4 h1:Z0cVVjeQqOUp78/nWt/uhQy83vYluWlAMGQ4zbH9G34= -github.com/cosmos/iavl v1.1.4/go.mod h1:vCYmRQUJU1wwj0oRD3wMEtOM9sJNDP+GFMaXmIxZ/rU= +github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= +github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= diff --git a/server/v2/cometbft/abci.go b/server/v2/cometbft/abci.go new file mode 100644 index 000000000000..ad68aaa9f183 --- /dev/null +++ b/server/v2/cometbft/abci.go @@ -0,0 +1,596 @@ +package cometbft + +import ( + "context" + "errors" + "fmt" + "sync/atomic" + + abci "github.com/cometbft/cometbft/abci/types" + + coreappmgr "cosmossdk.io/core/app" + "cosmossdk.io/core/comet" + "cosmossdk.io/core/event" + "cosmossdk.io/core/log" + "cosmossdk.io/core/store" + "cosmossdk.io/core/transaction" + errorsmod "cosmossdk.io/errors" + "cosmossdk.io/server/v2/appmanager" + "cosmossdk.io/server/v2/cometbft/handlers" + "cosmossdk.io/server/v2/cometbft/mempool" + "cosmossdk.io/server/v2/cometbft/types" + cometerrors "cosmossdk.io/server/v2/cometbft/types/errors" + "cosmossdk.io/server/v2/streaming" + "cosmossdk.io/store/v2/snapshots" + consensustypes "cosmossdk.io/x/consensus/types" +) + +const ( + QueryPathApp = "app" + QueryPathP2P = "p2p" + QueryPathStore = "store" +) + +var _ abci.Application = (*Consensus[transaction.Tx])(nil) + +type Consensus[T transaction.Tx] struct { + app *appmanager.AppManager[T] + cfg Config + store types.Store + logger log.Logger + txCodec transaction.Codec[T] + streaming streaming.Manager + snapshotManager *snapshots.Manager + mempool mempool.Mempool[T] + + // this is only available after this node has committed a block (in FinalizeBlock), + // otherwise it will be empty and we will need to query the app for the last + // committed block. TODO(tip): check if concurrency is really needed + lastCommittedBlock atomic.Pointer[BlockData] + + prepareProposalHandler handlers.PrepareHandler[T] + processProposalHandler handlers.ProcessHandler[T] + verifyVoteExt handlers.VerifyVoteExtensionhandler + extendVote handlers.ExtendVoteHandler + + chainID string +} + +func NewConsensus[T transaction.Tx]( + app *appmanager.AppManager[T], + mp mempool.Mempool[T], + store types.Store, + cfg Config, + txCodec transaction.Codec[T], + logger log.Logger, +) *Consensus[T] { + return &Consensus[T]{ + mempool: mp, + store: store, + app: app, + cfg: cfg, + txCodec: txCodec, + logger: logger, + } +} + +func (c *Consensus[T]) SetMempool(mp mempool.Mempool[T]) { + c.mempool = mp +} + +func (c *Consensus[T]) SetStreamingManager(sm streaming.Manager) { + c.streaming = sm +} + +// SetSnapshotManager sets the snapshot manager for the Consensus. +// The snapshot manager is responsible for managing snapshots of the Consensus state. +// It allows for creating, storing, and restoring snapshots of the Consensus state. +// The provided snapshot manager will be used by the Consensus to handle snapshots. +func (c *Consensus[T]) SetSnapshotManager(sm *snapshots.Manager) { + c.snapshotManager = sm +} + +// RegisterExtensions registers the given extensions with the consensus module's snapshot manager. +// It allows additional snapshotter implementations to be used for creating and restoring snapshots. +func (c *Consensus[T]) RegisterExtensions(extensions ...snapshots.ExtensionSnapshotter) { + if err := c.snapshotManager.RegisterExtensions(extensions...); err != nil { + panic(fmt.Errorf("failed to register snapshot extensions: %w", err)) + } +} + +func (c *Consensus[T]) SetPrepareProposalHandler(handler handlers.PrepareHandler[T]) { + c.prepareProposalHandler = handler +} + +func (c *Consensus[T]) SetProcessProposalHandler(handler handlers.ProcessHandler[T]) { + c.processProposalHandler = handler +} + +func (c *Consensus[T]) SetExtendVoteExtension(handler handlers.ExtendVoteHandler) { + c.extendVote = handler +} + +func (c *Consensus[T]) SetVerifyVoteExtension(handler handlers.VerifyVoteExtensionhandler) { + c.verifyVoteExt = handler +} + +// BlockData is used to keep some data about the last committed block. Currently +// we only use the height, the rest is not needed right now and might get removed +// in the future. +type BlockData struct { + Height int64 + Hash []byte + StateChanges []store.StateChanges +} + +// CheckTx implements types.Application. +// It is called by cometbft to verify transaction validity +func (c *Consensus[T]) CheckTx(ctx context.Context, req *abci.CheckTxRequest) (*abci.CheckTxResponse, error) { + decodedTx, err := c.txCodec.Decode(req.Tx) + if err != nil { + return nil, err + } + + resp, err := c.app.ValidateTx(ctx, decodedTx) + if err != nil { + return nil, err + } + + cometResp := &abci.CheckTxResponse{ + Code: resp.Code, + GasWanted: uint64ToInt64(resp.GasWanted), + GasUsed: uint64ToInt64(resp.GasUsed), + Events: intoABCIEvents(resp.Events, c.cfg.IndexEvents), + Info: resp.Info, + Data: resp.Data, + Log: resp.Log, + Codespace: resp.Codespace, + } + if resp.Error != nil { + cometResp.Code = 1 + cometResp.Log = resp.Error.Error() + } + return cometResp, nil +} + +// Info implements types.Application. +func (c *Consensus[T]) Info(ctx context.Context, _ *abci.InfoRequest) (*abci.InfoResponse, error) { + version, _, err := c.store.StateLatest() + if err != nil { + return nil, err + } + + // cp, err := c.GetConsensusParams(ctx) + // if err != nil { + // return nil, err + // } + + cid, err := c.store.LastCommitID() + if err != nil { + return nil, err + } + + return &abci.InfoResponse{ + Data: c.cfg.Name, + Version: c.cfg.Version, + // AppVersion: cp.GetVersion().App, + AppVersion: 0, // TODO fetch from store? + LastBlockHeight: int64(version), + LastBlockAppHash: cid.Hash, + }, nil +} + +// Query implements types.Application. +// It is called by cometbft to query application state. +func (c *Consensus[T]) Query(ctx context.Context, req *abci.QueryRequest) (*abci.QueryResponse, error) { + // follow the query path from here + decodedMsg, err := c.txCodec.Decode(req.Data) + protoMsg, ok := any(decodedMsg).(transaction.Msg) + if !ok { + return nil, fmt.Errorf("decoded type T %T must implement core/transaction.Msg", decodedMsg) + } + + // if no error is returned then we can handle the query with the appmanager + // otherwise it is a KV store query + if err == nil { + res, err := c.app.Query(ctx, uint64(req.Height), protoMsg) + if err != nil { + return nil, err + } + + return queryResponse(res) + } + + // 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) + if len(path) == 0 { + return QueryResult(errorsmod.Wrap(cometerrors.ErrUnknownRequest, "no query path provided"), c.cfg.Trace), nil + } + + var resp *abci.QueryResponse + + switch path[0] { + case QueryPathApp: + resp, err = c.handlerQueryApp(ctx, path, req) + + case QueryPathStore: + resp, err = c.handleQueryStore(path, c.store, req) + + case QueryPathP2P: + resp, err = c.handleQueryP2P(path) + + default: + resp = QueryResult(errorsmod.Wrap(cometerrors.ErrUnknownRequest, "unknown query path"), c.cfg.Trace) + } + + if err != nil { + return QueryResult(err, c.cfg.Trace), nil + } + + return resp, nil +} + +// InitChain implements types.Application. +func (c *Consensus[T]) InitChain(ctx context.Context, req *abci.InitChainRequest) (*abci.InitChainResponse, error) { + c.logger.Info("InitChain", "initialHeight", req.InitialHeight, "chainID", req.ChainId) + + // store chainID to be used later on in execution + c.chainID = req.ChainId + + // On a new chain, we consider the init chain block height as 0, even though + // req.InitialHeight is 1 by default. + // TODO + + var consMessages []transaction.Msg + if req.ConsensusParams != nil { + consMessages = append(consMessages, &consensustypes.MsgUpdateParams{ + Authority: c.cfg.ConsensusAuthority, + Block: req.ConsensusParams.Block, + Evidence: req.ConsensusParams.Evidence, + Validator: req.ConsensusParams.Validator, + Abci: req.ConsensusParams.Abci, + }) + } + + br := &coreappmgr.BlockRequest[T]{ + Height: uint64(req.InitialHeight - 1), + Time: req.Time, + Hash: nil, + AppHash: nil, + ChainId: req.ChainId, + ConsensusMessages: consMessages, + IsGenesis: true, + } + + blockresponse, genesisState, err := c.app.InitGenesis( + ctx, + br, + req.AppStateBytes, + c.txCodec) + if err != nil { + return nil, fmt.Errorf("genesis state init failure: %w", err) + } + + // TODO necessary? where should this WARN live if it all. helpful for testing + for _, txRes := range blockresponse.TxResults { + if txRes.Error != nil { + c.logger.Warn("genesis tx failed", "code", txRes.Code, "log", txRes.Log, "error", txRes.Error) + } + } + + validatorUpdates := intoABCIValidatorUpdates(blockresponse.ValidatorUpdates) + + stateChanges, err := genesisState.GetStateChanges() + if err != nil { + return nil, err + } + cs := &store.Changeset{ + Changes: stateChanges, + } + stateRoot, err := c.store.Commit(cs) + if err != nil { + return nil, fmt.Errorf("unable to commit the changeset: %w", err) + } + + return &abci.InitChainResponse{ + ConsensusParams: req.ConsensusParams, + Validators: validatorUpdates, + AppHash: stateRoot, + }, nil +} + +// PrepareProposal implements types.Application. +// It is called by cometbft to prepare a proposal block. +func (c *Consensus[T]) PrepareProposal( + ctx context.Context, + req *abci.PrepareProposalRequest, +) (resp *abci.PrepareProposalResponse, err error) { + if req.Height < 1 { + return nil, errors.New("PrepareProposal called with invalid height") + } + + decodedTxs := make([]T, len(req.Txs)) + for _, tx := range req.Txs { + decTx, err := c.txCodec.Decode(tx) + if err != nil { + // TODO: vote extension meta data as a custom type to avoid possibly accepting invalid txs + // continue even if tx decoding fails + c.logger.Error("failed to decode tx", "err", err) + } + decodedTxs = append(decodedTxs, decTx) + } + + ciCtx := contextWithCometInfo(ctx, comet.Info{ + Evidence: toCoreEvidence(req.Misbehavior), + ValidatorsHash: req.NextValidatorsHash, + ProposerAddress: req.ProposerAddress, + LastCommit: toCoreExtendedCommitInfo(req.LocalLastCommit), + }) + + txs, err := c.prepareProposalHandler(ciCtx, c.app, decodedTxs, req) + if err != nil { + return nil, err + } + + encodedTxs := make([][]byte, len(txs)) + for i, tx := range txs { + encodedTxs[i] = tx.Bytes() + } + + return &abci.PrepareProposalResponse{ + Txs: encodedTxs, + }, nil +} + +// ProcessProposal implements types.Application. +// It is called by cometbft to process/verify a proposal block. +func (c *Consensus[T]) ProcessProposal( + ctx context.Context, + req *abci.ProcessProposalRequest, +) (*abci.ProcessProposalResponse, error) { + decodedTxs := make([]T, len(req.Txs)) + for _, tx := range req.Txs { + decTx, err := c.txCodec.Decode(tx) + if err != nil { + // TODO: vote extension meta data as a custom type to avoid possibly accepting invalid txs + // continue even if tx decoding fails + c.logger.Error("failed to decode tx", "err", err) + } + decodedTxs = append(decodedTxs, decTx) + } + + ciCtx := contextWithCometInfo(ctx, comet.Info{ + Evidence: toCoreEvidence(req.Misbehavior), + ValidatorsHash: req.NextValidatorsHash, + ProposerAddress: req.ProposerAddress, + LastCommit: toCoreCommitInfo(req.ProposedLastCommit), + }) + + err := c.processProposalHandler(ciCtx, c.app, decodedTxs, 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 &abci.ProcessProposalResponse{ + Status: abci.PROCESS_PROPOSAL_STATUS_REJECT, + }, nil + } + + return &abci.ProcessProposalResponse{ + Status: abci.PROCESS_PROPOSAL_STATUS_ACCEPT, + }, nil +} + +// FinalizeBlock implements types.Application. +// It is called by cometbft to finalize a block. +func (c *Consensus[T]) FinalizeBlock( + ctx context.Context, + req *abci.FinalizeBlockRequest, +) (*abci.FinalizeBlockResponse, error) { + if err := c.validateFinalizeBlockHeight(req); err != nil { + return nil, err + } + + if err := c.checkHalt(req.Height, req.Time); err != nil { + return nil, err + } + + // TODO evaluate this approach vs. service using context. + // cometInfo := &consensustypes.MsgUpdateCometInfo{ + // Authority: c.cfg.ConsensusAuthority, + // CometInfo: &consensustypes.CometInfo{ + // Evidence: req.Misbehavior, + // ValidatorsHash: req.NextValidatorsHash, + // ProposerAddress: req.ProposerAddress, + // LastCommit: req.DecidedLastCommit, + // }, + //} + // + // ctx = context.WithValue(ctx, corecontext.CometInfoKey, &comet.Info{ + // Evidence: sdktypes.ToSDKEvidence(req.Misbehavior), + // ValidatorsHash: req.NextValidatorsHash, + // ProposerAddress: req.ProposerAddress, + // LastCommit: sdktypes.ToSDKCommitInfo(req.DecidedLastCommit), + // }) + + // 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) + if err != nil { + return nil, err + } + + cid, err := c.store.LastCommitID() + if err != nil { + return nil, err + } + + blockReq := &coreappmgr.BlockRequest[T]{ + Height: uint64(req.Height), + Time: req.Time, + Hash: req.Hash, + AppHash: cid.Hash, + ChainId: c.chainID, + Txs: decodedTxs, + // ConsensusMessages: []transaction.Msg{cometInfo}, + } + + ciCtx := contextWithCometInfo(ctx, comet.Info{ + Evidence: toCoreEvidence(req.Misbehavior), + ValidatorsHash: req.NextValidatorsHash, + ProposerAddress: req.ProposerAddress, + LastCommit: toCoreCommitInfo(req.DecidedLastCommit), + }) + + resp, newState, err := c.app.DeliverBlock(ciCtx, blockReq) + if err != nil { + return nil, err + } + + // after we get the changeset we can produce the commit hash, + // from the store. + stateChanges, err := newState.GetStateChanges() + if err != nil { + return nil, err + } + appHash, err := c.store.Commit(&store.Changeset{Changes: stateChanges}) + if err != nil { + return nil, fmt.Errorf("unable to commit the changeset: %w", err) + } + + var events []event.Event + events = append(events, resp.PreBlockEvents...) + events = append(events, resp.BeginBlockEvents...) + for _, tx := range resp.TxResults { + events = append(events, tx.Events...) + } + 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) + if err != nil { + return nil, err + } + + // remove txs from the mempool + err = c.mempool.Remove(decodedTxs) + if err != nil { + return nil, fmt.Errorf("unable to remove txs: %w", err) + } + + c.lastCommittedBlock.Store(&BlockData{ + Height: req.Height, + Hash: appHash, + StateChanges: stateChanges, + }) + + cp, err := c.GetConsensusParams(ctx) // we get the consensus params from the latest state because we committed state above + if err != nil { + return nil, err + } + + return finalizeBlockResponse(resp, cp, appHash, c.cfg.IndexEvents) +} + +// Commit implements types.Application. +// It is called by cometbft to notify the application that a block was committed. +func (c *Consensus[T]) Commit(ctx context.Context, _ *abci.CommitRequest) (*abci.CommitResponse, error) { + lastCommittedBlock := c.lastCommittedBlock.Load() + + c.snapshotManager.SnapshotIfApplicable(lastCommittedBlock.Height) + + cp, err := c.GetConsensusParams(ctx) + if err != nil { + return nil, err + } + + return &abci.CommitResponse{ + RetainHeight: c.GetBlockRetentionHeight(cp, lastCommittedBlock.Height), + }, nil +} + +// Vote extensions +// VerifyVoteExtension implements types.Application. +func (c *Consensus[T]) VerifyVoteExtension( + ctx context.Context, + req *abci.VerifyVoteExtensionRequest, +) (*abci.VerifyVoteExtensionResponse, error) { + // If vote extensions are not enabled, as a safety precaution, we return an + // error. + cp, err := c.GetConsensusParams(ctx) + if err != nil { + return nil, err + } + + // Note: we verify votes extensions on VoteExtensionsEnableHeight+1. Check + // comment in ExtendVote and ValidateVoteExtensions for more details. + extsEnabled := cp.Abci != nil && req.Height >= cp.Abci.VoteExtensionsEnableHeight && cp.Abci.VoteExtensionsEnableHeight != 0 + if !extsEnabled { + return nil, fmt.Errorf("vote extensions are not enabled; unexpected call to VerifyVoteExtension at height %d", req.Height) + } + + if c.verifyVoteExt == nil { + return nil, fmt.Errorf("vote extensions are enabled but no verify function was set") + } + + _, latestStore, err := c.store.StateLatest() + if err != nil { + return nil, err + } + + resp, err := c.verifyVoteExt(ctx, latestStore, req) + if err != nil { + c.logger.Error("failed to verify vote extension", "height", req.Height, "err", err) + return &abci.VerifyVoteExtensionResponse{Status: abci.VERIFY_VOTE_EXTENSION_STATUS_REJECT}, nil + } + + return resp, err +} + +// ExtendVote implements types.Application. +func (c *Consensus[T]) ExtendVote(ctx context.Context, req *abci.ExtendVoteRequest) (*abci.ExtendVoteResponse, error) { + // If vote extensions are not enabled, as a safety precaution, we return an + // error. + cp, err := c.GetConsensusParams(ctx) + if err != nil { + return nil, err + } + + // Note: In this case, we do want to extend vote if the height is equal or + // greater than VoteExtensionsEnableHeight. This defers from the check done + // in ValidateVoteExtensions and PrepareProposal in which we'll check for + // vote extensions on VoteExtensionsEnableHeight+1. + extsEnabled := cp.Abci != nil && req.Height >= cp.Abci.VoteExtensionsEnableHeight && cp.Abci.VoteExtensionsEnableHeight != 0 + if !extsEnabled { + return nil, fmt.Errorf("vote extensions are not enabled; unexpected call to ExtendVote at height %d", req.Height) + } + + if c.verifyVoteExt == nil { + return nil, fmt.Errorf("vote extensions are enabled but no verify function was set") + } + + _, latestStore, err := c.store.StateLatest() + if err != nil { + return nil, err + } + + resp, err := c.extendVote(ctx, latestStore, req) + if err != nil { + c.logger.Error("failed to verify vote extension", "height", req.Height, "err", err) + return &abci.ExtendVoteResponse{}, nil + } + + return resp, err +} + +func decodeTxs[T transaction.Tx](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) + } + txs[i] = tx + } + return txs, nil +} diff --git a/server/v2/cometbft/client/grpc/cmtservice/autocli.go b/server/v2/cometbft/client/grpc/cmtservice/autocli.go new file mode 100644 index 000000000000..ea314c6f8c08 --- /dev/null +++ b/server/v2/cometbft/client/grpc/cmtservice/autocli.go @@ -0,0 +1,71 @@ +package cmtservice + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + cmtv1beta1 "cosmossdk.io/api/cosmos/base/tendermint/v1beta1" +) + +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 [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 [height]", + Short: "Query for a validator set by height", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "height"}}, + }, + { + RpcMethod: "ABCIQuery", + Skip: true, + }, + }, +} + +// NewCometBFTCommands is a fake `appmodule.Module` to be considered as a module +// and be added in AutoCLI. +func NewCometBFTCommands() *cometModule { + return &cometModule{} +} + +type cometModule struct{} + +func (m cometModule) IsOnePerModuleType() {} +func (m cometModule) IsAppModule() {} + +func (m cometModule) Name() string { + return "comet" +} + +func (m cometModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: CometBFTAutoCLIDescriptor, + } +} diff --git a/server/v2/cometbft/client/grpc/cmtservice/query.pb.go b/server/v2/cometbft/client/grpc/cmtservice/query.pb.go new file mode 100644 index 000000000000..3d8a4e74d234 --- /dev/null +++ b/server/v2/cometbft/client/grpc/cmtservice/query.pb.go @@ -0,0 +1,5452 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/base/tendermint/v1beta1/query.proto + +package cmtservice + +import ( + context "context" + fmt "fmt" + v11 "github.com/cometbft/cometbft/api/cometbft/p2p/v1" + v1 "github.com/cometbft/cometbft/api/cometbft/types/v1" + _ "github.com/cosmos/cosmos-proto" + query "github.com/cosmos/cosmos-sdk/types/query" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + any "github.com/cosmos/gogoproto/types/any" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// GetValidatorSetByHeightRequest is the request type for the Query/GetValidatorSetByHeight RPC method. +type GetValidatorSetByHeightRequest struct { + Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` + // pagination defines an pagination for the request. + Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *GetValidatorSetByHeightRequest) Reset() { *m = GetValidatorSetByHeightRequest{} } +func (m *GetValidatorSetByHeightRequest) String() string { return proto.CompactTextString(m) } +func (*GetValidatorSetByHeightRequest) ProtoMessage() {} +func (*GetValidatorSetByHeightRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{0} +} +func (m *GetValidatorSetByHeightRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetValidatorSetByHeightRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetValidatorSetByHeightRequest.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 *GetValidatorSetByHeightRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetValidatorSetByHeightRequest.Merge(m, src) +} +func (m *GetValidatorSetByHeightRequest) XXX_Size() int { + return m.Size() +} +func (m *GetValidatorSetByHeightRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetValidatorSetByHeightRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetValidatorSetByHeightRequest proto.InternalMessageInfo + +func (m *GetValidatorSetByHeightRequest) GetHeight() int64 { + if m != nil { + return m.Height + } + return 0 +} + +func (m *GetValidatorSetByHeightRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// GetValidatorSetByHeightResponse is the response type for the Query/GetValidatorSetByHeight RPC method. +type GetValidatorSetByHeightResponse struct { + BlockHeight int64 `protobuf:"varint,1,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + Validators []*Validator `protobuf:"bytes,2,rep,name=validators,proto3" json:"validators,omitempty"` + // pagination defines an pagination for the response. + Pagination *query.PageResponse `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *GetValidatorSetByHeightResponse) Reset() { *m = GetValidatorSetByHeightResponse{} } +func (m *GetValidatorSetByHeightResponse) String() string { return proto.CompactTextString(m) } +func (*GetValidatorSetByHeightResponse) ProtoMessage() {} +func (*GetValidatorSetByHeightResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{1} +} +func (m *GetValidatorSetByHeightResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetValidatorSetByHeightResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetValidatorSetByHeightResponse.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 *GetValidatorSetByHeightResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetValidatorSetByHeightResponse.Merge(m, src) +} +func (m *GetValidatorSetByHeightResponse) XXX_Size() int { + return m.Size() +} +func (m *GetValidatorSetByHeightResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetValidatorSetByHeightResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetValidatorSetByHeightResponse proto.InternalMessageInfo + +func (m *GetValidatorSetByHeightResponse) GetBlockHeight() int64 { + if m != nil { + return m.BlockHeight + } + return 0 +} + +func (m *GetValidatorSetByHeightResponse) GetValidators() []*Validator { + if m != nil { + return m.Validators + } + return nil +} + +func (m *GetValidatorSetByHeightResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +// GetLatestValidatorSetRequest is the request type for the Query/GetValidatorSetByHeight RPC method. +type GetLatestValidatorSetRequest struct { + // pagination defines an pagination for the request. + Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *GetLatestValidatorSetRequest) Reset() { *m = GetLatestValidatorSetRequest{} } +func (m *GetLatestValidatorSetRequest) String() string { return proto.CompactTextString(m) } +func (*GetLatestValidatorSetRequest) ProtoMessage() {} +func (*GetLatestValidatorSetRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{2} +} +func (m *GetLatestValidatorSetRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetLatestValidatorSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetLatestValidatorSetRequest.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 *GetLatestValidatorSetRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetLatestValidatorSetRequest.Merge(m, src) +} +func (m *GetLatestValidatorSetRequest) XXX_Size() int { + return m.Size() +} +func (m *GetLatestValidatorSetRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetLatestValidatorSetRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetLatestValidatorSetRequest proto.InternalMessageInfo + +func (m *GetLatestValidatorSetRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method. +type GetLatestValidatorSetResponse struct { + BlockHeight int64 `protobuf:"varint,1,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + Validators []*Validator `protobuf:"bytes,2,rep,name=validators,proto3" json:"validators,omitempty"` + // pagination defines an pagination for the response. + Pagination *query.PageResponse `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *GetLatestValidatorSetResponse) Reset() { *m = GetLatestValidatorSetResponse{} } +func (m *GetLatestValidatorSetResponse) String() string { return proto.CompactTextString(m) } +func (*GetLatestValidatorSetResponse) ProtoMessage() {} +func (*GetLatestValidatorSetResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{3} +} +func (m *GetLatestValidatorSetResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetLatestValidatorSetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetLatestValidatorSetResponse.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 *GetLatestValidatorSetResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetLatestValidatorSetResponse.Merge(m, src) +} +func (m *GetLatestValidatorSetResponse) XXX_Size() int { + return m.Size() +} +func (m *GetLatestValidatorSetResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetLatestValidatorSetResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetLatestValidatorSetResponse proto.InternalMessageInfo + +func (m *GetLatestValidatorSetResponse) GetBlockHeight() int64 { + if m != nil { + return m.BlockHeight + } + return 0 +} + +func (m *GetLatestValidatorSetResponse) GetValidators() []*Validator { + if m != nil { + return m.Validators + } + return nil +} + +func (m *GetLatestValidatorSetResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +// Validator is the type for the validator-set. +type Validator struct { + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + PubKey *any.Any `protobuf:"bytes,2,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"` + VotingPower int64 `protobuf:"varint,3,opt,name=voting_power,json=votingPower,proto3" json:"voting_power,omitempty"` + ProposerPriority int64 `protobuf:"varint,4,opt,name=proposer_priority,json=proposerPriority,proto3" json:"proposer_priority,omitempty"` +} + +func (m *Validator) Reset() { *m = Validator{} } +func (m *Validator) String() string { return proto.CompactTextString(m) } +func (*Validator) ProtoMessage() {} +func (*Validator) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{4} +} +func (m *Validator) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Validator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Validator.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 *Validator) XXX_Merge(src proto.Message) { + xxx_messageInfo_Validator.Merge(m, src) +} +func (m *Validator) XXX_Size() int { + return m.Size() +} +func (m *Validator) XXX_DiscardUnknown() { + xxx_messageInfo_Validator.DiscardUnknown(m) +} + +var xxx_messageInfo_Validator proto.InternalMessageInfo + +func (m *Validator) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *Validator) GetPubKey() *any.Any { + if m != nil { + return m.PubKey + } + return nil +} + +func (m *Validator) GetVotingPower() int64 { + if m != nil { + return m.VotingPower + } + return 0 +} + +func (m *Validator) GetProposerPriority() int64 { + if m != nil { + return m.ProposerPriority + } + return 0 +} + +// GetBlockByHeightRequest is the request type for the Query/GetBlockByHeight RPC method. +type GetBlockByHeightRequest struct { + Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` +} + +func (m *GetBlockByHeightRequest) Reset() { *m = GetBlockByHeightRequest{} } +func (m *GetBlockByHeightRequest) String() string { return proto.CompactTextString(m) } +func (*GetBlockByHeightRequest) ProtoMessage() {} +func (*GetBlockByHeightRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{5} +} +func (m *GetBlockByHeightRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetBlockByHeightRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetBlockByHeightRequest.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 *GetBlockByHeightRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBlockByHeightRequest.Merge(m, src) +} +func (m *GetBlockByHeightRequest) XXX_Size() int { + return m.Size() +} +func (m *GetBlockByHeightRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetBlockByHeightRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetBlockByHeightRequest proto.InternalMessageInfo + +func (m *GetBlockByHeightRequest) GetHeight() int64 { + if m != nil { + return m.Height + } + return 0 +} + +// GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method. +type GetBlockByHeightResponse struct { + BlockId *v1.BlockID `protobuf:"bytes,1,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` + // Deprecated: please use `sdk_block` instead + Block *v1.Block `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"` + SdkBlock *Block `protobuf:"bytes,3,opt,name=sdk_block,json=sdkBlock,proto3" json:"sdk_block,omitempty"` +} + +func (m *GetBlockByHeightResponse) Reset() { *m = GetBlockByHeightResponse{} } +func (m *GetBlockByHeightResponse) String() string { return proto.CompactTextString(m) } +func (*GetBlockByHeightResponse) ProtoMessage() {} +func (*GetBlockByHeightResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{6} +} +func (m *GetBlockByHeightResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetBlockByHeightResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetBlockByHeightResponse.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 *GetBlockByHeightResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBlockByHeightResponse.Merge(m, src) +} +func (m *GetBlockByHeightResponse) XXX_Size() int { + return m.Size() +} +func (m *GetBlockByHeightResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetBlockByHeightResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetBlockByHeightResponse proto.InternalMessageInfo + +func (m *GetBlockByHeightResponse) GetBlockId() *v1.BlockID { + if m != nil { + return m.BlockId + } + return nil +} + +func (m *GetBlockByHeightResponse) GetBlock() *v1.Block { + if m != nil { + return m.Block + } + return nil +} + +func (m *GetBlockByHeightResponse) GetSdkBlock() *Block { + if m != nil { + return m.SdkBlock + } + return nil +} + +// GetLatestBlockRequest is the request type for the Query/GetLatestBlock RPC method. +type GetLatestBlockRequest struct { +} + +func (m *GetLatestBlockRequest) Reset() { *m = GetLatestBlockRequest{} } +func (m *GetLatestBlockRequest) String() string { return proto.CompactTextString(m) } +func (*GetLatestBlockRequest) ProtoMessage() {} +func (*GetLatestBlockRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{7} +} +func (m *GetLatestBlockRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetLatestBlockRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetLatestBlockRequest.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 *GetLatestBlockRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetLatestBlockRequest.Merge(m, src) +} +func (m *GetLatestBlockRequest) XXX_Size() int { + return m.Size() +} +func (m *GetLatestBlockRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetLatestBlockRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetLatestBlockRequest proto.InternalMessageInfo + +// GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method. +type GetLatestBlockResponse struct { + BlockId *v1.BlockID `protobuf:"bytes,1,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"` + // Deprecated: please use `sdk_block` instead + Block *v1.Block `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"` + SdkBlock *Block `protobuf:"bytes,3,opt,name=sdk_block,json=sdkBlock,proto3" json:"sdk_block,omitempty"` +} + +func (m *GetLatestBlockResponse) Reset() { *m = GetLatestBlockResponse{} } +func (m *GetLatestBlockResponse) String() string { return proto.CompactTextString(m) } +func (*GetLatestBlockResponse) ProtoMessage() {} +func (*GetLatestBlockResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{8} +} +func (m *GetLatestBlockResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetLatestBlockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetLatestBlockResponse.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 *GetLatestBlockResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetLatestBlockResponse.Merge(m, src) +} +func (m *GetLatestBlockResponse) XXX_Size() int { + return m.Size() +} +func (m *GetLatestBlockResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetLatestBlockResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetLatestBlockResponse proto.InternalMessageInfo + +func (m *GetLatestBlockResponse) GetBlockId() *v1.BlockID { + if m != nil { + return m.BlockId + } + return nil +} + +func (m *GetLatestBlockResponse) GetBlock() *v1.Block { + if m != nil { + return m.Block + } + return nil +} + +func (m *GetLatestBlockResponse) GetSdkBlock() *Block { + if m != nil { + return m.SdkBlock + } + return nil +} + +// GetSyncingRequest is the request type for the Query/GetSyncing RPC method. +type GetSyncingRequest struct { +} + +func (m *GetSyncingRequest) Reset() { *m = GetSyncingRequest{} } +func (m *GetSyncingRequest) String() string { return proto.CompactTextString(m) } +func (*GetSyncingRequest) ProtoMessage() {} +func (*GetSyncingRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{9} +} +func (m *GetSyncingRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetSyncingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetSyncingRequest.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 *GetSyncingRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetSyncingRequest.Merge(m, src) +} +func (m *GetSyncingRequest) XXX_Size() int { + return m.Size() +} +func (m *GetSyncingRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetSyncingRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetSyncingRequest proto.InternalMessageInfo + +// GetSyncingResponse is the response type for the Query/GetSyncing RPC method. +type GetSyncingResponse struct { + Syncing bool `protobuf:"varint,1,opt,name=syncing,proto3" json:"syncing,omitempty"` +} + +func (m *GetSyncingResponse) Reset() { *m = GetSyncingResponse{} } +func (m *GetSyncingResponse) String() string { return proto.CompactTextString(m) } +func (*GetSyncingResponse) ProtoMessage() {} +func (*GetSyncingResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{10} +} +func (m *GetSyncingResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetSyncingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetSyncingResponse.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 *GetSyncingResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetSyncingResponse.Merge(m, src) +} +func (m *GetSyncingResponse) XXX_Size() int { + return m.Size() +} +func (m *GetSyncingResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetSyncingResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetSyncingResponse proto.InternalMessageInfo + +func (m *GetSyncingResponse) GetSyncing() bool { + if m != nil { + return m.Syncing + } + return false +} + +// GetNodeInfoRequest is the request type for the Query/GetNodeInfo RPC method. +type GetNodeInfoRequest struct { +} + +func (m *GetNodeInfoRequest) Reset() { *m = GetNodeInfoRequest{} } +func (m *GetNodeInfoRequest) String() string { return proto.CompactTextString(m) } +func (*GetNodeInfoRequest) ProtoMessage() {} +func (*GetNodeInfoRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{11} +} +func (m *GetNodeInfoRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetNodeInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetNodeInfoRequest.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 *GetNodeInfoRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetNodeInfoRequest.Merge(m, src) +} +func (m *GetNodeInfoRequest) XXX_Size() int { + return m.Size() +} +func (m *GetNodeInfoRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetNodeInfoRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetNodeInfoRequest proto.InternalMessageInfo + +// GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC method. +type GetNodeInfoResponse struct { + DefaultNodeInfo *v11.DefaultNodeInfo `protobuf:"bytes,1,opt,name=default_node_info,json=defaultNodeInfo,proto3" json:"default_node_info,omitempty"` + ApplicationVersion *VersionInfo `protobuf:"bytes,2,opt,name=application_version,json=applicationVersion,proto3" json:"application_version,omitempty"` +} + +func (m *GetNodeInfoResponse) Reset() { *m = GetNodeInfoResponse{} } +func (m *GetNodeInfoResponse) String() string { return proto.CompactTextString(m) } +func (*GetNodeInfoResponse) ProtoMessage() {} +func (*GetNodeInfoResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{12} +} +func (m *GetNodeInfoResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetNodeInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetNodeInfoResponse.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 *GetNodeInfoResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetNodeInfoResponse.Merge(m, src) +} +func (m *GetNodeInfoResponse) XXX_Size() int { + return m.Size() +} +func (m *GetNodeInfoResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetNodeInfoResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetNodeInfoResponse proto.InternalMessageInfo + +func (m *GetNodeInfoResponse) GetDefaultNodeInfo() *v11.DefaultNodeInfo { + if m != nil { + return m.DefaultNodeInfo + } + return nil +} + +func (m *GetNodeInfoResponse) GetApplicationVersion() *VersionInfo { + if m != nil { + return m.ApplicationVersion + } + return nil +} + +// 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"` +} + +func (m *VersionInfo) Reset() { *m = VersionInfo{} } +func (m *VersionInfo) String() string { return proto.CompactTextString(m) } +func (*VersionInfo) ProtoMessage() {} +func (*VersionInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{13} +} +func (m *VersionInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *VersionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_VersionInfo.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 *VersionInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_VersionInfo.Merge(m, src) +} +func (m *VersionInfo) XXX_Size() int { + return m.Size() +} +func (m *VersionInfo) XXX_DiscardUnknown() { + xxx_messageInfo_VersionInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_VersionInfo proto.InternalMessageInfo + +func (m *VersionInfo) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *VersionInfo) GetAppName() string { + if m != nil { + return m.AppName + } + return "" +} + +func (m *VersionInfo) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *VersionInfo) GetGitCommit() string { + if m != nil { + return m.GitCommit + } + return "" +} + +func (m *VersionInfo) GetBuildTags() string { + if m != nil { + return m.BuildTags + } + return "" +} + +func (m *VersionInfo) GetGoVersion() string { + if m != nil { + return m.GoVersion + } + return "" +} + +func (m *VersionInfo) GetBuildDeps() []*Module { + if m != nil { + return m.BuildDeps + } + return nil +} + +func (m *VersionInfo) GetCosmosSdkVersion() string { + if m != nil { + return m.CosmosSdkVersion + } + return "" +} + +// Module is the type for VersionInfo +type Module struct { + // module path + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + // module version + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + // checksum + Sum string `protobuf:"bytes,3,opt,name=sum,proto3" json:"sum,omitempty"` +} + +func (m *Module) Reset() { *m = Module{} } +func (m *Module) String() string { return proto.CompactTextString(m) } +func (*Module) ProtoMessage() {} +func (*Module) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{14} +} +func (m *Module) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Module) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Module.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 *Module) XXX_Merge(src proto.Message) { + xxx_messageInfo_Module.Merge(m, src) +} +func (m *Module) XXX_Size() int { + return m.Size() +} +func (m *Module) XXX_DiscardUnknown() { + xxx_messageInfo_Module.DiscardUnknown(m) +} + +var xxx_messageInfo_Module proto.InternalMessageInfo + +func (m *Module) GetPath() string { + if m != nil { + return m.Path + } + return "" +} + +func (m *Module) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *Module) GetSum() string { + if m != nil { + return m.Sum + } + return "" +} + +// ABCIQueryRequest defines the request structure for the ABCIQuery gRPC query. +type ABCIQueryRequest struct { + Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` + Prove bool `protobuf:"varint,4,opt,name=prove,proto3" json:"prove,omitempty"` +} + +func (m *ABCIQueryRequest) Reset() { *m = ABCIQueryRequest{} } +func (m *ABCIQueryRequest) String() string { return proto.CompactTextString(m) } +func (*ABCIQueryRequest) ProtoMessage() {} +func (*ABCIQueryRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{15} +} +func (m *ABCIQueryRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ABCIQueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ABCIQueryRequest.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 *ABCIQueryRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ABCIQueryRequest.Merge(m, src) +} +func (m *ABCIQueryRequest) XXX_Size() int { + return m.Size() +} +func (m *ABCIQueryRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ABCIQueryRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ABCIQueryRequest proto.InternalMessageInfo + +func (m *ABCIQueryRequest) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +func (m *ABCIQueryRequest) GetPath() string { + if m != nil { + return m.Path + } + return "" +} + +func (m *ABCIQueryRequest) GetHeight() int64 { + if m != nil { + return m.Height + } + return 0 +} + +func (m *ABCIQueryRequest) GetProve() bool { + if m != nil { + return m.Prove + } + return false +} + +// ABCIQueryResponse defines the response structure for the ABCIQuery gRPC query. +// +// Note: This type is a duplicate of the ResponseQuery proto type defined in +// Tendermint. +type ABCIQueryResponse struct { + Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` + Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` + Index int64 `protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"` + Key []byte `protobuf:"bytes,6,opt,name=key,proto3" json:"key,omitempty"` + Value []byte `protobuf:"bytes,7,opt,name=value,proto3" json:"value,omitempty"` + ProofOps *ProofOps `protobuf:"bytes,8,opt,name=proof_ops,json=proofOps,proto3" json:"proof_ops,omitempty"` + Height int64 `protobuf:"varint,9,opt,name=height,proto3" json:"height,omitempty"` + Codespace string `protobuf:"bytes,10,opt,name=codespace,proto3" json:"codespace,omitempty"` +} + +func (m *ABCIQueryResponse) Reset() { *m = ABCIQueryResponse{} } +func (m *ABCIQueryResponse) String() string { return proto.CompactTextString(m) } +func (*ABCIQueryResponse) ProtoMessage() {} +func (*ABCIQueryResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{16} +} +func (m *ABCIQueryResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ABCIQueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ABCIQueryResponse.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 *ABCIQueryResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ABCIQueryResponse.Merge(m, src) +} +func (m *ABCIQueryResponse) XXX_Size() int { + return m.Size() +} +func (m *ABCIQueryResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ABCIQueryResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ABCIQueryResponse proto.InternalMessageInfo + +func (m *ABCIQueryResponse) GetCode() uint32 { + if m != nil { + return m.Code + } + return 0 +} + +func (m *ABCIQueryResponse) GetLog() string { + if m != nil { + return m.Log + } + return "" +} + +func (m *ABCIQueryResponse) GetInfo() string { + if m != nil { + return m.Info + } + return "" +} + +func (m *ABCIQueryResponse) GetIndex() int64 { + if m != nil { + return m.Index + } + return 0 +} + +func (m *ABCIQueryResponse) GetKey() []byte { + if m != nil { + return m.Key + } + return nil +} + +func (m *ABCIQueryResponse) GetValue() []byte { + if m != nil { + return m.Value + } + return nil +} + +func (m *ABCIQueryResponse) GetProofOps() *ProofOps { + if m != nil { + return m.ProofOps + } + return nil +} + +func (m *ABCIQueryResponse) GetHeight() int64 { + if m != nil { + return m.Height + } + return 0 +} + +func (m *ABCIQueryResponse) GetCodespace() string { + if m != nil { + return m.Codespace + } + return "" +} + +// ProofOp defines an operation used for calculating Merkle root. The data could +// be arbitrary format, providing necessary data for example neighbouring node +// hash. +// +// Note: This type is a duplicate of the ProofOp proto type defined in Tendermint. +type ProofOp struct { + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` +} + +func (m *ProofOp) Reset() { *m = ProofOp{} } +func (m *ProofOp) String() string { return proto.CompactTextString(m) } +func (*ProofOp) ProtoMessage() {} +func (*ProofOp) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{17} +} +func (m *ProofOp) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ProofOp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ProofOp.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 *ProofOp) XXX_Merge(src proto.Message) { + xxx_messageInfo_ProofOp.Merge(m, src) +} +func (m *ProofOp) XXX_Size() int { + return m.Size() +} +func (m *ProofOp) XXX_DiscardUnknown() { + xxx_messageInfo_ProofOp.DiscardUnknown(m) +} + +var xxx_messageInfo_ProofOp proto.InternalMessageInfo + +func (m *ProofOp) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *ProofOp) GetKey() []byte { + if m != nil { + return m.Key + } + return nil +} + +func (m *ProofOp) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +// ProofOps is Merkle proof defined by the list of ProofOps. +// +// Note: This type is a duplicate of the ProofOps proto type defined in Tendermint. +type ProofOps struct { + Ops []ProofOp `protobuf:"bytes,1,rep,name=ops,proto3" json:"ops"` +} + +func (m *ProofOps) Reset() { *m = ProofOps{} } +func (m *ProofOps) String() string { return proto.CompactTextString(m) } +func (*ProofOps) ProtoMessage() {} +func (*ProofOps) Descriptor() ([]byte, []int) { + return fileDescriptor_40c93fb3ef485c5d, []int{18} +} +func (m *ProofOps) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ProofOps) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ProofOps.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 *ProofOps) XXX_Merge(src proto.Message) { + xxx_messageInfo_ProofOps.Merge(m, src) +} +func (m *ProofOps) XXX_Size() int { + return m.Size() +} +func (m *ProofOps) XXX_DiscardUnknown() { + xxx_messageInfo_ProofOps.DiscardUnknown(m) +} + +var xxx_messageInfo_ProofOps proto.InternalMessageInfo + +func (m *ProofOps) GetOps() []ProofOp { + if m != nil { + return m.Ops + } + return nil +} + +func init() { + proto.RegisterType((*GetValidatorSetByHeightRequest)(nil), "cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightRequest") + proto.RegisterType((*GetValidatorSetByHeightResponse)(nil), "cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse") + proto.RegisterType((*GetLatestValidatorSetRequest)(nil), "cosmos.base.tendermint.v1beta1.GetLatestValidatorSetRequest") + proto.RegisterType((*GetLatestValidatorSetResponse)(nil), "cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse") + proto.RegisterType((*Validator)(nil), "cosmos.base.tendermint.v1beta1.Validator") + proto.RegisterType((*GetBlockByHeightRequest)(nil), "cosmos.base.tendermint.v1beta1.GetBlockByHeightRequest") + proto.RegisterType((*GetBlockByHeightResponse)(nil), "cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse") + proto.RegisterType((*GetLatestBlockRequest)(nil), "cosmos.base.tendermint.v1beta1.GetLatestBlockRequest") + proto.RegisterType((*GetLatestBlockResponse)(nil), "cosmos.base.tendermint.v1beta1.GetLatestBlockResponse") + proto.RegisterType((*GetSyncingRequest)(nil), "cosmos.base.tendermint.v1beta1.GetSyncingRequest") + proto.RegisterType((*GetSyncingResponse)(nil), "cosmos.base.tendermint.v1beta1.GetSyncingResponse") + proto.RegisterType((*GetNodeInfoRequest)(nil), "cosmos.base.tendermint.v1beta1.GetNodeInfoRequest") + proto.RegisterType((*GetNodeInfoResponse)(nil), "cosmos.base.tendermint.v1beta1.GetNodeInfoResponse") + proto.RegisterType((*VersionInfo)(nil), "cosmos.base.tendermint.v1beta1.VersionInfo") + proto.RegisterType((*Module)(nil), "cosmos.base.tendermint.v1beta1.Module") + proto.RegisterType((*ABCIQueryRequest)(nil), "cosmos.base.tendermint.v1beta1.ABCIQueryRequest") + proto.RegisterType((*ABCIQueryResponse)(nil), "cosmos.base.tendermint.v1beta1.ABCIQueryResponse") + proto.RegisterType((*ProofOp)(nil), "cosmos.base.tendermint.v1beta1.ProofOp") + proto.RegisterType((*ProofOps)(nil), "cosmos.base.tendermint.v1beta1.ProofOps") +} + +func init() { + proto.RegisterFile("cosmos/base/tendermint/v1beta1/query.proto", fileDescriptor_40c93fb3ef485c5d) +} + +var fileDescriptor_40c93fb3ef485c5d = []byte{ + // 1437 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0x4d, 0x6f, 0x1b, 0xc5, + 0x1b, 0xcf, 0xda, 0x69, 0x6c, 0x3f, 0xe9, 0xff, 0xdf, 0x64, 0x12, 0x5a, 0xd7, 0xb4, 0x6e, 0xb0, + 0x44, 0x9b, 0xb6, 0x64, 0xb7, 0x76, 0xda, 0xb4, 0x87, 0x52, 0x94, 0x34, 0x25, 0x0d, 0xb4, 0x25, + 0x6c, 0x10, 0x48, 0x08, 0x69, 0xb5, 0xf6, 0x8e, 0x37, 0xab, 0xd8, 0x3b, 0xd3, 0x9d, 0xb1, 0xc1, + 0x42, 0x48, 0x88, 0x0f, 0x80, 0x90, 0xf8, 0x0a, 0x1c, 0xe0, 0xc6, 0xa1, 0x82, 0x13, 0x95, 0xe0, + 0x54, 0x71, 0xaa, 0x8a, 0x84, 0xaa, 0x1e, 0x10, 0x6a, 0x91, 0xf8, 0x1a, 0x68, 0x5e, 0xd6, 0xde, + 0xcd, 0x4b, 0xed, 0xf4, 0x06, 0x17, 0x6b, 0xf6, 0x79, 0xfd, 0xfd, 0x9e, 0x67, 0xe6, 0x99, 0x31, + 0x9c, 0x6b, 0x10, 0xd6, 0x26, 0xcc, 0xaa, 0xbb, 0x0c, 0x5b, 0x1c, 0x87, 0x1e, 0x8e, 0xda, 0x41, + 0xc8, 0xad, 0x6e, 0xb5, 0x8e, 0xb9, 0x5b, 0xb5, 0xee, 0x76, 0x70, 0xd4, 0x33, 0x69, 0x44, 0x38, + 0x41, 0x65, 0x65, 0x6b, 0x0a, 0x5b, 0x73, 0x60, 0x6b, 0x6a, 0xdb, 0xd2, 0xac, 0x4f, 0x7c, 0x22, + 0x4d, 0x2d, 0xb1, 0x52, 0x5e, 0xa5, 0xe3, 0x3e, 0x21, 0x7e, 0x0b, 0x5b, 0xf2, 0xab, 0xde, 0x69, + 0x5a, 0x6e, 0xa8, 0x03, 0x96, 0x4e, 0x68, 0x95, 0x4b, 0x03, 0xcb, 0x0d, 0x43, 0xc2, 0x5d, 0x1e, + 0x90, 0x90, 0x69, 0xed, 0xcb, 0x0d, 0xd2, 0xc6, 0xbc, 0xde, 0xe4, 0x16, 0xad, 0x51, 0xab, 0x5b, + 0xb5, 0x78, 0x8f, 0xe2, 0x58, 0x79, 0xb2, 0xaf, 0x94, 0xd2, 0x9d, 0xea, 0x14, 0x2d, 0xc9, 0xa1, + 0xcf, 0x88, 0xba, 0x7e, 0x10, 0xca, 0x44, 0x7b, 0xd9, 0xee, 0x51, 0x82, 0x64, 0xdc, 0xe3, 0xca, + 0xd6, 0x51, 0x2c, 0x75, 0x3d, 0xf6, 0x45, 0x54, 0x6f, 0x91, 0xc6, 0xb6, 0x56, 0x4f, 0xbb, 0xed, + 0x20, 0x24, 0x96, 0xfc, 0x55, 0xa2, 0xca, 0xe7, 0x06, 0x94, 0xd7, 0x30, 0x7f, 0xdf, 0x6d, 0x05, + 0x9e, 0xcb, 0x49, 0xb4, 0x89, 0xf9, 0x4a, 0xef, 0x26, 0x0e, 0xfc, 0x2d, 0x6e, 0xe3, 0xbb, 0x1d, + 0xcc, 0x38, 0x3a, 0x0a, 0x13, 0x5b, 0x52, 0x50, 0x34, 0xe6, 0x8c, 0xf9, 0xac, 0xad, 0xbf, 0xd0, + 0x9b, 0x00, 0x03, 0x1e, 0xc5, 0xcc, 0x9c, 0x31, 0x3f, 0x59, 0x3b, 0x6d, 0x26, 0xfb, 0xa3, 0x1a, + 0xa7, 0x39, 0x98, 0x1b, 0xae, 0x8f, 0x75, 0x4c, 0x3b, 0xe1, 0x59, 0x79, 0x6c, 0xc0, 0xa9, 0x7d, + 0x21, 0x30, 0x4a, 0x42, 0x86, 0xd1, 0x2b, 0x70, 0x58, 0x12, 0x71, 0x52, 0x48, 0x26, 0xa5, 0x4c, + 0x99, 0xa2, 0x75, 0x80, 0x6e, 0x1c, 0x82, 0x15, 0x33, 0x73, 0xd9, 0xf9, 0xc9, 0xda, 0x59, 0xf3, + 0xf9, 0xdb, 0xc5, 0xec, 0x27, 0xb5, 0x13, 0xce, 0x68, 0x2d, 0xc5, 0x2c, 0x2b, 0x99, 0x9d, 0x19, + 0xca, 0x4c, 0x41, 0x4d, 0x51, 0x6b, 0xc2, 0x89, 0x35, 0xcc, 0x6f, 0xb9, 0x1c, 0xb3, 0x14, 0xbf, + 0xb8, 0xb4, 0xe9, 0x12, 0x1a, 0x2f, 0x5c, 0xc2, 0xdf, 0x0d, 0x38, 0xb9, 0x4f, 0xa2, 0x7f, 0x77, + 0x01, 0xef, 0x1b, 0x50, 0xe8, 0xa7, 0x40, 0x35, 0xc8, 0xb9, 0x9e, 0x17, 0x61, 0xc6, 0x24, 0xfe, + 0xc2, 0x4a, 0xf1, 0xd1, 0xbd, 0x85, 0x59, 0x1d, 0x76, 0x59, 0x69, 0x36, 0x79, 0x14, 0x84, 0xbe, + 0x1d, 0x1b, 0xa2, 0x05, 0xc8, 0xd1, 0x4e, 0xdd, 0xd9, 0xc6, 0x3d, 0xbd, 0x45, 0x67, 0x4d, 0x75, + 0xe2, 0xcd, 0x78, 0x18, 0x98, 0xcb, 0x61, 0xcf, 0x9e, 0xa0, 0x9d, 0xfa, 0xdb, 0xb8, 0x27, 0xea, + 0xd4, 0x25, 0x3c, 0x08, 0x7d, 0x87, 0x92, 0x8f, 0x71, 0x24, 0xb1, 0x67, 0xed, 0x49, 0x25, 0xdb, + 0x10, 0x22, 0x74, 0x1e, 0xa6, 0x69, 0x44, 0x28, 0x61, 0x38, 0x72, 0x68, 0x14, 0x90, 0x28, 0xe0, + 0xbd, 0xe2, 0xb8, 0xb4, 0x9b, 0x8a, 0x15, 0x1b, 0x5a, 0x5e, 0xa9, 0xc2, 0xb1, 0x35, 0xcc, 0x57, + 0x44, 0x99, 0x47, 0x3c, 0x57, 0x95, 0x27, 0x06, 0x14, 0x77, 0xfb, 0xe8, 0x3e, 0x5e, 0x82, 0xbc, + 0xea, 0x63, 0xe0, 0xe9, 0xfd, 0x52, 0x32, 0xe3, 0x43, 0x6f, 0xaa, 0x29, 0xd1, 0xad, 0x9a, 0xd2, + 0x77, 0x7d, 0xd5, 0xce, 0x49, 0xdb, 0x75, 0x0f, 0x99, 0x70, 0x48, 0x2e, 0x75, 0x0d, 0x8a, 0xfb, + 0xf9, 0xd8, 0xca, 0x0c, 0x7d, 0x00, 0x05, 0xe6, 0x6d, 0x3b, 0xca, 0x47, 0xf5, 0xef, 0xd5, 0x61, + 0x5b, 0x41, 0x01, 0x9e, 0x79, 0x72, 0x6f, 0xe1, 0x88, 0xb2, 0x5c, 0x60, 0xde, 0xf6, 0xdc, 0x05, + 0xf3, 0xe2, 0x65, 0x3b, 0xcf, 0xbc, 0x6d, 0xa9, 0xae, 0x1c, 0x83, 0x97, 0xfa, 0x1b, 0x55, 0x65, + 0x54, 0xd5, 0x10, 0x53, 0xe0, 0xe8, 0x4e, 0xcd, 0x7f, 0x84, 0xf3, 0x0c, 0x4c, 0xaf, 0x61, 0xbe, + 0xd9, 0x0b, 0x1b, 0x62, 0x67, 0x6a, 0xbe, 0x26, 0xa0, 0xa4, 0x50, 0x53, 0x2d, 0x42, 0x8e, 0x29, + 0x91, 0x64, 0x9a, 0xb7, 0xe3, 0xcf, 0xca, 0xac, 0xb4, 0xbf, 0x43, 0x3c, 0xbc, 0x1e, 0x36, 0x49, + 0x1c, 0xe5, 0x67, 0x03, 0x66, 0x52, 0x62, 0x1d, 0xe7, 0x16, 0x4c, 0x7b, 0xb8, 0xe9, 0x76, 0x5a, + 0xdc, 0x09, 0x89, 0x87, 0x9d, 0x20, 0x6c, 0x12, 0x5d, 0xbb, 0xb9, 0x41, 0x1d, 0x68, 0x8d, 0x8a, + 0x2a, 0xac, 0x2a, 0xcb, 0x7e, 0x90, 0x23, 0x5e, 0x5a, 0x80, 0x3e, 0x82, 0x19, 0x97, 0xd2, 0x56, + 0xd0, 0x90, 0x87, 0xd2, 0xe9, 0xe2, 0x88, 0x0d, 0x46, 0xfe, 0xf9, 0xa1, 0x23, 0x42, 0x99, 0xcb, + 0xd0, 0x28, 0x11, 0x47, 0xcb, 0x2b, 0x3f, 0x65, 0x60, 0x32, 0x61, 0x83, 0x10, 0x8c, 0x87, 0x6e, + 0x1b, 0xab, 0x23, 0x6e, 0xcb, 0x35, 0x3a, 0x0e, 0x79, 0x97, 0x52, 0x47, 0xca, 0x33, 0x52, 0x9e, + 0x73, 0x29, 0xbd, 0x23, 0x54, 0x45, 0xc8, 0xc5, 0x80, 0xb2, 0x4a, 0xa3, 0x3f, 0xd1, 0x49, 0x00, + 0x3f, 0xe0, 0x4e, 0x83, 0xb4, 0xdb, 0x01, 0x97, 0x27, 0xb4, 0x60, 0x17, 0xfc, 0x80, 0x5f, 0x97, + 0x02, 0xa1, 0xae, 0x77, 0x82, 0x96, 0xe7, 0x70, 0xd7, 0x67, 0xc5, 0x43, 0x4a, 0x2d, 0x25, 0xef, + 0xb9, 0x3e, 0x93, 0xde, 0xa4, 0xcf, 0x75, 0x42, 0x7b, 0x13, 0x8d, 0x14, 0xdd, 0x88, 0xbd, 0x3d, + 0x4c, 0x59, 0x31, 0x27, 0xa7, 0xe5, 0xe9, 0x61, 0xa5, 0xb8, 0x4d, 0xbc, 0x4e, 0x0b, 0xeb, 0x2c, + 0xab, 0x98, 0x32, 0xb4, 0x0c, 0x48, 0x5f, 0xe7, 0x62, 0xef, 0xc5, 0xd9, 0xf2, 0x72, 0xba, 0xed, + 0xb1, 0xad, 0x16, 0xed, 0x29, 0x25, 0xd8, 0xf4, 0xb6, 0xe3, 0xfa, 0xdd, 0x84, 0x09, 0x15, 0x57, + 0x54, 0x8e, 0xba, 0x7c, 0x2b, 0xae, 0x9c, 0x58, 0x27, 0xcb, 0x93, 0x49, 0x97, 0x67, 0x0a, 0xb2, + 0xac, 0xd3, 0xd6, 0x45, 0x13, 0xcb, 0xca, 0x16, 0x4c, 0x2d, 0xaf, 0x5c, 0x5f, 0x7f, 0x57, 0xcc, + 0xe6, 0x78, 0x4a, 0x21, 0x18, 0xf7, 0x5c, 0xee, 0xca, 0x98, 0x87, 0x6d, 0xb9, 0xee, 0xe7, 0xc9, + 0x24, 0xf2, 0x0c, 0xa6, 0x59, 0x36, 0xf5, 0x4a, 0x98, 0x85, 0x43, 0x34, 0x22, 0x5d, 0x2c, 0xeb, + 0x9f, 0xb7, 0xd5, 0x47, 0xe5, 0xcb, 0x0c, 0x4c, 0x27, 0x52, 0xe9, 0x5d, 0x8b, 0x60, 0xbc, 0x41, + 0x3c, 0xd5, 0xf9, 0xff, 0xd9, 0x72, 0x2d, 0x50, 0xb6, 0x88, 0x1f, 0xa3, 0x6c, 0x11, 0x5f, 0x58, + 0xc9, 0xed, 0xac, 0x1a, 0x2a, 0xd7, 0x22, 0x4b, 0x10, 0x7a, 0xf8, 0x13, 0xd9, 0xc6, 0xac, 0xad, + 0x3e, 0x84, 0xaf, 0x98, 0xfb, 0x13, 0x12, 0xba, 0x58, 0x0a, 0xbb, 0xae, 0xdb, 0xea, 0xe0, 0x62, + 0x4e, 0xca, 0xd4, 0x07, 0xba, 0x01, 0x05, 0x1a, 0x11, 0xd2, 0x74, 0x08, 0x65, 0xb2, 0xf6, 0x93, + 0xb5, 0xf9, 0x61, 0xad, 0xdc, 0x10, 0x0e, 0xef, 0x50, 0x66, 0xe7, 0xa9, 0x5e, 0x25, 0x4a, 0x50, + 0x48, 0x95, 0xe0, 0x04, 0x14, 0x04, 0x15, 0x46, 0xdd, 0x06, 0x2e, 0x82, 0xda, 0x48, 0x7d, 0xc1, + 0x5b, 0xe3, 0xf9, 0xcc, 0x54, 0xb6, 0x72, 0x1d, 0x72, 0x3a, 0xa2, 0xe0, 0x27, 0x06, 0x54, 0xdc, + 0x45, 0xb1, 0x8e, 0x99, 0x64, 0x06, 0x4c, 0xe2, 0xbe, 0x64, 0x07, 0x7d, 0xa9, 0x6c, 0x40, 0x3e, + 0x86, 0x85, 0x56, 0x21, 0x2b, 0xd8, 0x18, 0x72, 0x63, 0x9e, 0x19, 0x91, 0xcd, 0x4a, 0xe1, 0xc1, + 0x1f, 0xa7, 0xc6, 0xbe, 0xfd, 0xfb, 0xfb, 0x73, 0x86, 0x2d, 0xdc, 0x6b, 0xbf, 0x00, 0xe4, 0x36, + 0x71, 0xd4, 0x0d, 0x1a, 0x18, 0x7d, 0x67, 0xc0, 0x64, 0x62, 0xd6, 0xa0, 0xda, 0xb0, 0xa0, 0xbb, + 0xe7, 0x55, 0x69, 0xf1, 0x40, 0x3e, 0x6a, 0x5b, 0x54, 0xaa, 0x5f, 0xfc, 0xf6, 0xd7, 0xd7, 0x99, + 0xf3, 0xe8, 0xac, 0x35, 0xe4, 0x95, 0xdc, 0x1f, 0x75, 0xe8, 0x1b, 0x03, 0x60, 0x30, 0x5e, 0x51, + 0x75, 0x84, 0xb4, 0xe9, 0xf9, 0x5c, 0xaa, 0x1d, 0xc4, 0x45, 0x03, 0xb5, 0x24, 0xd0, 0xb3, 0xe8, + 0xcc, 0x30, 0xa0, 0x7a, 0xa8, 0xa3, 0x1f, 0x0c, 0xf8, 0x7f, 0xfa, 0xd2, 0x43, 0x97, 0x46, 0xc8, + 0xbb, 0xfb, 0xfa, 0x2c, 0x2d, 0x1d, 0xd4, 0x4d, 0x43, 0xbe, 0x24, 0x21, 0x5b, 0x68, 0x61, 0x18, + 0x64, 0x79, 0x2d, 0x32, 0xab, 0x25, 0x63, 0xa0, 0xfb, 0x06, 0x4c, 0xed, 0x7c, 0xa3, 0xa0, 0xcb, + 0x23, 0x60, 0xd8, 0xeb, 0x25, 0x54, 0xba, 0x72, 0x70, 0x47, 0x0d, 0xff, 0xb2, 0x84, 0x5f, 0x45, + 0xd6, 0x88, 0xf0, 0x3f, 0x55, 0x47, 0xf2, 0x33, 0xf4, 0xc8, 0x48, 0x3c, 0x44, 0x92, 0x2f, 0x66, + 0x74, 0x75, 0xe4, 0x4a, 0xee, 0xf1, 0xa2, 0x2f, 0xbd, 0xfe, 0x82, 0xde, 0x9a, 0xcf, 0x55, 0xc9, + 0x67, 0x09, 0x5d, 0x1c, 0xc6, 0x67, 0xf0, 0xd8, 0xc6, 0xbc, 0xdf, 0x95, 0x27, 0x86, 0x7c, 0x6d, + 0xee, 0xf5, 0x4f, 0x0a, 0x5d, 0x1b, 0x01, 0xd8, 0x73, 0xfe, 0x05, 0x96, 0xde, 0x78, 0x61, 0x7f, + 0x4d, 0xed, 0x9a, 0xa4, 0x76, 0x05, 0x2d, 0x1d, 0x8c, 0x5a, 0xbf, 0x63, 0x3f, 0x1a, 0x50, 0xe8, + 0x5f, 0x19, 0xe8, 0xc2, 0x30, 0x38, 0x3b, 0x2f, 0xb2, 0x52, 0xf5, 0x00, 0x1e, 0x1a, 0xf2, 0x8d, + 0x5f, 0x77, 0x5d, 0xc0, 0x4b, 0x92, 0xc5, 0x6b, 0xe8, 0xdc, 0x30, 0x16, 0x6e, 0xbd, 0x11, 0x38, + 0xf2, 0x5f, 0xce, 0xca, 0xed, 0x07, 0x4f, 0xcb, 0xc6, 0xc3, 0xa7, 0x65, 0xe3, 0xcf, 0xa7, 0x65, + 0xe3, 0xab, 0x67, 0xe5, 0xb1, 0x87, 0xcf, 0xca, 0x63, 0x8f, 0x9f, 0x95, 0xc7, 0x3e, 0x5c, 0xf4, + 0x03, 0xbe, 0xd5, 0xa9, 0x8b, 0x17, 0x59, 0x1c, 0x6f, 0x90, 0xce, 0x6a, 0xb4, 0x02, 0x1c, 0x72, + 0xcb, 0x8f, 0x68, 0xc3, 0x6a, 0xb4, 0x39, 0x53, 0x73, 0xb8, 0x3e, 0x21, 0xff, 0xb8, 0x2c, 0xfe, + 0x13, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xad, 0x63, 0x50, 0x37, 0x11, 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 + +// ServiceClient is the client API for Service service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ServiceClient interface { + // GetNodeInfo queries the current node info. + GetNodeInfo(ctx context.Context, in *GetNodeInfoRequest, opts ...grpc.CallOption) (*GetNodeInfoResponse, error) + // GetSyncing queries node syncing. + GetSyncing(ctx context.Context, in *GetSyncingRequest, opts ...grpc.CallOption) (*GetSyncingResponse, error) + // GetLatestBlock returns the latest block. + GetLatestBlock(ctx context.Context, in *GetLatestBlockRequest, opts ...grpc.CallOption) (*GetLatestBlockResponse, error) + // GetBlockByHeight queries block for given height. + GetBlockByHeight(ctx context.Context, in *GetBlockByHeightRequest, opts ...grpc.CallOption) (*GetBlockByHeightResponse, error) + // GetLatestValidatorSet queries latest validator-set. + GetLatestValidatorSet(ctx context.Context, in *GetLatestValidatorSetRequest, opts ...grpc.CallOption) (*GetLatestValidatorSetResponse, error) + // GetValidatorSetByHeight queries validator-set at a given height. + GetValidatorSetByHeight(ctx context.Context, in *GetValidatorSetByHeightRequest, opts ...grpc.CallOption) (*GetValidatorSetByHeightResponse, error) + // ABCIQuery defines a query handler that supports ABCI queries directly to the + // application, bypassing Tendermint completely. The ABCI query must contain + // a valid and supported path, including app, custom, p2p, and store. + ABCIQuery(ctx context.Context, in *ABCIQueryRequest, opts ...grpc.CallOption) (*ABCIQueryResponse, error) +} + +type serviceClient struct { + cc grpc1.ClientConn +} + +func NewServiceClient(cc grpc1.ClientConn) ServiceClient { + return &serviceClient{cc} +} + +func (c *serviceClient) GetNodeInfo(ctx context.Context, in *GetNodeInfoRequest, opts ...grpc.CallOption) (*GetNodeInfoResponse, error) { + out := new(GetNodeInfoResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.tendermint.v1beta1.Service/GetNodeInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) GetSyncing(ctx context.Context, in *GetSyncingRequest, opts ...grpc.CallOption) (*GetSyncingResponse, error) { + out := new(GetSyncingResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.tendermint.v1beta1.Service/GetSyncing", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) GetLatestBlock(ctx context.Context, in *GetLatestBlockRequest, opts ...grpc.CallOption) (*GetLatestBlockResponse, error) { + out := new(GetLatestBlockResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.tendermint.v1beta1.Service/GetLatestBlock", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) GetBlockByHeight(ctx context.Context, in *GetBlockByHeightRequest, opts ...grpc.CallOption) (*GetBlockByHeightResponse, error) { + out := new(GetBlockByHeightResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.tendermint.v1beta1.Service/GetBlockByHeight", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) GetLatestValidatorSet(ctx context.Context, in *GetLatestValidatorSetRequest, opts ...grpc.CallOption) (*GetLatestValidatorSetResponse, error) { + out := new(GetLatestValidatorSetResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.tendermint.v1beta1.Service/GetLatestValidatorSet", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) GetValidatorSetByHeight(ctx context.Context, in *GetValidatorSetByHeightRequest, opts ...grpc.CallOption) (*GetValidatorSetByHeightResponse, error) { + out := new(GetValidatorSetByHeightResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.tendermint.v1beta1.Service/GetValidatorSetByHeight", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) ABCIQuery(ctx context.Context, in *ABCIQueryRequest, opts ...grpc.CallOption) (*ABCIQueryResponse, error) { + out := new(ABCIQueryResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.tendermint.v1beta1.Service/ABCIQuery", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ServiceServer is the server API for Service service. +type ServiceServer interface { + // GetNodeInfo queries the current node info. + GetNodeInfo(context.Context, *GetNodeInfoRequest) (*GetNodeInfoResponse, error) + // GetSyncing queries node syncing. + GetSyncing(context.Context, *GetSyncingRequest) (*GetSyncingResponse, error) + // GetLatestBlock returns the latest block. + GetLatestBlock(context.Context, *GetLatestBlockRequest) (*GetLatestBlockResponse, error) + // GetBlockByHeight queries block for given height. + GetBlockByHeight(context.Context, *GetBlockByHeightRequest) (*GetBlockByHeightResponse, error) + // GetLatestValidatorSet queries latest validator-set. + GetLatestValidatorSet(context.Context, *GetLatestValidatorSetRequest) (*GetLatestValidatorSetResponse, error) + // GetValidatorSetByHeight queries validator-set at a given height. + GetValidatorSetByHeight(context.Context, *GetValidatorSetByHeightRequest) (*GetValidatorSetByHeightResponse, error) + // ABCIQuery defines a query handler that supports ABCI queries directly to the + // application, bypassing Tendermint completely. The ABCI query must contain + // a valid and supported path, including app, custom, p2p, and store. + ABCIQuery(context.Context, *ABCIQueryRequest) (*ABCIQueryResponse, error) +} + +// UnimplementedServiceServer can be embedded to have forward compatible implementations. +type UnimplementedServiceServer struct { +} + +func (*UnimplementedServiceServer) GetNodeInfo(ctx context.Context, req *GetNodeInfoRequest) (*GetNodeInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNodeInfo not implemented") +} +func (*UnimplementedServiceServer) GetSyncing(ctx context.Context, req *GetSyncingRequest) (*GetSyncingResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSyncing not implemented") +} +func (*UnimplementedServiceServer) GetLatestBlock(ctx context.Context, req *GetLatestBlockRequest) (*GetLatestBlockResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLatestBlock not implemented") +} +func (*UnimplementedServiceServer) GetBlockByHeight(ctx context.Context, req *GetBlockByHeightRequest) (*GetBlockByHeightResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBlockByHeight not implemented") +} +func (*UnimplementedServiceServer) GetLatestValidatorSet(ctx context.Context, req *GetLatestValidatorSetRequest) (*GetLatestValidatorSetResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLatestValidatorSet not implemented") +} +func (*UnimplementedServiceServer) GetValidatorSetByHeight(ctx context.Context, req *GetValidatorSetByHeightRequest) (*GetValidatorSetByHeightResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetValidatorSetByHeight not implemented") +} +func (*UnimplementedServiceServer) ABCIQuery(ctx context.Context, req *ABCIQueryRequest) (*ABCIQueryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ABCIQuery not implemented") +} + +func RegisterServiceServer(s grpc1.Server, srv ServiceServer) { + s.RegisterService(&_Service_serviceDesc, srv) +} + +func _Service_GetNodeInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNodeInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).GetNodeInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.tendermint.v1beta1.Service/GetNodeInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).GetNodeInfo(ctx, req.(*GetNodeInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Service_GetSyncing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSyncingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).GetSyncing(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.tendermint.v1beta1.Service/GetSyncing", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).GetSyncing(ctx, req.(*GetSyncingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Service_GetLatestBlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetLatestBlockRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).GetLatestBlock(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.tendermint.v1beta1.Service/GetLatestBlock", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).GetLatestBlock(ctx, req.(*GetLatestBlockRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Service_GetBlockByHeight_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetBlockByHeightRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).GetBlockByHeight(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.tendermint.v1beta1.Service/GetBlockByHeight", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).GetBlockByHeight(ctx, req.(*GetBlockByHeightRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Service_GetLatestValidatorSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetLatestValidatorSetRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).GetLatestValidatorSet(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.tendermint.v1beta1.Service/GetLatestValidatorSet", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).GetLatestValidatorSet(ctx, req.(*GetLatestValidatorSetRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Service_GetValidatorSetByHeight_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetValidatorSetByHeightRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).GetValidatorSetByHeight(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.tendermint.v1beta1.Service/GetValidatorSetByHeight", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).GetValidatorSetByHeight(ctx, req.(*GetValidatorSetByHeightRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Service_ABCIQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ABCIQueryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).ABCIQuery(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.tendermint.v1beta1.Service/ABCIQuery", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).ABCIQuery(ctx, req.(*ABCIQueryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Service_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.base.tendermint.v1beta1.Service", + HandlerType: (*ServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetNodeInfo", + Handler: _Service_GetNodeInfo_Handler, + }, + { + MethodName: "GetSyncing", + Handler: _Service_GetSyncing_Handler, + }, + { + MethodName: "GetLatestBlock", + Handler: _Service_GetLatestBlock_Handler, + }, + { + MethodName: "GetBlockByHeight", + Handler: _Service_GetBlockByHeight_Handler, + }, + { + MethodName: "GetLatestValidatorSet", + Handler: _Service_GetLatestValidatorSet_Handler, + }, + { + MethodName: "GetValidatorSetByHeight", + Handler: _Service_GetValidatorSetByHeight_Handler, + }, + { + MethodName: "ABCIQuery", + Handler: _Service_ABCIQuery_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/base/tendermint/v1beta1/query.proto", +} + +func (m *GetValidatorSetByHeightRequest) 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 *GetValidatorSetByHeightRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetValidatorSetByHeightRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Height != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *GetValidatorSetByHeightResponse) 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 *GetValidatorSetByHeightResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetValidatorSetByHeightResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.Validators) > 0 { + for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.BlockHeight != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BlockHeight)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *GetLatestValidatorSetRequest) 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 *GetLatestValidatorSetRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetLatestValidatorSetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetLatestValidatorSetResponse) 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 *GetLatestValidatorSetResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetLatestValidatorSetResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.Validators) > 0 { + for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.BlockHeight != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BlockHeight)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *Validator) 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 *Validator) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ProposerPriority != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.ProposerPriority)) + i-- + dAtA[i] = 0x20 + } + if m.VotingPower != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.VotingPower)) + i-- + dAtA[i] = 0x18 + } + if m.PubKey != nil { + { + size, err := m.PubKey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetBlockByHeightRequest) 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 *GetBlockByHeightRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetBlockByHeightRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Height != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *GetBlockByHeightResponse) 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 *GetBlockByHeightResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetBlockByHeightResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.SdkBlock != nil { + { + size, err := m.SdkBlock.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.Block != nil { + { + size, err := m.Block.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.BlockId != nil { + { + size, err := m.BlockId.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetLatestBlockRequest) 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 *GetLatestBlockRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetLatestBlockRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *GetLatestBlockResponse) 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 *GetLatestBlockResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetLatestBlockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.SdkBlock != nil { + { + size, err := m.SdkBlock.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.Block != nil { + { + size, err := m.Block.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.BlockId != nil { + { + size, err := m.BlockId.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetSyncingRequest) 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 *GetSyncingRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetSyncingRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *GetSyncingResponse) 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 *GetSyncingResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetSyncingResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Syncing { + i-- + if m.Syncing { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *GetNodeInfoRequest) 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 *GetNodeInfoRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetNodeInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *GetNodeInfoResponse) 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 *GetNodeInfoResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetNodeInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ApplicationVersion != nil { + { + size, err := m.ApplicationVersion.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.DefaultNodeInfo != nil { + { + size, err := m.DefaultNodeInfo.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *VersionInfo) 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 *VersionInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *VersionInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CosmosSdkVersion) > 0 { + i -= len(m.CosmosSdkVersion) + copy(dAtA[i:], m.CosmosSdkVersion) + i = encodeVarintQuery(dAtA, i, uint64(len(m.CosmosSdkVersion))) + i-- + dAtA[i] = 0x42 + } + if len(m.BuildDeps) > 0 { + for iNdEx := len(m.BuildDeps) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.BuildDeps[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.GoVersion) > 0 { + i -= len(m.GoVersion) + copy(dAtA[i:], m.GoVersion) + i = encodeVarintQuery(dAtA, i, uint64(len(m.GoVersion))) + i-- + dAtA[i] = 0x32 + } + if len(m.BuildTags) > 0 { + i -= len(m.BuildTags) + copy(dAtA[i:], m.BuildTags) + i = encodeVarintQuery(dAtA, i, uint64(len(m.BuildTags))) + i-- + dAtA[i] = 0x2a + } + if len(m.GitCommit) > 0 { + i -= len(m.GitCommit) + copy(dAtA[i:], m.GitCommit) + i = encodeVarintQuery(dAtA, i, uint64(len(m.GitCommit))) + i-- + dAtA[i] = 0x22 + } + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x1a + } + if len(m.AppName) > 0 { + i -= len(m.AppName) + copy(dAtA[i:], m.AppName) + i = encodeVarintQuery(dAtA, i, uint64(len(m.AppName))) + i-- + dAtA[i] = 0x12 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *Module) 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 *Module) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Module) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Sum) > 0 { + i -= len(m.Sum) + copy(dAtA[i:], m.Sum) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Sum))) + i-- + dAtA[i] = 0x1a + } + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x12 + } + if len(m.Path) > 0 { + i -= len(m.Path) + copy(dAtA[i:], m.Path) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Path))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ABCIQueryRequest) 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 *ABCIQueryRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ABCIQueryRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Prove { + i-- + if m.Prove { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.Height != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x18 + } + if len(m.Path) > 0 { + i -= len(m.Path) + copy(dAtA[i:], m.Path) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Path))) + i-- + dAtA[i] = 0x12 + } + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ABCIQueryResponse) 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 *ABCIQueryResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ABCIQueryResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Codespace) > 0 { + i -= len(m.Codespace) + copy(dAtA[i:], m.Codespace) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Codespace))) + i-- + dAtA[i] = 0x52 + } + if m.Height != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x48 + } + if m.ProofOps != nil { + { + size, err := m.ProofOps.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0x3a + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0x32 + } + if m.Index != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Index)) + i-- + dAtA[i] = 0x28 + } + if len(m.Info) > 0 { + i -= len(m.Info) + copy(dAtA[i:], m.Info) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Info))) + i-- + dAtA[i] = 0x22 + } + if len(m.Log) > 0 { + i -= len(m.Log) + copy(dAtA[i:], m.Log) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Log))) + i-- + dAtA[i] = 0x1a + } + if m.Code != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *ProofOp) 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 *ProofOp) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ProofOp) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0x1a + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0x12 + } + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ProofOps) 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 *ProofOps) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ProofOps) 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 = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *GetValidatorSetByHeightRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Height != 0 { + n += 1 + sovQuery(uint64(m.Height)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *GetValidatorSetByHeightResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BlockHeight != 0 { + n += 1 + sovQuery(uint64(m.BlockHeight)) + } + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *GetLatestValidatorSetRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *GetLatestValidatorSetResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BlockHeight != 0 { + n += 1 + sovQuery(uint64(m.BlockHeight)) + } + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *Validator) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.PubKey != nil { + l = m.PubKey.Size() + n += 1 + l + sovQuery(uint64(l)) + } + if m.VotingPower != 0 { + n += 1 + sovQuery(uint64(m.VotingPower)) + } + if m.ProposerPriority != 0 { + n += 1 + sovQuery(uint64(m.ProposerPriority)) + } + return n +} + +func (m *GetBlockByHeightRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Height != 0 { + n += 1 + sovQuery(uint64(m.Height)) + } + return n +} + +func (m *GetBlockByHeightResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BlockId != nil { + l = m.BlockId.Size() + n += 1 + l + sovQuery(uint64(l)) + } + if m.Block != nil { + l = m.Block.Size() + n += 1 + l + sovQuery(uint64(l)) + } + if m.SdkBlock != nil { + l = m.SdkBlock.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *GetLatestBlockRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetLatestBlockResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BlockId != nil { + l = m.BlockId.Size() + n += 1 + l + sovQuery(uint64(l)) + } + if m.Block != nil { + l = m.Block.Size() + n += 1 + l + sovQuery(uint64(l)) + } + if m.SdkBlock != nil { + l = m.SdkBlock.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *GetSyncingRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetSyncingResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Syncing { + n += 2 + } + return n +} + +func (m *GetNodeInfoRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetNodeInfoResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.DefaultNodeInfo != nil { + l = m.DefaultNodeInfo.Size() + n += 1 + l + sovQuery(uint64(l)) + } + if m.ApplicationVersion != nil { + l = m.ApplicationVersion.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *VersionInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.AppName) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.GitCommit) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.BuildTags) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.GoVersion) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if len(m.BuildDeps) > 0 { + for _, e := range m.BuildDeps { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + l = len(m.CosmosSdkVersion) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *Module) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Path) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Sum) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *ABCIQueryRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Data) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Path) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Height != 0 { + n += 1 + sovQuery(uint64(m.Height)) + } + if m.Prove { + n += 2 + } + return n +} + +func (m *ABCIQueryResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovQuery(uint64(m.Code)) + } + l = len(m.Log) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Info) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Index != 0 { + n += 1 + sovQuery(uint64(m.Index)) + } + l = len(m.Key) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Value) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.ProofOps != nil { + l = m.ProofOps.Size() + n += 1 + l + sovQuery(uint64(l)) + } + if m.Height != 0 { + n += 1 + sovQuery(uint64(m.Height)) + } + l = len(m.Codespace) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *ProofOp) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Type) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Key) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *ProofOps) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Ops) > 0 { + for _, e := range m.Ops { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *GetValidatorSetByHeightRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetValidatorSetByHeightRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetValidatorSetByHeightRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetValidatorSetByHeightResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetValidatorSetByHeightResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetValidatorSetByHeightResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockHeight", wireType) + } + m.BlockHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BlockHeight |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, &Validator{}) + if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetLatestValidatorSetRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetLatestValidatorSetRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetLatestValidatorSetRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetLatestValidatorSetResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetLatestValidatorSetResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetLatestValidatorSetResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockHeight", wireType) + } + m.BlockHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BlockHeight |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, &Validator{}) + if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Validator) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Validator: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Validator: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", 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.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PubKey", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PubKey == nil { + m.PubKey = &any.Any{} + } + if err := m.PubKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field VotingPower", wireType) + } + m.VotingPower = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.VotingPower |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProposerPriority", wireType) + } + m.ProposerPriority = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ProposerPriority |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetBlockByHeightRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetBlockByHeightRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetBlockByHeightRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetBlockByHeightResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetBlockByHeightResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetBlockByHeightResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockId", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.BlockId == nil { + m.BlockId = &v1.BlockID{} + } + if err := m.BlockId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Block", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Block == nil { + m.Block = &v1.Block{} + } + if err := m.Block.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SdkBlock", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SdkBlock == nil { + m.SdkBlock = &Block{} + } + if err := m.SdkBlock.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetLatestBlockRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetLatestBlockRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetLatestBlockRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetLatestBlockResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetLatestBlockResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetLatestBlockResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockId", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.BlockId == nil { + m.BlockId = &v1.BlockID{} + } + if err := m.BlockId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Block", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Block == nil { + m.Block = &v1.Block{} + } + if err := m.Block.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SdkBlock", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SdkBlock == nil { + m.SdkBlock = &Block{} + } + if err := m.SdkBlock.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetSyncingRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetSyncingRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetSyncingRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetSyncingResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetSyncingResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetSyncingResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Syncing", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Syncing = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetNodeInfoRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetNodeInfoRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetNodeInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetNodeInfoResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetNodeInfoResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetNodeInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultNodeInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DefaultNodeInfo == nil { + m.DefaultNodeInfo = &v11.DefaultNodeInfo{} + } + if err := m.DefaultNodeInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApplicationVersion", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ApplicationVersion == nil { + m.ApplicationVersion = &VersionInfo{} + } + if err := m.ApplicationVersion.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VersionInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VersionInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VersionInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", 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.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppName", 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.AppName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", 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.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GitCommit", 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.GitCommit = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BuildTags", 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.BuildTags = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GoVersion", 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.GoVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BuildDeps", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BuildDeps = append(m.BuildDeps, &Module{}) + if err := m.BuildDeps[len(m.BuildDeps)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CosmosSdkVersion", 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.CosmosSdkVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Module) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Module: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Module: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", 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.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", 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.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sum", 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.Sum = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ABCIQueryRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ABCIQueryRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ABCIQueryRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", 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.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Prove", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Prove = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ABCIQueryResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ABCIQueryResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ABCIQueryResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Log", 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.Log = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Info", 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.Info = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) + } + m.Index = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Index |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) + if m.Key == nil { + m.Key = []byte{} + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) + if m.Value == nil { + m.Value = []byte{} + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProofOps", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ProofOps == nil { + m.ProofOps = &ProofOps{} + } + if err := m.ProofOps.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Codespace", 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.Codespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ProofOp) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ProofOp: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ProofOp: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", 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.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) + if m.Key == nil { + m.Key = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ProofOps) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ProofOps: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ProofOps: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ops = append(m.Ops, ProofOp{}) + if err := m.Ops[len(m.Ops)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/server/v2/cometbft/client/grpc/cmtservice/query.pb.gw.go b/server/v2/cometbft/client/grpc/cmtservice/query.pb.gw.go new file mode 100644 index 000000000000..e169618c93c8 --- /dev/null +++ b/server/v2/cometbft/client/grpc/cmtservice/query.pb.gw.go @@ -0,0 +1,669 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: cosmos/base/tendermint/v1beta1/query.proto + +/* +Package cmtservice is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package cmtservice + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Service_GetNodeInfo_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetNodeInfoRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetNodeInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Service_GetNodeInfo_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetNodeInfoRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetNodeInfo(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Service_GetSyncing_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetSyncingRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetSyncing(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Service_GetSyncing_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetSyncingRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetSyncing(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Service_GetLatestBlock_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetLatestBlockRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetLatestBlock(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Service_GetLatestBlock_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetLatestBlockRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetLatestBlock(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Service_GetBlockByHeight_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetBlockByHeightRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["height"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "height") + } + + protoReq.Height, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "height", err) + } + + msg, err := client.GetBlockByHeight(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Service_GetBlockByHeight_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetBlockByHeightRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["height"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "height") + } + + protoReq.Height, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "height", err) + } + + msg, err := server.GetBlockByHeight(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Service_GetLatestValidatorSet_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Service_GetLatestValidatorSet_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetLatestValidatorSetRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Service_GetLatestValidatorSet_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetLatestValidatorSet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Service_GetLatestValidatorSet_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetLatestValidatorSetRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Service_GetLatestValidatorSet_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetLatestValidatorSet(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Service_GetValidatorSetByHeight_0 = &utilities.DoubleArray{Encoding: map[string]int{"height": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Service_GetValidatorSetByHeight_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetValidatorSetByHeightRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["height"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "height") + } + + protoReq.Height, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "height", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Service_GetValidatorSetByHeight_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetValidatorSetByHeight(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Service_GetValidatorSetByHeight_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetValidatorSetByHeightRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["height"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "height") + } + + protoReq.Height, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "height", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Service_GetValidatorSetByHeight_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetValidatorSetByHeight(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Service_ABCIQuery_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Service_ABCIQuery_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ABCIQueryRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Service_ABCIQuery_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ABCIQuery(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Service_ABCIQuery_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ABCIQueryRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Service_ABCIQuery_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ABCIQuery(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterServiceHandlerServer registers the http handlers for service Service to "mux". +// UnaryRPC :call ServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterServiceHandlerFromEndpoint instead. +func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ServiceServer) error { + + mux.Handle("GET", pattern_Service_GetNodeInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Service_GetNodeInfo_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetNodeInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetSyncing_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Service_GetSyncing_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetSyncing_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetLatestBlock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Service_GetLatestBlock_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetLatestBlock_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetBlockByHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Service_GetBlockByHeight_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetBlockByHeight_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetLatestValidatorSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Service_GetLatestValidatorSet_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetLatestValidatorSet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetValidatorSetByHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Service_GetValidatorSetByHeight_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetValidatorSetByHeight_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_ABCIQuery_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Service_ABCIQuery_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_ABCIQuery_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterServiceHandlerFromEndpoint is same as RegisterServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterServiceHandler(ctx, mux, conn) +} + +// RegisterServiceHandler registers the http handlers for service Service to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterServiceHandlerClient(ctx, mux, NewServiceClient(conn)) +} + +// RegisterServiceHandlerClient registers the http handlers for service Service +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "ServiceClient" to call the correct interceptors. +func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ServiceClient) error { + + mux.Handle("GET", pattern_Service_GetNodeInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Service_GetNodeInfo_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetNodeInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetSyncing_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Service_GetSyncing_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetSyncing_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetLatestBlock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Service_GetLatestBlock_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetLatestBlock_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetBlockByHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Service_GetBlockByHeight_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetBlockByHeight_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetLatestValidatorSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Service_GetLatestValidatorSet_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetLatestValidatorSet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_GetValidatorSetByHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Service_GetValidatorSetByHeight_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_GetValidatorSetByHeight_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Service_ABCIQuery_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Service_ABCIQuery_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Service_ABCIQuery_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Service_GetNodeInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "tendermint", "v1beta1", "node_info"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Service_GetSyncing_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "tendermint", "v1beta1", "syncing"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Service_GetLatestBlock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "blocks", "latest"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Service_GetBlockByHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "blocks", "height"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Service_GetLatestValidatorSet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "validatorsets", "latest"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Service_GetValidatorSetByHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmos", "base", "tendermint", "v1beta1", "validatorsets", "height"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Service_ABCIQuery_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "tendermint", "v1beta1", "abci_query"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Service_GetNodeInfo_0 = runtime.ForwardResponseMessage + + forward_Service_GetSyncing_0 = runtime.ForwardResponseMessage + + forward_Service_GetLatestBlock_0 = runtime.ForwardResponseMessage + + forward_Service_GetBlockByHeight_0 = runtime.ForwardResponseMessage + + forward_Service_GetLatestValidatorSet_0 = runtime.ForwardResponseMessage + + forward_Service_GetValidatorSetByHeight_0 = runtime.ForwardResponseMessage + + forward_Service_ABCIQuery_0 = runtime.ForwardResponseMessage +) diff --git a/server/v2/cometbft/client/grpc/cmtservice/service.go b/server/v2/cometbft/client/grpc/cmtservice/service.go new file mode 100644 index 000000000000..02555d719574 --- /dev/null +++ b/server/v2/cometbft/client/grpc/cmtservice/service.go @@ -0,0 +1,312 @@ +package cmtservice + +import ( + "context" + "fmt" + "strings" + + abci "github.com/cometbft/cometbft/abci/types" + coretypes "github.com/cometbft/cometbft/rpc/core/types" + gogogrpc "github.com/cosmos/gogoproto/grpc" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "cosmossdk.io/server/v2/cometbft/client/rpc" + + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + sdk "github.com/cosmos/cosmos-sdk/types" + qtypes "github.com/cosmos/cosmos-sdk/types/query" + "github.com/cosmos/cosmos-sdk/version" +) + +var ( + _ ServiceServer = queryServer{} + _ codectypes.UnpackInterfacesMessage = &GetLatestValidatorSetResponse{} +) + +type ( + abciQueryFn = func(context.Context, *abci.QueryRequest) (*abci.QueryResponse, error) + + queryServer struct { + client rpc.CometRPC + queryFn abciQueryFn + } +) + +// NewQueryServer creates a new CometBFT query server. +func NewQueryServer( + client rpc.CometRPC, + queryFn abciQueryFn, +) ServiceServer { + return queryServer{ + queryFn: queryFn, + client: client, + } +} + +// GetNodeStatus returns the status of the node. +func (s queryServer) GetNodeStatus(ctx context.Context) (*coretypes.ResultStatus, error) { + return s.client.Status(ctx) +} + +// GetSyncing implements ServiceServer.GetSyncing +func (s queryServer) GetSyncing(ctx context.Context, _ *GetSyncingRequest) (*GetSyncingResponse, error) { + status, err := s.client.Status(ctx) + if err != nil { + return nil, err + } + + return &GetSyncingResponse{ + Syncing: status.SyncInfo.CatchingUp, + }, nil +} + +// GetLatestBlock implements ServiceServer.GetLatestBlock +func (s queryServer) GetLatestBlock(ctx context.Context, _ *GetLatestBlockRequest) (*GetLatestBlockResponse, error) { + block, err := s.client.Block(ctx, nil) + if err != nil { + return nil, err + } + + protoBlockID := block.BlockID.ToProto() + protoBlock, err := block.Block.ToProto() + if err != nil { + return nil, err + } + + return &GetLatestBlockResponse{ + BlockId: &protoBlockID, + Block: protoBlock, + SdkBlock: convertBlock(protoBlock), + }, nil +} + +// GetBlockByHeight implements ServiceServer.GetBlockByHeight +func (s queryServer) GetBlockByHeight( + ctx context.Context, + req *GetBlockByHeightRequest, +) (*GetBlockByHeightResponse, error) { + nodeStatus, err := s.client.Status(ctx) + if err != nil { + return nil, err + } + + blockHeight := nodeStatus.SyncInfo.LatestBlockHeight + + if req.Height > blockHeight { + return nil, status.Error(codes.InvalidArgument, "requested block height is bigger then the chain length") + } + + b, err := s.client.Block(ctx, &req.Height) + if err != nil { + return nil, err + } + + protoBlockID := b.BlockID.ToProto() + protoBlock, err := b.Block.ToProto() + if err != nil { + return nil, err + } + + return &GetBlockByHeightResponse{ + BlockId: &protoBlockID, + Block: protoBlock, + SdkBlock: convertBlock(protoBlock), + }, nil +} + +// GetLatestValidatorSet implements ServiceServer.GetLatestValidatorSet +func (s queryServer) GetLatestValidatorSet( + ctx context.Context, + req *GetLatestValidatorSetRequest, +) (*GetLatestValidatorSetResponse, error) { + page, limit, err := qtypes.ParsePagination(req.Pagination) + if err != nil { + return nil, err + } + + return ValidatorsOutput(ctx, s.client, nil, page, limit) +} + +func (m *GetLatestValidatorSetResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { + var pubKey cryptotypes.PubKey + for _, val := range m.Validators { + err := unpacker.UnpackAny(val.PubKey, &pubKey) + if err != nil { + return err + } + } + + return nil +} + +// GetValidatorSetByHeight implements ServiceServer.GetValidatorSetByHeight +func (s queryServer) GetValidatorSetByHeight( + ctx context.Context, + req *GetValidatorSetByHeightRequest, +) (*GetValidatorSetByHeightResponse, error) { + page, limit, err := qtypes.ParsePagination(req.Pagination) + if err != nil { + return nil, err + } + + nodeStatus, err := s.client.Status(ctx) + if err != nil { + return nil, err + } + + blockHeight := nodeStatus.SyncInfo.LatestBlockHeight + + if req.Height > blockHeight { + return nil, status.Error(codes.InvalidArgument, "requested block height is bigger then the chain length") + } + + r, err := ValidatorsOutput(ctx, s.client, &req.Height, page, limit) + if err != nil { + return nil, err + } + + return &GetValidatorSetByHeightResponse{ + BlockHeight: r.BlockHeight, + Validators: r.Validators, + Pagination: r.Pagination, + }, nil +} + +func ValidatorsOutput( + ctx context.Context, + client rpc.CometRPC, + height *int64, + page, limit int, +) (*GetLatestValidatorSetResponse, error) { + vs, err := client.Validators(ctx, height, &page, &limit) + if err != nil { + return nil, err + } + + resp := GetLatestValidatorSetResponse{ + BlockHeight: vs.BlockHeight, + Validators: make([]*Validator, len(vs.Validators)), + Pagination: &qtypes.PageResponse{ + Total: uint64(vs.Total), + }, + } + + for i, v := range vs.Validators { + pk, err := cryptocodec.FromCmtPubKeyInterface(v.PubKey) + if err != nil { + return nil, err + } + anyPub, err := codectypes.NewAnyWithValue(pk) + if err != nil { + return nil, err + } + + resp.Validators[i] = &Validator{ + Address: sdk.ConsAddress(v.Address).String(), + ProposerPriority: v.ProposerPriority, + PubKey: anyPub, + VotingPower: v.VotingPower, + } + } + + return &resp, nil +} + +// GetNodeInfo implements ServiceServer.GetNodeInfo +func (s queryServer) GetNodeInfo(ctx context.Context, _ *GetNodeInfoRequest) (*GetNodeInfoResponse, error) { + nodeStatus, err := s.client.Status(ctx) + if err != nil { + return nil, err + } + + protoNodeInfo := nodeStatus.NodeInfo.ToProto() + nodeInfo := version.NewInfo() + + deps := make([]*Module, len(nodeInfo.BuildDeps)) + + for i, dep := range nodeInfo.BuildDeps { + deps[i] = &Module{ + Path: dep.Path, + Sum: dep.Sum, + Version: dep.Version, + } + } + + 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, + }, + } + return &resp, nil +} + +func (s queryServer) ABCIQuery(ctx context.Context, req *ABCIQueryRequest) (*ABCIQueryResponse, error) { + if s.queryFn == nil { + return nil, status.Error(codes.Internal, "ABCI Query handler undefined") + } + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + if len(req.Path) == 0 { + return nil, status.Error(codes.InvalidArgument, "empty query path") + } + + if path := SplitABCIQueryPath(req.Path); len(path) > 0 { + switch path[0] { + case "app", "store", "p2p", "custom": // TODO: check if we can use the ones from abci.go without having circular deps. + return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("ABCI query path not yet implemented: %s", req.Path)) + + default: + // Otherwise, error as to prevent either valid gRPC service requests or + // bogus ABCI queries. + return nil, status.Errorf(codes.InvalidArgument, "unsupported ABCI query path: %s", req.Path) + } + } + + res, err := s.queryFn(ctx, req.ToABCIRequestQuery()) + if err != nil { + return nil, err + } + return FromABCIResponseQuery(res), nil +} + +// RegisterTendermintService registers the CometBFT queries on the gRPC router. +func RegisterTendermintService( + client rpc.CometRPC, + server gogogrpc.Server, + queryFn abciQueryFn, +) { + RegisterServiceServer(server, NewQueryServer(client, queryFn)) +} + +// RegisterGRPCGatewayRoutes mounts the CometBFT service's GRPC-gateway routes on the +// given Mux. +func RegisterGRPCGatewayRoutes(clientConn gogogrpc.ClientConn, mux *runtime.ServeMux) { + _ = RegisterServiceHandlerClient(context.Background(), mux, NewServiceClient(clientConn)) +} + +// SplitABCIQueryPath splits a string path using the delimiter '/'. +// +// e.g. "this/is/funny" becomes []string{"this", "is", "funny"} +func SplitABCIQueryPath(requestPath string) (path []string) { + path = strings.Split(requestPath, "/") + + // first element is empty string + if len(path) > 0 && path[0] == "" { + path = path[1:] + } + + return path +} diff --git a/server/v2/cometbft/client/grpc/cmtservice/types.go b/server/v2/cometbft/client/grpc/cmtservice/types.go new file mode 100644 index 000000000000..a94c0fd8ba8d --- /dev/null +++ b/server/v2/cometbft/client/grpc/cmtservice/types.go @@ -0,0 +1,47 @@ +package cmtservice + +import ( + abci "github.com/cometbft/cometbft/abci/types" +) + +// ToABCIRequestQuery converts a gRPC ABCIQueryRequest type to an ABCI +// RequestQuery type. +func (req *ABCIQueryRequest) ToABCIRequestQuery() *abci.QueryRequest { + return &abci.QueryRequest{ + Data: req.Data, + Path: req.Path, + Height: req.Height, + Prove: req.Prove, + } +} + +// FromABCIResponseQuery converts an ABCI ResponseQuery type to a gRPC +// ABCIQueryResponse type. +func FromABCIResponseQuery(res *abci.QueryResponse) *ABCIQueryResponse { + var proofOps *ProofOps + + if res.ProofOps != nil { + proofOps = &ProofOps{ + Ops: make([]ProofOp, len(res.ProofOps.Ops)), + } + for i, proofOp := range res.ProofOps.Ops { + proofOps.Ops[i] = ProofOp{ + Type: proofOp.Type, + Key: proofOp.Key, + Data: proofOp.Data, + } + } + } + + return &ABCIQueryResponse{ + Code: res.Code, + Log: res.Log, + Info: res.Info, + Index: res.Index, + Key: res.Key, + Value: res.Value, + ProofOps: proofOps, + Height: res.Height, + Codespace: res.Codespace, + } +} diff --git a/server/v2/cometbft/client/grpc/cmtservice/types.pb.go b/server/v2/cometbft/client/grpc/cmtservice/types.pb.go new file mode 100644 index 000000000000..6d1a3cbb607c --- /dev/null +++ b/server/v2/cometbft/client/grpc/cmtservice/types.pb.go @@ -0,0 +1,1371 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/base/tendermint/v1beta1/types.proto + +package cmtservice + +import ( + fmt "fmt" + v1 "github.com/cometbft/cometbft/api/cometbft/types/v1" + v11 "github.com/cometbft/cometbft/api/cometbft/version/v1" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" + _ "google.golang.org/protobuf/types/known/timestamppb" + io "io" + math "math" + math_bits "math/bits" + time "time" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf +var _ = time.Kitchen + +// 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 + +// Block is tendermint type Block, with the Header proposer address +// field converted to bech32 string. +type Block struct { + Header Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header"` + Data v1.Data `protobuf:"bytes,2,opt,name=data,proto3" json:"data"` + Evidence v1.EvidenceList `protobuf:"bytes,3,opt,name=evidence,proto3" json:"evidence"` + LastCommit *v1.Commit `protobuf:"bytes,4,opt,name=last_commit,json=lastCommit,proto3" json:"last_commit,omitempty"` +} + +func (m *Block) Reset() { *m = Block{} } +func (m *Block) String() string { return proto.CompactTextString(m) } +func (*Block) ProtoMessage() {} +func (*Block) Descriptor() ([]byte, []int) { + return fileDescriptor_bb9931519c08e0d6, []int{0} +} +func (m *Block) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Block) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Block.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 *Block) XXX_Merge(src proto.Message) { + xxx_messageInfo_Block.Merge(m, src) +} +func (m *Block) XXX_Size() int { + return m.Size() +} +func (m *Block) XXX_DiscardUnknown() { + xxx_messageInfo_Block.DiscardUnknown(m) +} + +var xxx_messageInfo_Block proto.InternalMessageInfo + +func (m *Block) GetHeader() Header { + if m != nil { + return m.Header + } + return Header{} +} + +func (m *Block) GetData() v1.Data { + if m != nil { + return m.Data + } + return v1.Data{} +} + +func (m *Block) GetEvidence() v1.EvidenceList { + if m != nil { + return m.Evidence + } + return v1.EvidenceList{} +} + +func (m *Block) GetLastCommit() *v1.Commit { + if m != nil { + return m.LastCommit + } + return nil +} + +// Header defines the structure of a Tendermint block header. +type Header struct { + // basic block info + Version v11.Consensus `protobuf:"bytes,1,opt,name=version,proto3" json:"version"` + ChainID string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` + Time time.Time `protobuf:"bytes,4,opt,name=time,proto3,stdtime" json:"time"` + // prev block info + LastBlockId v1.BlockID `protobuf:"bytes,5,opt,name=last_block_id,json=lastBlockId,proto3" json:"last_block_id"` + // hashes of block data + LastCommitHash []byte `protobuf:"bytes,6,opt,name=last_commit_hash,json=lastCommitHash,proto3" json:"last_commit_hash,omitempty"` + DataHash []byte `protobuf:"bytes,7,opt,name=data_hash,json=dataHash,proto3" json:"data_hash,omitempty"` + // hashes from the app output from the prev block + ValidatorsHash []byte `protobuf:"bytes,8,opt,name=validators_hash,json=validatorsHash,proto3" json:"validators_hash,omitempty"` + NextValidatorsHash []byte `protobuf:"bytes,9,opt,name=next_validators_hash,json=nextValidatorsHash,proto3" json:"next_validators_hash,omitempty"` + ConsensusHash []byte `protobuf:"bytes,10,opt,name=consensus_hash,json=consensusHash,proto3" json:"consensus_hash,omitempty"` + AppHash []byte `protobuf:"bytes,11,opt,name=app_hash,json=appHash,proto3" json:"app_hash,omitempty"` + LastResultsHash []byte `protobuf:"bytes,12,opt,name=last_results_hash,json=lastResultsHash,proto3" json:"last_results_hash,omitempty"` + // consensus info + EvidenceHash []byte `protobuf:"bytes,13,opt,name=evidence_hash,json=evidenceHash,proto3" json:"evidence_hash,omitempty"` + // proposer_address is the original block proposer address, formatted as a Bech32 string. + // In Tendermint, this type is `bytes`, but in the SDK, we convert it to a Bech32 string + // for better UX. + ProposerAddress string `protobuf:"bytes,14,opt,name=proposer_address,json=proposerAddress,proto3" json:"proposer_address,omitempty"` +} + +func (m *Header) Reset() { *m = Header{} } +func (m *Header) String() string { return proto.CompactTextString(m) } +func (*Header) ProtoMessage() {} +func (*Header) Descriptor() ([]byte, []int) { + return fileDescriptor_bb9931519c08e0d6, []int{1} +} +func (m *Header) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Header.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 *Header) XXX_Merge(src proto.Message) { + xxx_messageInfo_Header.Merge(m, src) +} +func (m *Header) XXX_Size() int { + return m.Size() +} +func (m *Header) XXX_DiscardUnknown() { + xxx_messageInfo_Header.DiscardUnknown(m) +} + +var xxx_messageInfo_Header proto.InternalMessageInfo + +func (m *Header) GetVersion() v11.Consensus { + if m != nil { + return m.Version + } + return v11.Consensus{} +} + +func (m *Header) GetChainID() string { + if m != nil { + return m.ChainID + } + return "" +} + +func (m *Header) GetHeight() int64 { + if m != nil { + return m.Height + } + return 0 +} + +func (m *Header) GetTime() time.Time { + if m != nil { + return m.Time + } + return time.Time{} +} + +func (m *Header) GetLastBlockId() v1.BlockID { + if m != nil { + return m.LastBlockId + } + return v1.BlockID{} +} + +func (m *Header) GetLastCommitHash() []byte { + if m != nil { + return m.LastCommitHash + } + return nil +} + +func (m *Header) GetDataHash() []byte { + if m != nil { + return m.DataHash + } + return nil +} + +func (m *Header) GetValidatorsHash() []byte { + if m != nil { + return m.ValidatorsHash + } + return nil +} + +func (m *Header) GetNextValidatorsHash() []byte { + if m != nil { + return m.NextValidatorsHash + } + return nil +} + +func (m *Header) GetConsensusHash() []byte { + if m != nil { + return m.ConsensusHash + } + return nil +} + +func (m *Header) GetAppHash() []byte { + if m != nil { + return m.AppHash + } + return nil +} + +func (m *Header) GetLastResultsHash() []byte { + if m != nil { + return m.LastResultsHash + } + return nil +} + +func (m *Header) GetEvidenceHash() []byte { + if m != nil { + return m.EvidenceHash + } + return nil +} + +func (m *Header) GetProposerAddress() string { + if m != nil { + return m.ProposerAddress + } + return "" +} + +func init() { + proto.RegisterType((*Block)(nil), "cosmos.base.tendermint.v1beta1.Block") + proto.RegisterType((*Header)(nil), "cosmos.base.tendermint.v1beta1.Header") +} + +func init() { + proto.RegisterFile("cosmos/base/tendermint/v1beta1/types.proto", fileDescriptor_bb9931519c08e0d6) +} + +var fileDescriptor_bb9931519c08e0d6 = []byte{ + // 654 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0xcb, 0x6e, 0xd3, 0x40, + 0x14, 0x86, 0xe3, 0x36, 0xcd, 0x65, 0xd2, 0xf4, 0x62, 0x55, 0x90, 0x06, 0xe1, 0x54, 0x45, 0x94, + 0x52, 0x09, 0x0f, 0xa5, 0x12, 0x0b, 0x24, 0x16, 0xa4, 0x05, 0x35, 0x12, 0x6c, 0x2c, 0xc4, 0x82, + 0x4d, 0x34, 0xb6, 0xa7, 0xf6, 0xa8, 0xb1, 0xc7, 0xf2, 0x4c, 0x2c, 0x78, 0x09, 0xd4, 0xc7, 0x60, + 0xc9, 0x63, 0x74, 0xd9, 0x25, 0xab, 0x82, 0xd2, 0x05, 0x8f, 0xc0, 0x16, 0xcd, 0x99, 0x71, 0x92, + 0x5e, 0xc4, 0x26, 0xb1, 0xff, 0xf3, 0x9d, 0x3f, 0x73, 0xfe, 0x33, 0x0a, 0xda, 0x0b, 0xb8, 0x48, + 0xb8, 0xc0, 0x3e, 0x11, 0x14, 0x4b, 0x9a, 0x86, 0x34, 0x4f, 0x58, 0x2a, 0x71, 0xb1, 0xef, 0x53, + 0x49, 0xf6, 0xb1, 0xfc, 0x9a, 0x51, 0xe1, 0x66, 0x39, 0x97, 0xdc, 0x76, 0x34, 0xeb, 0x2a, 0xd6, + 0x9d, 0xb1, 0xae, 0x61, 0xbb, 0x1b, 0x11, 0x8f, 0x38, 0xa0, 0x58, 0x3d, 0xe9, 0xae, 0xee, 0xc3, + 0x80, 0x27, 0x54, 0xfa, 0x27, 0x52, 0x7b, 0xe1, 0xe2, 0x9a, 0x69, 0x77, 0xeb, 0x76, 0x99, 0x16, + 0x2c, 0xa4, 0x69, 0x40, 0x0d, 0xd1, 0x9b, 0x12, 0x05, 0xcd, 0x05, 0xe3, 0xe9, 0x4d, 0x8b, 0x5e, + 0xc4, 0x79, 0x34, 0xa2, 0x18, 0xde, 0xfc, 0xf1, 0x09, 0x96, 0x2c, 0xa1, 0x42, 0x92, 0x24, 0x33, + 0xc0, 0x3a, 0x49, 0x58, 0xca, 0x31, 0x7c, 0x6a, 0x69, 0xfb, 0xdb, 0x02, 0x5a, 0xea, 0x8f, 0x78, + 0x70, 0x6a, 0x0f, 0x50, 0x2d, 0xa6, 0x24, 0xa4, 0x79, 0xc7, 0xda, 0xb2, 0x76, 0x5b, 0x2f, 0x76, + 0xdc, 0xff, 0x8f, 0xe9, 0x1e, 0x03, 0xdd, 0x6f, 0x9e, 0x5f, 0xf6, 0x2a, 0xdf, 0xff, 0xfc, 0xd8, + 0xb3, 0x3c, 0x63, 0x60, 0xbf, 0x44, 0xd5, 0x90, 0x48, 0xd2, 0x59, 0x00, 0xa3, 0xfb, 0x6e, 0x79, + 0x70, 0x57, 0x9f, 0xb6, 0xd8, 0x77, 0x8f, 0x88, 0x24, 0xf3, 0x9d, 0xc0, 0xdb, 0xef, 0x50, 0xa3, + 0x9c, 0xb9, 0xb3, 0x08, 0xbd, 0xbd, 0x3b, 0x7a, 0xdf, 0x1a, 0xe4, 0x3d, 0x13, 0x72, 0xde, 0x63, + 0xda, 0x6b, 0xbf, 0x42, 0xad, 0x11, 0x11, 0x72, 0x18, 0xf0, 0x24, 0x61, 0xb2, 0x53, 0x05, 0xab, + 0xcd, 0x3b, 0xac, 0x0e, 0x01, 0xf0, 0x90, 0xa2, 0xf5, 0xf3, 0xf6, 0xdf, 0x2a, 0xaa, 0xe9, 0xc9, + 0xec, 0x43, 0x54, 0x37, 0x49, 0x9b, 0x48, 0x9c, 0x99, 0x85, 0x29, 0x68, 0x93, 0x54, 0xd0, 0x54, + 0x8c, 0xc5, 0xfc, 0x61, 0xca, 0x4e, 0x7b, 0x07, 0x35, 0x82, 0x98, 0xb0, 0x74, 0xc8, 0x42, 0xc8, + 0xa3, 0xd9, 0x6f, 0x4d, 0x2e, 0x7b, 0xf5, 0x43, 0xa5, 0x0d, 0x8e, 0xbc, 0x3a, 0x14, 0x07, 0xa1, + 0x7d, 0x4f, 0xc5, 0xcf, 0xa2, 0x58, 0xc2, 0xe4, 0x8b, 0x9e, 0x79, 0xb3, 0x5f, 0xa3, 0xaa, 0x5a, + 0xa3, 0x19, 0xa2, 0xeb, 0xea, 0x1d, 0xbb, 0xe5, 0x8e, 0xdd, 0x8f, 0xe5, 0x8e, 0xfb, 0x6d, 0xf5, + 0xeb, 0x67, 0xbf, 0x7a, 0x96, 0x89, 0x54, 0xb5, 0xd9, 0x03, 0xd4, 0x86, 0x28, 0x7c, 0xb5, 0x63, + 0x75, 0x86, 0x25, 0xe3, 0x73, 0x3b, 0x0c, 0xb8, 0x06, 0x83, 0xa3, 0xf9, 0x29, 0x20, 0x46, 0xad, + 0x87, 0xf6, 0x2e, 0x5a, 0x9b, 0x4b, 0x75, 0x18, 0x13, 0x11, 0x77, 0x6a, 0x5b, 0xd6, 0xee, 0xb2, + 0xb7, 0x32, 0xcb, 0xef, 0x98, 0x88, 0xd8, 0x7e, 0x80, 0x9a, 0x6a, 0x9f, 0x1a, 0xa9, 0x03, 0xd2, + 0x50, 0x02, 0x14, 0x9f, 0xa0, 0xd5, 0x82, 0x8c, 0x58, 0x48, 0x24, 0xcf, 0x85, 0x46, 0x1a, 0xda, + 0x65, 0x26, 0x03, 0xf8, 0x1c, 0x6d, 0xa4, 0xf4, 0x8b, 0x1c, 0xde, 0xa4, 0x9b, 0x40, 0xdb, 0xaa, + 0xf6, 0xe9, 0x7a, 0xc7, 0x63, 0xb4, 0x12, 0x94, 0xcb, 0xd0, 0x2c, 0x02, 0xb6, 0x3d, 0x55, 0x01, + 0xdb, 0x44, 0x0d, 0x92, 0x65, 0x1a, 0x68, 0x01, 0x50, 0x27, 0x59, 0x06, 0xa5, 0x3d, 0xb4, 0x0e, + 0x33, 0xe6, 0x54, 0x8c, 0x47, 0xd2, 0x98, 0x2c, 0x03, 0xb3, 0xaa, 0x0a, 0x9e, 0xd6, 0x81, 0x7d, + 0x84, 0xda, 0xe5, 0x8d, 0xd3, 0x5c, 0x1b, 0xb8, 0xe5, 0x52, 0x04, 0xe8, 0x29, 0x5a, 0xcb, 0x72, + 0x9e, 0x71, 0x41, 0xf3, 0x21, 0x09, 0xc3, 0x9c, 0x0a, 0xd1, 0x59, 0x51, 0xd7, 0xc0, 0x5b, 0x2d, + 0xf5, 0x37, 0x5a, 0xee, 0x7f, 0x38, 0x9f, 0x38, 0xd6, 0xc5, 0xc4, 0xb1, 0x7e, 0x4f, 0x1c, 0xeb, + 0xec, 0xca, 0xa9, 0x5c, 0x5c, 0x39, 0x95, 0x9f, 0x57, 0x4e, 0xe5, 0xf3, 0x41, 0xc4, 0x64, 0x3c, + 0xf6, 0xd5, 0xce, 0xb0, 0xf9, 0x9f, 0xd2, 0x5f, 0xcf, 0x44, 0x78, 0x8a, 0x83, 0x11, 0xa3, 0xa9, + 0xc4, 0x51, 0x9e, 0x05, 0x38, 0x48, 0xa4, 0xa0, 0x79, 0xc1, 0x02, 0xea, 0xd7, 0xe0, 0x8a, 0x1c, + 0xfc, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x71, 0x63, 0x17, 0x59, 0xda, 0x04, 0x00, 0x00, +} + +func (m *Block) 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 *Block) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Block) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastCommit != nil { + { + size, err := m.LastCommit.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + { + size, err := m.Evidence.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size, err := m.Data.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *Header) 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 *Header) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Header) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ProposerAddress) > 0 { + i -= len(m.ProposerAddress) + copy(dAtA[i:], m.ProposerAddress) + i = encodeVarintTypes(dAtA, i, uint64(len(m.ProposerAddress))) + i-- + dAtA[i] = 0x72 + } + if len(m.EvidenceHash) > 0 { + i -= len(m.EvidenceHash) + copy(dAtA[i:], m.EvidenceHash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.EvidenceHash))) + i-- + dAtA[i] = 0x6a + } + if len(m.LastResultsHash) > 0 { + i -= len(m.LastResultsHash) + copy(dAtA[i:], m.LastResultsHash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.LastResultsHash))) + i-- + dAtA[i] = 0x62 + } + if len(m.AppHash) > 0 { + i -= len(m.AppHash) + copy(dAtA[i:], m.AppHash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.AppHash))) + i-- + dAtA[i] = 0x5a + } + if len(m.ConsensusHash) > 0 { + i -= len(m.ConsensusHash) + copy(dAtA[i:], m.ConsensusHash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.ConsensusHash))) + i-- + dAtA[i] = 0x52 + } + if len(m.NextValidatorsHash) > 0 { + i -= len(m.NextValidatorsHash) + copy(dAtA[i:], m.NextValidatorsHash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.NextValidatorsHash))) + i-- + dAtA[i] = 0x4a + } + if len(m.ValidatorsHash) > 0 { + i -= len(m.ValidatorsHash) + copy(dAtA[i:], m.ValidatorsHash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.ValidatorsHash))) + i-- + dAtA[i] = 0x42 + } + if len(m.DataHash) > 0 { + i -= len(m.DataHash) + copy(dAtA[i:], m.DataHash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.DataHash))) + i-- + dAtA[i] = 0x3a + } + if len(m.LastCommitHash) > 0 { + i -= len(m.LastCommitHash) + copy(dAtA[i:], m.LastCommitHash) + i = encodeVarintTypes(dAtA, i, uint64(len(m.LastCommitHash))) + i-- + dAtA[i] = 0x32 + } + { + size, err := m.LastBlockId.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + n6, err6 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) + if err6 != nil { + return 0, err6 + } + i -= n6 + i = encodeVarintTypes(dAtA, i, uint64(n6)) + i-- + dAtA[i] = 0x22 + if m.Height != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x18 + } + if len(m.ChainID) > 0 { + i -= len(m.ChainID) + copy(dAtA[i:], m.ChainID) + i = encodeVarintTypes(dAtA, i, uint64(len(m.ChainID))) + i-- + dAtA[i] = 0x12 + } + { + size, err := m.Version.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintTypes(dAtA []byte, offset int, v uint64) int { + offset -= sovTypes(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Block) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Header.Size() + n += 1 + l + sovTypes(uint64(l)) + l = m.Data.Size() + n += 1 + l + sovTypes(uint64(l)) + l = m.Evidence.Size() + n += 1 + l + sovTypes(uint64(l)) + if m.LastCommit != nil { + l = m.LastCommit.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + +func (m *Header) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Version.Size() + n += 1 + l + sovTypes(uint64(l)) + l = len(m.ChainID) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.Height != 0 { + n += 1 + sovTypes(uint64(m.Height)) + } + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time) + n += 1 + l + sovTypes(uint64(l)) + l = m.LastBlockId.Size() + n += 1 + l + sovTypes(uint64(l)) + l = len(m.LastCommitHash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.DataHash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.ValidatorsHash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.NextValidatorsHash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.ConsensusHash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.AppHash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.LastResultsHash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.EvidenceHash) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.ProposerAddress) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + +func sovTypes(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTypes(x uint64) (n int) { + return sovTypes(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Block) 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 ErrIntOverflowTypes + } + 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: Block: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Block: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Evidence", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Evidence.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCommit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastCommit == nil { + m.LastCommit = &v1.Commit{} + } + if err := m.LastCommit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Header) 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 ErrIntOverflowTypes + } + 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: Header: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Header: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.Time, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastBlockId", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastBlockId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastCommitHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LastCommitHash = append(m.LastCommitHash[:0], dAtA[iNdEx:postIndex]...) + if m.LastCommitHash == nil { + m.LastCommitHash = []byte{} + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DataHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DataHash = append(m.DataHash[:0], dAtA[iNdEx:postIndex]...) + if m.DataHash == nil { + m.DataHash = []byte{} + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorsHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorsHash = append(m.ValidatorsHash[:0], dAtA[iNdEx:postIndex]...) + if m.ValidatorsHash == nil { + m.ValidatorsHash = []byte{} + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NextValidatorsHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NextValidatorsHash = append(m.NextValidatorsHash[:0], dAtA[iNdEx:postIndex]...) + if m.NextValidatorsHash == nil { + m.NextValidatorsHash = []byte{} + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConsensusHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConsensusHash = append(m.ConsensusHash[:0], dAtA[iNdEx:postIndex]...) + if m.ConsensusHash == nil { + m.ConsensusHash = []byte{} + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppHash = append(m.AppHash[:0], dAtA[iNdEx:postIndex]...) + if m.AppHash == nil { + m.AppHash = []byte{} + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastResultsHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LastResultsHash = append(m.LastResultsHash[:0], dAtA[iNdEx:postIndex]...) + if m.LastResultsHash == nil { + m.LastResultsHash = []byte{} + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvidenceHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EvidenceHash = append(m.EvidenceHash[:0], dAtA[iNdEx:postIndex]...) + if m.EvidenceHash == nil { + m.EvidenceHash = []byte{} + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProposerAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProposerAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTypes(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, ErrIntOverflowTypes + } + 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, ErrIntOverflowTypes + } + 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, ErrIntOverflowTypes + } + 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, ErrInvalidLengthTypes + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTypes + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTypes + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTypes = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTypes = fmt.Errorf("proto: unexpected end of group") +) diff --git a/server/v2/cometbft/client/grpc/cmtservice/util.go b/server/v2/cometbft/client/grpc/cmtservice/util.go new file mode 100644 index 000000000000..6b18e3fdb6e5 --- /dev/null +++ b/server/v2/cometbft/client/grpc/cmtservice/util.go @@ -0,0 +1,39 @@ +package cmtservice + +import ( + cmtprototypes "github.com/cometbft/cometbft/api/cometbft/types/v1" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// convertHeader converts CometBFT header to sdk header +func convertHeader(h cmtprototypes.Header) Header { + return Header{ + Version: h.Version, + ChainID: h.ChainID, + Height: h.Height, + Time: h.Time, + LastBlockId: h.LastBlockId, + ValidatorsHash: h.ValidatorsHash, + NextValidatorsHash: h.NextValidatorsHash, + ConsensusHash: h.ConsensusHash, + AppHash: h.AppHash, + DataHash: h.DataHash, + EvidenceHash: h.EvidenceHash, + LastResultsHash: h.LastResultsHash, + LastCommitHash: h.LastCommitHash, + ProposerAddress: sdk.ConsAddress(h.ProposerAddress).String(), + } +} + +// convertBlock converts CometBFT block to sdk block +func convertBlock(cmtblock *cmtprototypes.Block) *Block { + b := new(Block) + + b.Header = convertHeader(cmtblock.Header) + b.LastCommit = cmtblock.LastCommit + b.Data = cmtblock.Data + b.Evidence = cmtblock.Evidence + + return b +} diff --git a/server/v2/cometbft/client/rpc/block.go b/server/v2/cometbft/client/rpc/block.go new file mode 100644 index 000000000000..ead230b16b87 --- /dev/null +++ b/server/v2/cometbft/client/rpc/block.go @@ -0,0 +1,103 @@ +package rpc + +import ( + "context" + "encoding/hex" + "fmt" + + v11 "buf.build/gen/go/cometbft/cometbft/protocolbuffers/go/cometbft/types/v1" + + abciv1beta1 "cosmossdk.io/api/cosmos/base/abci/v1beta1" +) + +// GetChainHeight returns the current blockchain height. +func GetChainHeight(ctx context.Context, rpcClient CometRPC) (int64, error) { + status, err := rpcClient.Status(ctx) + if err != nil { + return -1, err + } + + height := status.SyncInfo.LatestBlockHeight + return height, nil +} + +// QueryBlocks performs a search for blocks based on BeginBlock and EndBlock +// events via the CometBFT RPC. A custom query may be passed as described below: +// +// To tell which events you want, you need to provide a query. query is a +// string, which has a form: "condition AND condition ..." (no OR at the +// moment). condition has a form: "key operation operand". key is a string with +// a restricted set of possible symbols ( \t\n\r\\()"'=>< are not allowed). +// operation can be "=", "<", "<=", ">", ">=", "CONTAINS" AND "EXISTS". operand +// can be a string (escaped with single quotes), number, date or time. + +// Examples: +// tm.event = 'NewBlock' # new blocks +// tm.event = 'CompleteProposal' # node got a complete proposal +// tm.event = 'Tx' AND tx.hash = 'XYZ' # single transaction +// tm.event = 'Tx' AND tx.height = 5 # all txs of the fifth block +// tx.height = 5 # all txs of the fifth block +// +// For more information, see the /subscribe CometBFT RPC endpoint documentation +func QueryBlocks(ctx context.Context, rpcClient CometRPC, page, limit int, query, orderBy string) (*abciv1beta1.SearchBlocksResult, error) { + resBlocks, err := rpcClient.BlockSearch(ctx, query, &page, &limit, orderBy) + if err != nil { + return nil, err + } + + blocks, err := formatBlockResults(resBlocks.Blocks) + if err != nil { + return nil, err + } + + result := NewSearchBlocksResult(int64(resBlocks.TotalCount), int64(len(blocks)), int64(page), int64(limit), blocks) + + return result, nil +} + +// get block by height +func GetBlockByHeight(ctx context.Context, rpcClient CometRPC, height *int64) (*v11.Block, error) { + // header -> BlockchainInfo + // header, tx -> Block + // results -> BlockResults + resBlock, err := rpcClient.Block(ctx, height) + if err != nil { + return nil, err + } + + out, err := NewResponseResultBlock(resBlock) + if err != nil { + return nil, err + } + if out == nil { + return nil, fmt.Errorf("unable to create response block from comet result block: %v", resBlock) + } + + return out, nil +} + +func GetBlockByHash(ctx context.Context, rpcClient CometRPC, hashHexString string) (*v11.Block, error) { + hash, err := hex.DecodeString(hashHexString) + if err != nil { + return nil, err + } + + resBlock, err := rpcClient.BlockByHash(ctx, hash) + + if err != nil { + return nil, err + } else if resBlock.Block == nil { + return nil, fmt.Errorf("block not found with hash: %s", hashHexString) + } + + // TODO: Also move NewResponseResultBlock somewhere around this package + out, err := NewResponseResultBlock(resBlock) + if err != nil { + return nil, err + } + if out == nil { + return nil, fmt.Errorf("unable to create response block from comet result block: %v", resBlock) + } + + return out, nil +} diff --git a/server/v2/cometbft/client/rpc/client.go b/server/v2/cometbft/client/rpc/client.go new file mode 100644 index 000000000000..94680758abe4 --- /dev/null +++ b/server/v2/cometbft/client/rpc/client.go @@ -0,0 +1,36 @@ +package rpc + +import ( + "context" + + rpcclient "github.com/cometbft/cometbft/rpc/client" + coretypes "github.com/cometbft/cometbft/rpc/core/types" +) + +// CometRPC defines the interface of a CometBFT RPC client needed for +// queries and transaction handling. +type CometRPC interface { + rpcclient.ABCIClient + + Validators(ctx context.Context, height *int64, page, perPage *int) (*coretypes.ResultValidators, error) + Status(context.Context) (*coretypes.ResultStatus, error) + Block(ctx context.Context, height *int64) (*coretypes.ResultBlock, error) + BlockByHash(ctx context.Context, hash []byte) (*coretypes.ResultBlock, error) + BlockResults(ctx context.Context, height *int64) (*coretypes.ResultBlockResults, error) + BlockchainInfo(ctx context.Context, minHeight, maxHeight int64) (*coretypes.ResultBlockchainInfo, error) + Commit(ctx context.Context, height *int64) (*coretypes.ResultCommit, error) + Tx(ctx context.Context, hash []byte, prove bool) (*coretypes.ResultTx, error) + TxSearch( + ctx context.Context, + query string, + prove bool, + page, perPage *int, + orderBy string, + ) (*coretypes.ResultTxSearch, error) + BlockSearch( + ctx context.Context, + query string, + page, perPage *int, + orderBy string, + ) (*coretypes.ResultBlockSearch, error) +} diff --git a/server/v2/cometbft/client/rpc/utils.go b/server/v2/cometbft/client/rpc/utils.go new file mode 100644 index 000000000000..c41542c9734c --- /dev/null +++ b/server/v2/cometbft/client/rpc/utils.go @@ -0,0 +1,75 @@ +package rpc + +import ( + "fmt" + + v11 "buf.build/gen/go/cometbft/cometbft/protocolbuffers/go/cometbft/types/v1" + coretypes "github.com/cometbft/cometbft/rpc/core/types" + gogoproto "github.com/cosmos/gogoproto/proto" + protov2 "google.golang.org/protobuf/proto" + + abciv1beta1 "cosmossdk.io/api/cosmos/base/abci/v1beta1" +) + +// formatBlockResults parses the indexed blocks into a slice of BlockResponse objects. +func formatBlockResults(resBlocks []*coretypes.ResultBlock) ([]*v11.Block, error) { + var ( + err error + out = make([]*v11.Block, len(resBlocks)) + ) + for i := range resBlocks { + out[i], err = NewResponseResultBlock(resBlocks[i]) + if err != nil { + return nil, fmt.Errorf("unable to create response block from comet result block: %v: %w", resBlocks[i], err) + } + if out[i] == nil { + return nil, fmt.Errorf("unable to create response block from comet result block: %v", resBlocks[i]) + } + } + + return out, nil +} + +func NewSearchBlocksResult(totalCount, count, page, limit int64, blocks []*v11.Block) *abciv1beta1.SearchBlocksResult { + totalPages := calcTotalPages(totalCount, limit) + return &abciv1beta1.SearchBlocksResult{ + TotalCount: totalCount, + Count: count, + PageNumber: page, + PageTotal: totalPages, + Limit: limit, + Blocks: blocks, + } +} + +// NewResponseResultBlock returns a BlockResponse given a ResultBlock from CometBFT +func NewResponseResultBlock(res *coretypes.ResultBlock) (*v11.Block, error) { + blkProto, err := res.Block.ToProto() + if err != nil { + return nil, err + } + blkBz, err := gogoproto.Marshal(blkProto) + if err != nil { + return nil, err + } + + blk := &v11.Block{} + err = protov2.Unmarshal(blkBz, blk) + if err != nil { + return nil, err + } + return blk, nil +} + +// calculate total pages in an overflow safe manner +func calcTotalPages(totalCount, limit int64) int64 { + totalPages := int64(0) + if totalCount != 0 && limit != 0 { + if totalCount%limit > 0 { + totalPages = totalCount/limit + 1 + } else { + totalPages = totalCount / limit + } + } + return totalPages +} diff --git a/server/v2/cometbft/commands.go b/server/v2/cometbft/commands.go new file mode 100644 index 000000000000..f9c505cd34c5 --- /dev/null +++ b/server/v2/cometbft/commands.go @@ -0,0 +1,414 @@ +package cometbft + +import ( + "encoding/json" + "fmt" + "strconv" + "strings" + + cmtcfg "github.com/cometbft/cometbft/config" + cmtjson "github.com/cometbft/cometbft/libs/json" + "github.com/cometbft/cometbft/node" + "github.com/cometbft/cometbft/p2p" + pvm "github.com/cometbft/cometbft/privval" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" + "github.com/cometbft/cometbft/rpc/client/local" + cmtversion "github.com/cometbft/cometbft/version" + "github.com/spf13/cobra" + "google.golang.org/protobuf/encoding/protojson" + "sigs.k8s.io/yaml" + + "cosmossdk.io/server/v2/cometbft/client/rpc" + "cosmossdk.io/server/v2/cometbft/flags" + auth "cosmossdk.io/x/auth/client/cli" + + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" + "github.com/cosmos/cosmos-sdk/version" +) + +func (s *CometBFTServer[T]) rpcClient() (rpc.CometRPC, error) { + if s.config.Standalone { + client, err := rpchttp.New(s.config.CmtConfig.RPC.ListenAddress) + if err != nil { + return nil, err + } + return client, nil + } + + return local.New(s.Node), nil +} + +// StatusCommand returns the command to return the status of the network. +func (s *CometBFTServer[T]) StatusCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "status", + Short: "Query remote node for status", + RunE: func(cmd *cobra.Command, _ []string) error { + rpcclient, err := s.rpcClient() + if err != nil { + return err + } + + status, err := rpcclient.Status(cmd.Context()) + if err != nil { + return err + } + + output, err := cmtjson.Marshal(status) + if err != nil { + return err + } + + cmd.Println(string(output)) + + // TODO: figure out yaml and json output + return nil + }, + } + + cmd.Flags().StringP(flags.FlagNode, "n", "tcp://localhost:26657", "Node to connect to") + cmd.Flags().StringP(flags.FlagOutput, "o", "json", "Output format (text|json)") + + return cmd +} + +// ShowNodeIDCmd - ported from CometBFT, dump node ID to stdout +func (s *CometBFTServer[T]) ShowNodeIDCmd() *cobra.Command { + return &cobra.Command{ + Use: "show-node-id", + Short: "Show this node's ID", + RunE: func(cmd *cobra.Command, args []string) error { + nodeKey, err := p2p.LoadNodeKey(s.config.CmtConfig.NodeKeyFile()) + if err != nil { + return err + } + + cmd.Println(nodeKey.ID()) + return nil + }, + } +} + +// ShowValidatorCmd - ported from CometBFT, show this node's validator info +func (s *CometBFTServer[T]) ShowValidatorCmd() *cobra.Command { + cmd := cobra.Command{ + Use: "show-validator", + Short: "Show this node's CometBFT validator info", + RunE: func(cmd *cobra.Command, args []string) error { + cfg := s.config.CmtConfig + privValidator := pvm.LoadFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile()) + pk, err := privValidator.GetPubKey() + if err != nil { + return err + } + + sdkPK, err := cryptocodec.FromCmtPubKeyInterface(pk) + if err != nil { + return err + } + + cmd.Println(sdkPK) // TODO: figure out if we need the codec here or not, see below + + // clientCtx := client.GetClientContextFromCmd(cmd) + // bz, err := clientCtx.Codec.MarshalInterfaceJSON(sdkPK) + // if err != nil { + // return err + // } + + // cmd.Println(string(bz)) + return nil + }, + } + + return &cmd +} + +// ShowAddressCmd - show this node's validator address +func (s *CometBFTServer[T]) ShowAddressCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "show-address", + Short: "Shows this node's CometBFT validator consensus address", + RunE: func(cmd *cobra.Command, args []string) error { + cfg := s.config.CmtConfig + privValidator := pvm.LoadFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile()) + // TODO: use address codec? + valConsAddr := (sdk.ConsAddress)(privValidator.GetAddress()) + + cmd.Println(valConsAddr.String()) + return nil + }, + } + + return cmd +} + +// VersionCmd prints CometBFT and ABCI version numbers. +func (s *CometBFTServer[T]) VersionCmd() *cobra.Command { + return &cobra.Command{ + Use: "version", + Short: "Print CometBFT libraries' version", + Long: "Print protocols' and libraries' version numbers against which this app has been compiled.", + RunE: func(cmd *cobra.Command, args []string) error { + bs, err := yaml.Marshal(&struct { + CometBFT string + ABCI string + BlockProtocol uint64 + P2PProtocol uint64 + }{ + CometBFT: cmtversion.CMTSemVer, + ABCI: cmtversion.ABCIVersion, + BlockProtocol: cmtversion.BlockProtocol, + P2PProtocol: cmtversion.P2PProtocol, + }) + if err != nil { + return err + } + + cmd.Println(string(bs)) + return nil + }, + } +} + +// QueryBlocksCmd returns a command to search through blocks by events. +func (s *CometBFTServer[T]) QueryBlocksCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "blocks", + Short: "Query for paginated blocks that match a set of events", + Long: `Search for blocks that match the exact given events where results are paginated. +The events query is directly passed to CometBFT's RPC BlockSearch method and must +conform to CometBFT's query syntax. +Please refer to each module's documentation for the full set of events to query +for. Each module documents its respective events under 'xx_events.md'. +`, + Example: fmt.Sprintf( + "$ %s query blocks --query \"message.sender='cosmos1...' AND block.height > 7\" --page 1 --limit 30 --order-by ASC", + version.AppName, + ), + RunE: func(cmd *cobra.Command, args []string) error { + rpcclient, err := s.rpcClient() + if err != nil { + return err + } + + query, _ := cmd.Flags().GetString(auth.FlagQuery) + page, _ := cmd.Flags().GetInt(flags.FlagPage) + limit, _ := cmd.Flags().GetInt(flags.FlagLimit) + orderBy, _ := cmd.Flags().GetString(auth.FlagOrderBy) + + blocks, err := rpc.QueryBlocks(cmd.Context(), rpcclient, page, limit, query, orderBy) + if err != nil { + return err + } + + // return clientCtx.PrintProto(blocks) // TODO: previously we had this, but I think it can be replaced with a simple json marshal. + // We are missing YAML output tho. + bz, err := protojson.Marshal(blocks) + if err != nil { + return err + } + + _, err = cmd.OutOrStdout().Write(bz) + return err + }, + } + + flags.AddQueryFlagsToCmd(cmd) + cmd.Flags().Int(flags.FlagPage, query.DefaultPage, "Query a specific page of paginated results") + cmd.Flags().Int(flags.FlagLimit, query.DefaultLimit, "Query number of transactions results per page returned") + cmd.Flags().String(auth.FlagQuery, "", "The blocks events query per CometBFT's query semantics") + cmd.Flags().String(auth.FlagOrderBy, "", "The ordering semantics (asc|dsc)") + _ = cmd.MarkFlagRequired(auth.FlagQuery) + + return cmd +} + +// QueryBlockCmd implements the default command for a Block query. +func (s *CometBFTServer[T]) QueryBlockCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "block --type=[height|hash] [height|hash]", + Short: "Query for a committed block by height, hash, or event(s)", + Long: "Query for a specific committed block using the CometBFT RPC `block` and `block_by_hash` method", + Example: strings.TrimSpace(fmt.Sprintf(` +$ %s query block --%s=%s +$ %s query block --%s=%s +`, + version.AppName, auth.FlagType, auth.TypeHeight, + version.AppName, auth.FlagType, auth.TypeHash)), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + typ, _ := cmd.Flags().GetString(auth.FlagType) + + rpcclient, err := s.rpcClient() + if err != nil { + return err + } + + switch typ { + case auth.TypeHeight: + if args[0] == "" { + return fmt.Errorf("argument should be a block height") + } + + // optional height + var height *int64 + if len(args) > 0 { + height, err = parseOptionalHeight(args[0]) + if err != nil { + return err + } + } + + output, err := rpc.GetBlockByHeight(cmd.Context(), rpcclient, height) + if err != nil { + return err + } + + if output.Header.Height == 0 { + return fmt.Errorf("no block found with height %s", args[0]) + } + + // return clientCtx.PrintProto(output) + + bz, err := json.Marshal(output) + if err != nil { + return err + } + + _, err = cmd.OutOrStdout().Write(bz) + return err + + case auth.TypeHash: + + if args[0] == "" { + return fmt.Errorf("argument should be a tx hash") + } + + // If hash is given, then query the tx by hash. + output, err := rpc.GetBlockByHash(cmd.Context(), rpcclient, args[0]) + if err != nil { + return err + } + + if output.Header.AppHash == nil { + return fmt.Errorf("no block found with hash %s", args[0]) + } + + // return clientCtx.PrintProto(output) + bz, err := json.Marshal(output) + if err != nil { + return err + } + + _, err = cmd.OutOrStdout().Write(bz) + return err + + default: + return fmt.Errorf("unknown --%s value %s", auth.FlagType, typ) + } + }, + } + + flags.AddQueryFlagsToCmd(cmd) + cmd.Flags().String(auth.FlagType, auth.TypeHash, fmt.Sprintf("The type to be used when querying tx, can be one of \"%s\", \"%s\"", auth.TypeHeight, auth.TypeHash)) + + return cmd +} + +// QueryBlockResultsCmd implements the default command for a BlockResults query. +func (s *CometBFTServer[T]) QueryBlockResultsCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "block-results [height]", + Short: "Query for a committed block's results by height", + Long: "Query for a specific committed block's results using the CometBFT RPC `block_results` method", + Args: cobra.RangeArgs(0, 1), + RunE: func(cmd *cobra.Command, args []string) error { + // clientCtx, err := client.GetClientQueryContext(cmd) + // if err != nil { + // return err + // } + + // TODO: we should be able to do this without using client context + + node, err := s.rpcClient() + if err != nil { + return err + } + + // optional height + var height *int64 + if len(args) > 0 { + height, err = parseOptionalHeight(args[0]) + if err != nil { + return err + } + } + + blockRes, err := node.BlockResults(cmd.Context(), height) + if err != nil { + return err + } + + // coretypes.ResultBlockResults doesn't implement proto.Message interface + // so we can't print it using clientCtx.PrintProto + // we choose to serialize it to json and print the json instead + blockResStr, err := json.Marshal(blockRes) + if err != nil { + return err + } + + cmd.Println(string(blockResStr)) + + // TODO: figure out yaml and json output + return nil + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +func parseOptionalHeight(heightStr string) (*int64, error) { + h, err := strconv.Atoi(heightStr) + if err != nil { + return nil, err + } + + if h == 0 { + return nil, nil + } + + tmp := int64(h) + + return &tmp, nil +} + +func (s *CometBFTServer[T]) BootstrapStateCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "bootstrap-state", + Short: "Bootstrap CometBFT state at an arbitrary block height using a light client", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + height, err := cmd.Flags().GetUint64("height") + if err != nil { + return err + } + if height == 0 { + height, err = s.App.store.GetLatestVersion() + if err != nil { + return err + } + } + + // TODO genensis doc provider and apphash + return node.BootstrapState(cmd.Context(), s.config.CmtConfig, cmtcfg.DefaultDBProvider, nil, height, nil) + }, + } + + cmd.Flags().Int64("height", 0, "Block height to bootstrap state at, if not provided it uses the latest block height in app state") + + return cmd +} diff --git a/server/v2/cometbft/config.go b/server/v2/cometbft/config.go new file mode 100644 index 000000000000..40b987abb2b3 --- /dev/null +++ b/server/v2/cometbft/config.go @@ -0,0 +1,37 @@ +package cometbft + +import ( + cmtcfg "github.com/cometbft/cometbft/config" + + "cosmossdk.io/server/v2/api/grpc" + "cosmossdk.io/server/v2/cometbft/types" +) + +// Config is the configuration for the CometBFT application +type Config struct { + // app.toml config options + Name string `mapstructure:"name" toml:"name"` + Version string `mapstructure:"version" toml:"version"` + InitialHeight uint64 `mapstructure:"initial_height" toml:"initial_height"` + MinRetainBlocks uint64 `mapstructure:"min_retain_blocks" toml:"min_retain_blocks"` + IndexEvents map[string]struct{} `mapstructure:"index_events" toml:"index_events"` + HaltHeight uint64 `mapstructure:"halt_height" toml:"halt_height"` + HaltTime uint64 `mapstructure:"halt_time" toml:"halt_time"` + // end of app.toml config options + + AddrPeerFilter types.PeerFilter // filter peers by address and port + IdPeerFilter types.PeerFilter // filter peers by node ID + + Transport string `mapstructure:"transport" toml:"transport"` + Addr string `mapstructure:"addr" toml:"addr"` + Standalone bool `mapstructure:"standalone" toml:"standalone"` + Trace bool `mapstructure:"trace" toml:"trace"` + + GrpcConfig grpc.Config + + // MempoolConfig + CmtConfig *cmtcfg.Config + + // Must be set by the application to grant authority to the consensus engine to send messages to the consensus module + ConsensusAuthority string +} diff --git a/server/v2/cometbft/flags/flags.go b/server/v2/cometbft/flags/flags.go new file mode 100644 index 000000000000..37003dcdce21 --- /dev/null +++ b/server/v2/cometbft/flags/flags.go @@ -0,0 +1,79 @@ +package flags + +import "github.com/spf13/cobra" + +const ( + FlagQuery = "query" + FlagType = "type" + FlagOrderBy = "order_by" +) + +const ( + FlagHome = "home" + FlagKeyringDir = "keyring-dir" + FlagUseLedger = "ledger" + FlagChainID = "chain-id" + FlagNode = "node" + FlagGRPC = "grpc-addr" + FlagGRPCInsecure = "grpc-insecure" + FlagHeight = "height" + FlagGasAdjustment = "gas-adjustment" + FlagFrom = "from" + FlagName = "name" + FlagAccountNumber = "account-number" + FlagSequence = "sequence" + FlagNote = "note" + FlagFees = "fees" + FlagGas = "gas" + FlagGasPrices = "gas-prices" + FlagBroadcastMode = "broadcast-mode" + FlagDryRun = "dry-run" + FlagGenerateOnly = "generate-only" + FlagOffline = "offline" + FlagOutputDocument = "output-document" // inspired by wget -O + FlagSkipConfirmation = "yes" + FlagProve = "prove" + FlagKeyringBackend = "keyring-backend" + FlagPage = "page" + FlagLimit = "limit" + FlagSignMode = "sign-mode" + FlagPageKey = "page-key" + FlagOffset = "offset" + FlagCountTotal = "count-total" + FlagTimeoutHeight = "timeout-height" + FlagUnordered = "unordered" + FlagKeyAlgorithm = "algo" + FlagKeyType = "key-type" + FlagFeePayer = "fee-payer" + FlagFeeGranter = "fee-granter" + FlagReverse = "reverse" + FlagTip = "tip" + FlagAux = "aux" + FlagInitHeight = "initial-height" + // FlagOutput is the flag to set the output format. + // This differs from FlagOutputDocument that is used to set the output file. + FlagOutput = "output" + // Logging flags + FlagLogLevel = "log_level" + FlagLogFormat = "log_format" + FlagLogNoColor = "log_no_color" +) + +// List of supported output formats +const ( + OutputFormatJSON = "json" + OutputFormatText = "text" +) + +// AddQueryFlagsToCmd adds common flags to a module query command. +func AddQueryFlagsToCmd(cmd *cobra.Command) { + cmd.Flags().String(FlagNode, "tcp://localhost:26657", ": to CometBFT RPC interface for this chain") + cmd.Flags().String(FlagGRPC, "", "the gRPC endpoint to use for this chain") + cmd.Flags().Bool(FlagGRPCInsecure, false, "allow gRPC over insecure channels, if not the server must use TLS") + cmd.Flags().Int64(FlagHeight, 0, "Use a specific height to query state at (this can error if the node is pruning state)") + cmd.Flags().StringP(FlagOutput, "o", "text", "Output format (text|json)") + + // some base commands does not require chainID e.g `simd testnet` while subcommands do + // hence the flag should not be required for those commands + _ = cmd.MarkFlagRequired(FlagChainID) +} diff --git a/server/v2/cometbft/go.mod b/server/v2/cometbft/go.mod new file mode 100644 index 000000000000..8781d7371fda --- /dev/null +++ b/server/v2/cometbft/go.mod @@ -0,0 +1,190 @@ +module cosmossdk.io/server/v2/cometbft + +go 1.22.2 + +replace ( + cosmossdk.io/api => ../../../api + cosmossdk.io/core => ../../../core + cosmossdk.io/depinject => ../../../depinject + cosmossdk.io/log => ../../../log + cosmossdk.io/runtime/v2 => ../../../runtime/v2 + cosmossdk.io/server/v2 => ../ + cosmossdk.io/server/v2/appmanager => ../appmanager + cosmossdk.io/server/v2/stf => ../stf + cosmossdk.io/store/v2 => ../../../store/v2 + cosmossdk.io/x/accounts => ../../../x/accounts + cosmossdk.io/x/auth => ../../../x/auth + 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 ( + buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.1-20240312114316-c0d3497e35d6.1 + cosmossdk.io/api v0.7.5 + cosmossdk.io/core v0.12.1-0.20231114100755-569e3ff6a0d7 + cosmossdk.io/errors v1.0.1 + cosmossdk.io/server/v2 v2.0.0-00010101000000-000000000000 + cosmossdk.io/server/v2/appmanager v0.0.0-00010101000000-000000000000 + cosmossdk.io/store/v2 v2.0.0-00010101000000-000000000000 + cosmossdk.io/x/auth v0.0.0-00010101000000-000000000000 + cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000 + github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 + github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 + github.com/cosmos/cosmos-proto v1.0.0-beta.5 + github.com/cosmos/cosmos-sdk v0.51.0 + github.com/cosmos/gogoproto v1.4.12 + github.com/golang/protobuf v1.5.4 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/spf13/cobra v1.8.0 + github.com/spf13/pflag v1.0.5 + google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 + google.golang.org/grpc v1.64.0 + google.golang.org/protobuf v1.34.1 + sigs.k8s.io/yaml v1.4.0 +) + +require ( + buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.1-20240130113600-88ef6483f90f.1 // indirect + cosmossdk.io/collections v0.4.0 // indirect + cosmossdk.io/depinject v1.0.0-alpha.4 // indirect + cosmossdk.io/log v1.3.1 // indirect + cosmossdk.io/math v1.3.0 // indirect + cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc // indirect + cosmossdk.io/x/accounts v0.0.0-20240226161501-23359a0b6d91 // 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 v0.13.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 + 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.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.3 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cometbft/cometbft-db v0.12.0 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-db v1.0.2 // indirect + github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/iavl v1.2.0 // indirect + github.com/cosmos/ics23/go v0.10.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.2.0 // indirect + github.com/dgraph-io/ristretto v0.1.1 // 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/fatih/color v1.17.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/go-kit/kit v0.13.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gofrs/uuid v4.4.0+incompatible // indirect + github.com/gogo/googleapis v1.4.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.2.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/flatbuffers v2.0.8+incompatible // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/orderedcode v0.0.1 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/mux v1.8.1 // indirect + github.com/gorilla/websocket v1.5.1 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-metrics v0.5.3 // indirect + github.com/hashicorp/go-plugin v1.6.1 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect + github.com/hdevalence/ed25519consensus v0.2.0 // indirect + github.com/huandu/skiplist v1.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.8 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/lib/pq v1.10.9 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect + github.com/magiconair/properties v1.8.7 // 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.2 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/petermattis/goid v0.0.0-20240327183114-c42a807a84ba // 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.19.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.53.0 // indirect + github.com/prometheus/procfs v0.14.0 // indirect + 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.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.1 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/viper v1.18.2 // indirect + github.com/stretchr/testify v1.9.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/supranational/blst v0.3.11 // 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/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/crypto v0.23.0 // indirect + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/net v0.25.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/term v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect + golang.org/x/tools v0.21.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291 // 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 +) diff --git a/server/v2/cometbft/go.sum b/server/v2/cometbft/go.sum new file mode 100644 index 000000000000..b40b52b571b1 --- /dev/null +++ b/server/v2/cometbft/go.sum @@ -0,0 +1,694 @@ +buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.1-20240312114316-c0d3497e35d6.1 h1:lBlYy54lX1iBjFhbkd13bWlH7dMnoiyENzZ0Wok1YH4= +buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.1-20240312114316-c0d3497e35d6.1/go.mod h1:fYP6DZCfO5Ex4U+Xq1PqQwB8NQQhW5Y+Qbyzd/7dw7o= +buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.1-20240130113600-88ef6483f90f.1 h1:MfK7sTqm7NFqM/GOuuKOOemQzW8P7z07YQIW0vsYr38= +buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.1-20240130113600-88ef6483f90f.1/go.mod h1:RigkrxrsA6FPZontmsidcr0WGWF8zNFYleIktv6XdLc= +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.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= +cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= +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/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc h1:R9O9d75e0qZYUsVV0zzi+D7cNLnX2JrUOQNoIPaF0Bg= +cosmossdk.io/store v1.1.1-0.20240418092142-896cdf1971bc/go.mod h1:amTTatOUV3u1PsKmNb87z6/galCxrRbz9kRdJkL0DyU= +cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20240417181816-5e7aae0db1f5 h1:eb0kcGyaYHSS0do7+MIWg7UKlskSH01biRNENbm/zDA= +cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20240417181816-5e7aae0db1f5/go.mod h1:drzY4oVisyWvSgpsM7ccQ7IX3efMuVIvd9Eij1Gm/6o= +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/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +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/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= +github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= +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/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +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.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= +github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/btcsuite/btcd/btcec/v2 v2.3.3 h1:6+iXlDKE8RMtKsvK0gshlXIuPbyWM/h84Ensb7o3sC0= +github.com/btcsuite/btcd/btcec/v2 v2.3.3/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.5 h1:+wER79R5670vs/ZusMTF1yTcRYE5GUsFbdjdisflzM8= +github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +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/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +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.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +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.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +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-alpha.2.0.20240530055211-ae27f7eb3c08 h1:xW0les/5Lr+4qVsOYDDwl5Utj8uouvv69hEtiavHJ2M= +github.com/cometbft/cometbft v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:8uXGKqp5yPmNSbU81K/669E3rfO3H+juGkYKCPTnAtY= +github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= +github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08 h1:BNUwBnVEBiRUGfLIqbKPKHEiR6VCOjWarDgy2dcbys4= +github.com/cometbft/cometbft/api v1.0.0-alpha.2.0.20240530055211-ae27f7eb3c08/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +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.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= +github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +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/crypto v0.0.0-20240309083813-82ed2537802e h1:Zk4OsfLBN+0WOfH15Hg/aAYsSP7IuZQC6RZjewPuITw= +github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e/go.mod h1:0KOK/XVzL5lj9x+NyJ7lWuJYl6F0Wd7JMVYM06bVQsc= +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.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= +github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= +github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= +github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= +github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= +github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= +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.3/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.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +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/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +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/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= +github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +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.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +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/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU= +github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +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.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +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/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= +github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +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.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +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.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= +github.com/google/flatbuffers v2.0.8+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.6/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/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.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +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.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= +github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= +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.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +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/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= +github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= +github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= +github.com/huandu/skiplist v1.2.0/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/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= +github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= +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.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +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.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= +github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +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/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/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/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= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +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.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +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/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/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= +github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= +github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +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.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20240327183114-c42a807a84ba h1:3jPgmsFGBID1wFfU2AbYocNcN4wqU68UaHSdMjiw/7U= +github.com/petermattis/goid v0.0.0-20240327183114-c42a807a84ba/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.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +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.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= +github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +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.14.0 h1:Lw4VdGGoKEZilJsayHf0B+9YgLGREba2C6xr+Fdfq6s= +github.com/prometheus/procfs v0.14.0/go.mod h1:XL+Iwz8k8ZabyZfMFHPiilCniixqQarAy5Mu67pHlNQ= +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.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= +github.com/rs/cors v1.11.0/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.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +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/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +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.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +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.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +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.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +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/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/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/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.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +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.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +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/lint v0.0.0-20190930215403-16217165b5de/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.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +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.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +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.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.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-20190130150945-aca44879d564/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-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/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-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/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-20220315194320-039c03cc5b86/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-20220503163025-988cb79eb6c6/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.0.0-20221010170243-090e33056c14/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.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.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.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +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.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +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= +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-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +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.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= +golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +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-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +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-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +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-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291 h1:AgADTJarZTBqgjiUzRgfaBchgYB3/WFTC80GPwsMcRI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +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.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +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.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.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +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.2.8/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.0-20210107192922-496545a6307b/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= +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/server/v2/cometbft/handlers/defaults.go b/server/v2/cometbft/handlers/defaults.go new file mode 100644 index 000000000000..8e9795660d19 --- /dev/null +++ b/server/v2/cometbft/handlers/defaults.go @@ -0,0 +1,186 @@ +package handlers + +import ( + "context" + "errors" + "fmt" + + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cosmos/gogoproto/proto" + + consensusv1 "cosmossdk.io/api/cosmos/consensus/v1" + appmanager "cosmossdk.io/core/app" + "cosmossdk.io/core/store" + "cosmossdk.io/core/transaction" + "cosmossdk.io/server/v2/cometbft/mempool" +) + +type AppManager[T transaction.Tx] interface { + ValidateTx(ctx context.Context, tx T) (appmanager.TxResult, error) + Query(ctx context.Context, version uint64, request transaction.Msg) (response transaction.Msg, err error) +} + +type DefaultProposalHandler[T transaction.Tx] struct { + mempool mempool.Mempool[T] + txSelector TxSelector[T] +} + +func NewDefaultProposalHandler[T transaction.Tx](mp mempool.Mempool[T]) *DefaultProposalHandler[T] { + return &DefaultProposalHandler[T]{ + mempool: mp, + txSelector: NewDefaultTxSelector[T](), + } +} + +func (h *DefaultProposalHandler[T]) PrepareHandler() PrepareHandler[T] { + return func(ctx context.Context, app AppManager[T], txs []T, req proto.Message) ([]T, error) { + abciReq, ok := req.(*abci.PrepareProposalRequest) + if !ok { + return nil, fmt.Errorf("expected abci.PrepareProposalRequest, invalid request type: %T,", req) + } + + var maxBlockGas uint64 + + res, err := app.Query(ctx, 0, &consensusv1.QueryParamsRequest{}) + if err != nil { + return nil, err + } + + paramsResp, ok := res.(*consensusv1.QueryParamsResponse) + if !ok { + return nil, fmt.Errorf("unexpected consensus params response type; expected: %T, got: %T", &consensusv1.QueryParamsResponse{}, res) + } + + if b := paramsResp.GetParams().Block; b != nil { + maxBlockGas = uint64(b.MaxGas) + } + + defer h.txSelector.Clear() + + // If the mempool is nil or NoOp we simply return the transactions + // requested from CometBFT, which, by default, should be in FIFO order. + // + // Note, we still need to ensure the transactions returned respect req.MaxTxBytes. + _, isNoOp := h.mempool.(mempool.NoOpMempool[T]) + if h.mempool == nil || isNoOp { + for _, tx := range txs { + stop := h.txSelector.SelectTxForProposal(ctx, uint64(abciReq.MaxTxBytes), maxBlockGas, tx) + if stop { + break + } + } + + return h.txSelector.SelectedTxs(ctx), nil + } + + iterator := h.mempool.Select(ctx, txs) + for iterator != nil { + memTx := iterator.Tx() + + // NOTE: Since transaction verification was already executed in CheckTx, + // which calls mempool.Insert, in theory everything in the pool should be + // valid. But some mempool implementations may insert invalid txs, so we + // check again. + _, err := app.ValidateTx(ctx, memTx) + if err != nil { + err := h.mempool.Remove([]T{memTx}) + if err != nil && !errors.Is(err, mempool.ErrTxNotFound) { + return nil, err + } + } else { + stop := h.txSelector.SelectTxForProposal(ctx, uint64(abciReq.MaxTxBytes), maxBlockGas, memTx) + if stop { + break + } + } + + iterator = iterator.Next() + } + + return h.txSelector.SelectedTxs(ctx), nil + } +} + +func (h *DefaultProposalHandler[T]) ProcessHandler() ProcessHandler[T] { + return func(ctx context.Context, app AppManager[T], txs []T, req proto.Message) error { + // If the mempool is nil we simply return ACCEPT, + // because PrepareProposal may have included txs that could fail verification. + _, isNoOp := h.mempool.(mempool.NoOpMempool[T]) + if h.mempool == nil || isNoOp { + return nil + } + + _, ok := req.(*abci.PrepareProposalRequest) + if !ok { + return fmt.Errorf("invalid request type: %T", req) + } + + res, err := app.Query(ctx, 0, &consensusv1.QueryParamsRequest{}) + if err != nil { + return err + } + + paramsResp, ok := res.(*consensusv1.QueryParamsResponse) + if !ok { + return fmt.Errorf("unexpected consensus params response type; expected: %T, got: %T", &consensusv1.QueryParamsResponse{}, res) + } + + var maxBlockGas uint64 + if b := paramsResp.GetParams().Block; b != nil { + maxBlockGas = uint64(b.MaxGas) + } + + var totalTxGas uint64 + for _, tx := range txs { + _, err := app.ValidateTx(ctx, tx) + if err != nil { + return fmt.Errorf("failed to validate tx: %w", err) + } + + if maxBlockGas > 0 { + gaslimit, err := tx.GetGasLimit() + if err != nil { + return fmt.Errorf("failed to get gas limit") + } + totalTxGas += gaslimit + if totalTxGas > maxBlockGas { + return fmt.Errorf("total tx gas %d exceeds max block gas %d", totalTxGas, maxBlockGas) + } + } + } + + return nil + } +} + +// NoOpPrepareProposal defines a no-op PrepareProposal handler. It will always +// return the transactions sent by the client's request. +func NoOpPrepareProposal[T transaction.Tx]() PrepareHandler[T] { + return func(ctx context.Context, app AppManager[T], txs []T, req proto.Message) ([]T, error) { + return txs, nil + } +} + +// NoOpProcessProposal defines a no-op ProcessProposal Handler. It will always +// return ACCEPT. +func NoOpProcessProposal[T transaction.Tx]() ProcessHandler[T] { + return func(context.Context, AppManager[T], []T, proto.Message) error { + return nil + } +} + +// NoOpExtendVote defines a no-op ExtendVote handler. It will always return an +// empty byte slice as the vote extension. +func NoOpExtendVote() ExtendVoteHandler { + return func(context.Context, store.ReaderMap, *abci.ExtendVoteRequest) (*abci.ExtendVoteResponse, error) { + return &abci.ExtendVoteResponse{VoteExtension: []byte{}}, nil + } +} + +// NoOpVerifyVoteExtensionHandler defines a no-op VerifyVoteExtension handler. It +// will always return an ACCEPT status with no error. +func NoOpVerifyVoteExtensionHandler() VerifyVoteExtensionhandler { + return func(context.Context, store.ReaderMap, *abci.VerifyVoteExtensionRequest) (*abci.VerifyVoteExtensionResponse, error) { + return &abci.VerifyVoteExtensionResponse{Status: abci.VERIFY_VOTE_EXTENSION_STATUS_ACCEPT}, nil + } +} diff --git a/server/v2/cometbft/handlers/handlers.go b/server/v2/cometbft/handlers/handlers.go new file mode 100644 index 000000000000..7780a7cfc602 --- /dev/null +++ b/server/v2/cometbft/handlers/handlers.go @@ -0,0 +1,31 @@ +package handlers + +import ( + "context" + + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cosmos/gogoproto/proto" + + "cosmossdk.io/core/store" + "cosmossdk.io/core/transaction" +) + +type ( + // PrepareHandler passes in the list of Txs that are being proposed. The app can then do stateful operations + // over the list of proposed transactions. It can return a modified list of txs to include in the proposal. + PrepareHandler[T transaction.Tx] func(context.Context, AppManager[T], []T, proto.Message) ([]T, error) + + // ProcessHandler is a function that takes a list of transactions and returns a boolean and an error. + // If the verification of a transaction fails, the boolean is false and the error is non-nil. + ProcessHandler[T transaction.Tx] func(context.Context, AppManager[T], []T, proto.Message) error + + // VerifyVoteExtensionhandler is a function type that handles the verification of a vote extension request. + // It takes a context, a store reader map, and a request to verify a vote extension. + // It returns a response to verify the vote extension and an error if any. + VerifyVoteExtensionhandler func(context.Context, store.ReaderMap, *abci.VerifyVoteExtensionRequest) (*abci.VerifyVoteExtensionResponse, error) + + // ExtendVoteHandler is a function type that handles the extension of a vote. + // It takes a context, a store reader map, and a request to extend a vote. + // It returns a response to extend the vote and an error if any. + ExtendVoteHandler func(context.Context, store.ReaderMap, *abci.ExtendVoteRequest) (*abci.ExtendVoteResponse, error) +) diff --git a/server/v2/cometbft/handlers/tx_selector.go b/server/v2/cometbft/handlers/tx_selector.go new file mode 100644 index 000000000000..a102a44cd94c --- /dev/null +++ b/server/v2/cometbft/handlers/tx_selector.go @@ -0,0 +1,76 @@ +package handlers + +import ( + "context" + + cmttypes "github.com/cometbft/cometbft/types" + + "cosmossdk.io/core/transaction" +) + +// TxSelector defines a helper type that assists in selecting transactions during +// mempool transaction selection in PrepareProposal. It keeps track of the total +// number of bytes and total gas of the selected transactions. It also keeps +// track of the selected transactions themselves. +type TxSelector[T transaction.Tx] interface { + // SelectedTxs should return a copy of the selected transactions. + SelectedTxs(ctx context.Context) []T + + // Clear should clear the TxSelector, nulling out all relevant fields. + Clear() + + // SelectTxForProposal should attempt to select a transaction for inclusion in + // a proposal based on inclusion criteria defined by the TxSelector. It must + // return if the caller should halt the transaction selection loop + // (typically over a mempool) or otherwise. + SelectTxForProposal(ctx context.Context, maxTxBytes, maxBlockGas uint64, tx T) bool +} + +type defaultTxSelector[T transaction.Tx] struct { + totalTxBytes uint64 + totalTxGas uint64 + selectedTxs []T +} + +func NewDefaultTxSelector[T transaction.Tx]() TxSelector[T] { + return &defaultTxSelector[T]{} +} + +func (ts *defaultTxSelector[T]) SelectedTxs(_ context.Context) []T { + txs := make([]T, len(ts.selectedTxs)) + copy(txs, ts.selectedTxs) + return txs +} + +func (ts *defaultTxSelector[T]) Clear() { + ts.totalTxBytes = 0 + ts.totalTxGas = 0 + ts.selectedTxs = nil +} + +func (ts *defaultTxSelector[T]) SelectTxForProposal(_ context.Context, maxTxBytes, maxBlockGas uint64, tx T) bool { + txSize := uint64(cmttypes.ComputeProtoSizeForTxs([]cmttypes.Tx{tx.Bytes()})) + txGasLimit, err := tx.GetGasLimit() + if err != nil { + return false + } + + // only add the transaction to the proposal if we have enough capacity + if (txSize + ts.totalTxBytes) <= maxTxBytes { + // If there is a max block gas limit, add the tx only if the limit has + // not been met. + if maxBlockGas > 0 { + if (txGasLimit + ts.totalTxGas) <= maxBlockGas { + ts.totalTxGas += txGasLimit + ts.totalTxBytes += txSize + ts.selectedTxs = append(ts.selectedTxs, tx) + } + } else { + ts.totalTxBytes += txSize + ts.selectedTxs = append(ts.selectedTxs, tx) + } + } + + // check if we've reached capacity; if so, we cannot select any more transactions + return ts.totalTxBytes >= maxTxBytes || (maxBlockGas > 0 && (ts.totalTxGas >= maxBlockGas)) +} diff --git a/server/v2/cometbft/log/logger.go b/server/v2/cometbft/log/logger.go new file mode 100644 index 000000000000..94f5d944e3ad --- /dev/null +++ b/server/v2/cometbft/log/logger.go @@ -0,0 +1,23 @@ +package log + +import ( + cmtlog "github.com/cometbft/cometbft/libs/log" + + "cosmossdk.io/core/log" +) + +var _ cmtlog.Logger = (*CometLoggerWrapper)(nil) + +// CometLoggerWrapper provides a wrapper around a cosmossdk.io/log instance. +// It implements CometBFT's Logger interface. +type CometLoggerWrapper struct { + log.Logger +} + +// With returns a new wrapped logger with additional context provided by a set +// of key/value tuples. The number of tuples must be even and the key of the +// tuple must be a string. +func (cmt CometLoggerWrapper) With(keyVals ...interface{}) cmtlog.Logger { + logger := cmt.Logger.With(keyVals...) + return CometLoggerWrapper{logger} +} diff --git a/server/v2/cometbft/mempool/config.go b/server/v2/cometbft/mempool/config.go new file mode 100644 index 000000000000..38de18844107 --- /dev/null +++ b/server/v2/cometbft/mempool/config.go @@ -0,0 +1,11 @@ +package mempool + +// Config defines the configurations for the SDK built-in app-side mempool +// implementations. +type Config struct { + // MaxTxs defines the behavior of the mempool. A negative value indicates + // the mempool is disabled entirely, zero indicates that the mempool is + // unbounded in how many txs it may contain, and a positive value indicates + // the maximum amount of txs it may contain. + MaxTxs int `mapstructure:"max-txs"` +} diff --git a/server/v2/cometbft/mempool/doc.go b/server/v2/cometbft/mempool/doc.go new file mode 100644 index 000000000000..f9857f3a9fae --- /dev/null +++ b/server/v2/cometbft/mempool/doc.go @@ -0,0 +1,6 @@ +/* +The mempool package defines a few mempool services which can be used in conjunction with your consensus implementation + +*/ + +package mempool diff --git a/server/v2/cometbft/mempool/mempool.go b/server/v2/cometbft/mempool/mempool.go new file mode 100644 index 000000000000..3cb81c871508 --- /dev/null +++ b/server/v2/cometbft/mempool/mempool.go @@ -0,0 +1,41 @@ +package mempool + +import ( + "context" + "errors" + + "cosmossdk.io/core/transaction" +) + +var ( + ErrTxNotFound = errors.New("tx not found in mempool") + ErrMempoolTxMaxCapacity = errors.New("pool reached max tx capacity") +) + +// Mempool defines the required methods of an application's mempool. +type Mempool[T transaction.Tx] interface { + // Insert attempts to insert a Tx into the app-side mempool returning + // an error upon failure. + Insert(context.Context, T) error + + // Select returns an Iterator over the app-side mempool. If txs are specified, + // then they shall be incorporated into the Iterator. The Iterator must be + // closed by the caller. + Select(context.Context, []T) Iterator[T] + + // Remove attempts to remove a transaction from the mempool, returning an error + // upon failure. + Remove([]T) error +} + +// Iterator defines an app-side mempool iterator interface that is as minimal as +// possible. The order of iteration is determined by the app-side mempool +// implementation. +type Iterator[T transaction.Tx] interface { + // Next returns the next transaction from the mempool. If there are no more + // transactions, it returns nil. + Next() Iterator[T] + + // Tx returns the transaction at the current position of the iterator. + Tx() T +} diff --git a/server/v2/cometbft/mempool/noop.go b/server/v2/cometbft/mempool/noop.go new file mode 100644 index 000000000000..86cea55e2c53 --- /dev/null +++ b/server/v2/cometbft/mempool/noop.go @@ -0,0 +1,22 @@ +package mempool + +import ( + "context" + + "cosmossdk.io/core/transaction" +) + +var _ Mempool[transaction.Tx] = (*NoOpMempool[transaction.Tx])(nil) + +// NoOpMempool defines a no-op mempool. Transactions are completely discarded and +// ignored when BaseApp interacts with the mempool. +// +// Note: When this mempool is used, it assumed that an application will rely +// on CometBFT's transaction ordering defined in `RequestPrepareProposal`, which +// is FIFO-ordered by default. +type NoOpMempool[T transaction.Tx] struct{} + +func (NoOpMempool[T]) Insert(context.Context, T) error { return nil } +func (NoOpMempool[T]) Select(context.Context, []T) Iterator[T] { return nil } +func (NoOpMempool[T]) CountTx() int { return 0 } +func (NoOpMempool[T]) Remove([]T) error { return nil } diff --git a/server/v2/cometbft/query.go b/server/v2/cometbft/query.go new file mode 100644 index 000000000000..1f9c1539bdec --- /dev/null +++ b/server/v2/cometbft/query.go @@ -0,0 +1,130 @@ +package cometbft + +import ( + "context" + "strings" + + abci "github.com/cometbft/cometbft/abci/types" + crypto "github.com/cometbft/cometbft/api/cometbft/crypto/v1" + + errorsmod "cosmossdk.io/errors" + "cosmossdk.io/server/v2/cometbft/types" + cometerrors "cosmossdk.io/server/v2/cometbft/types/errors" +) + +func (c *Consensus[T]) handleQueryP2P(path []string) (*abci.QueryResponse, error) { + // "/p2p" prefix for p2p queries + if len(path) < 4 { + return nil, errorsmod.Wrap(cometerrors.ErrUnknownRequest, "path should be p2p filter ") + } + + cmd, typ, arg := path[1], path[2], path[3] + if cmd == "filter" { + if typ == "addr" { + if c.cfg.AddrPeerFilter != nil { + return c.cfg.AddrPeerFilter(arg) + } + } else if typ == "id" { + if c.cfg.IdPeerFilter != nil { + return c.cfg.IdPeerFilter(arg) + } + } + } + + return nil, errorsmod.Wrap(cometerrors.ErrUnknownRequest, "expected second parameter to be 'filter'") +} + +// handlerQueryApp handles the query requests for the application. +// It expects the path parameter to have at least two elements. +// The second element of the path can be either 'simulate' or 'version'. +// If the second element is 'simulate', it decodes the request data into a transaction, +// simulates the transaction using the application, and returns the simulation result. +// If the second element is 'version', it returns the version of the application. +// If the second element is neither 'simulate' nor 'version', it returns an error indicating an unknown query. +func (c *Consensus[T]) handlerQueryApp(ctx context.Context, path []string, req *abci.QueryRequest) (*abci.QueryResponse, error) { + if len(path) < 2 { + return nil, errorsmod.Wrap( + cometerrors.ErrUnknownRequest, + "expected second parameter to be either 'simulate' or 'version', neither was present", + ) + } + + switch path[1] { + case "simulate": + tx, err := c.txCodec.Decode(req.Data) + if err != nil { + return nil, errorsmod.Wrap(err, "failed to decode tx") + } + + txResult, _, err := c.app.Simulate(ctx, tx) + if err != nil { + return nil, errorsmod.Wrap(err, "failed to simulate tx") + } + + bz, err := intoABCISimulationResponse(txResult, c.cfg.IndexEvents) + if err != nil { + return nil, errorsmod.Wrap(err, "failed to marshal txResult") + } + + return &abci.QueryResponse{ + Codespace: cometerrors.RootCodespace, + Value: bz, + Height: req.Height, + }, nil + + case "version": + return &abci.QueryResponse{ + Codespace: cometerrors.RootCodespace, + Value: []byte(c.cfg.Version), + Height: req.Height, + }, nil + } + + return nil, errorsmod.Wrapf(cometerrors.ErrUnknownRequest, "unknown query: %s", path) +} + +func (c *Consensus[T]) handleQueryStore(path []string, _ types.Store, req *abci.QueryRequest) (*abci.QueryResponse, error) { + req.Path = "/" + strings.Join(path[1:], "/") + if req.Height <= 1 && req.Prove { + return nil, errorsmod.Wrap( + cometerrors.ErrInvalidRequest, + "cannot query with proof when height <= 1; please provide a valid height", + ) + } + + // "/store/" for store queries + storeName := path[1] + storeNameBz := []byte(storeName) // TODO fastpath? + qRes, err := c.store.Query(storeNameBz, uint64(req.Height), req.Data, req.Prove) + if err != nil { + return nil, err + } + + res := &abci.QueryResponse{ + Codespace: cometerrors.RootCodespace, + Height: int64(qRes.Version), + Key: qRes.Key, + Value: qRes.Value, + } + + if req.Prove { + for _, proof := range qRes.ProofOps { + bz, err := proof.Proof.Marshal() + if err != nil { + return nil, errorsmod.Wrap(err, "failed to marshal proof") + } + + res.ProofOps = &crypto.ProofOps{ + Ops: []crypto.ProofOp{ + { + Type: proof.Type, + Key: proof.Key, + Data: bz, + }, + }, + } + } + } + + return res, nil +} diff --git a/server/v2/cometbft/server.go b/server/v2/cometbft/server.go new file mode 100644 index 000000000000..dc7346b034f8 --- /dev/null +++ b/server/v2/cometbft/server.go @@ -0,0 +1,225 @@ +package cometbft + +import ( + "context" + "crypto/sha256" + "encoding/json" + "fmt" + + abciserver "github.com/cometbft/cometbft/abci/server" + cmtcmd "github.com/cometbft/cometbft/cmd/cometbft/commands" + cmtcfg "github.com/cometbft/cometbft/config" + "github.com/cometbft/cometbft/node" + "github.com/cometbft/cometbft/p2p" + pvm "github.com/cometbft/cometbft/privval" + "github.com/cometbft/cometbft/proxy" + "github.com/spf13/cobra" + "github.com/spf13/pflag" + + "cosmossdk.io/core/log" + "cosmossdk.io/core/transaction" + serverv2 "cosmossdk.io/server/v2" + "cosmossdk.io/server/v2/appmanager" + "cosmossdk.io/server/v2/cometbft/handlers" + cometlog "cosmossdk.io/server/v2/cometbft/log" + "cosmossdk.io/server/v2/cometbft/mempool" + "cosmossdk.io/server/v2/cometbft/types" + "cosmossdk.io/store/v2/snapshots" + + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" +) + +const ( + flagWithComet = "with-comet" + flagAddress = "address" + flagTransport = "transport" + flagTraceStore = "trace-store" + flagCPUProfile = "cpu-profile" + FlagMinGasPrices = "minimum-gas-prices" + FlagQueryGasLimit = "query-gas-limit" + FlagHaltHeight = "halt-height" + FlagHaltTime = "halt-time" + FlagTrace = "trace" +) + +var _ serverv2.ServerModule = (*CometBFTServer[transaction.Tx])(nil) + +type CometBFTServer[T transaction.Tx] struct { + Node *node.Node + App *Consensus[T] + logger log.Logger + + config Config + cleanupFn func() +} + +// App is an interface that represents an application in the CometBFT server. +// It provides methods to access the app manager, logger, and store. +type App[T transaction.Tx] interface { + GetApp() *appmanager.AppManager[T] + GetLogger() log.Logger + GetStore() types.Store +} + +func NewCometBFTServer[T transaction.Tx]( + app *appmanager.AppManager[T], + store types.Store, + logger log.Logger, + cfg Config, + txCodec transaction.Codec[T], +) *CometBFTServer[T] { + logger = logger.With("module", "cometbft-server") + + // create noop mempool + mempool := mempool.NoOpMempool[T]{} + + // create consensus + consensus := NewConsensus[T](app, mempool, store, cfg, txCodec, logger) + + consensus.SetPrepareProposalHandler(handlers.NoOpPrepareProposal[T]()) + consensus.SetProcessProposalHandler(handlers.NoOpProcessProposal[T]()) + consensus.SetVerifyVoteExtension(handlers.NoOpVerifyVoteExtensionHandler()) + consensus.SetExtendVoteExtension(handlers.NoOpExtendVote()) + + // TODO: set these; what is the appropriate presence of the Store interface here? + var ss snapshots.StorageSnapshotter + var sc snapshots.CommitSnapshotter + + snapshotStore, err := GetSnapshotStore(cfg.CmtConfig.RootDir) + if err != nil { + panic(err) + } + + sm := snapshots.NewManager(snapshotStore, snapshots.SnapshotOptions{}, sc, ss, nil, logger) // TODO: set options somehow + consensus.SetSnapshotManager(sm) + + return &CometBFTServer[T]{ + logger: logger, + App: consensus, + config: cfg, + } +} + +func (s *CometBFTServer[T]) Name() string { + return "cometbft" +} + +func (s *CometBFTServer[T]) Start(ctx context.Context) error { + wrappedLogger := cometlog.CometLoggerWrapper{Logger: s.logger} + if s.config.Standalone { + svr, err := abciserver.NewServer(s.config.Addr, s.config.Transport, s.App) + if err != nil { + return fmt.Errorf("error creating listener: %w", err) + } + + svr.SetLogger(wrappedLogger) + + return svr.Start() + } + + nodeKey, err := p2p.LoadOrGenNodeKey(s.config.CmtConfig.NodeKeyFile()) + if err != nil { + return err + } + + s.Node, err = node.NewNode( + ctx, + s.config.CmtConfig, + pvm.LoadOrGenFilePV(s.config.CmtConfig.PrivValidatorKeyFile(), s.config.CmtConfig.PrivValidatorStateFile()), + nodeKey, + proxy.NewLocalClientCreator(s.App), + getGenDocProvider(s.config.CmtConfig), + cmtcfg.DefaultDBProvider, + node.DefaultMetricsProvider(s.config.CmtConfig.Instrumentation), + wrappedLogger, + ) + if err != nil { + return err + } + + s.cleanupFn = func() { + if s.Node != nil && s.Node.IsRunning() { + _ = s.Node.Stop() + } + } + + return s.Node.Start() +} + +func (s *CometBFTServer[T]) Stop(_ context.Context) error { + defer s.cleanupFn() + if s.Node != nil { + return s.Node.Stop() + } + return nil +} + +// returns a function which returns the genesis doc from the genesis file. +func getGenDocProvider(cfg *cmtcfg.Config) func() (node.ChecksummedGenesisDoc, error) { + return func() (node.ChecksummedGenesisDoc, error) { + appGenesis, err := genutiltypes.AppGenesisFromFile(cfg.GenesisFile()) + if err != nil { + return node.ChecksummedGenesisDoc{ + Sha256Checksum: []byte{}, + }, err + } + + gen, err := appGenesis.ToGenesisDoc() + if err != nil { + return node.ChecksummedGenesisDoc{ + Sha256Checksum: []byte{}, + }, err + } + genbz, err := gen.AppState.MarshalJSON() + if err != nil { + return node.ChecksummedGenesisDoc{ + Sha256Checksum: []byte{}, + }, err + } + + bz, err := json.Marshal(genbz) + if err != nil { + return node.ChecksummedGenesisDoc{ + Sha256Checksum: []byte{}, + }, err + } + sum := sha256.Sum256(bz) + + return node.ChecksummedGenesisDoc{ + GenesisDoc: gen, + Sha256Checksum: sum[:], + }, nil + } +} + +func (s *CometBFTServer[T]) StartCmdFlags() pflag.FlagSet { + flags := *pflag.NewFlagSet("cometbft", pflag.ExitOnError) + flags.Bool(flagWithComet, true, "Run abci app embedded in-process with CometBFT") + flags.String(flagAddress, "tcp://127.0.0.1:26658", "Listen address") + flags.String(flagTransport, "socket", "Transport protocol: socket, grpc") + flags.String(flagTraceStore, "", "Enable KVStore tracing to an output file") + flags.String(FlagMinGasPrices, "", "Minimum gas prices to accept for transactions; Any fee in a tx must meet this minimum (e.g. 0.01photino;0.0001stake)") + flags.Uint64(FlagQueryGasLimit, 0, "Maximum gas a Rest/Grpc query can consume. Blank and 0 imply unbounded.") + flags.Uint64(FlagHaltHeight, 0, "Block height at which to gracefully halt the chain and shutdown the node") + flags.Uint64(FlagHaltTime, 0, "Minimum block time (in Unix seconds) at which to gracefully halt the chain and shutdown the node") + flags.String(flagCPUProfile, "", "Enable CPU profiling and write to the provided file") + flags.Bool(FlagTrace, false, "Provide full stack traces for errors in ABCI Log") + return flags +} + +func (s *CometBFTServer[T]) CLICommands() serverv2.CLIConfig { + return serverv2.CLIConfig{ + Commands: []*cobra.Command{ + s.StatusCommand(), + s.ShowNodeIDCmd(), + s.ShowValidatorCmd(), + s.ShowAddressCmd(), + s.VersionCmd(), + s.QueryBlockCmd(), + s.QueryBlocksCmd(), + s.QueryBlockResultsCmd(), + cmtcmd.ResetAllCmd, + cmtcmd.ResetStateCmd, + }, + } +} diff --git a/server/v2/cometbft/service.go b/server/v2/cometbft/service.go new file mode 100644 index 000000000000..cf2a17bf22eb --- /dev/null +++ b/server/v2/cometbft/service.go @@ -0,0 +1,70 @@ +package cometbft + +import ( + "context" + + abci "github.com/cometbft/cometbft/api/cometbft/abci/v1" + + "cosmossdk.io/core/comet" + corecontext "cosmossdk.io/core/context" +) + +func contextWithCometInfo(ctx context.Context, info comet.Info) context.Context { + return context.WithValue(ctx, corecontext.CometInfoKey, info) +} + +// toCoreEvidence takes comet evidence and returns sdk evidence +func toCoreEvidence(ev []abci.Misbehavior) []comet.Evidence { + evidence := make([]comet.Evidence, len(ev)) + for i, e := range ev { + evidence[i] = comet.Evidence{ + Type: comet.MisbehaviorType(e.Type), + Height: e.Height, + Time: e.Time, + TotalVotingPower: e.TotalVotingPower, + Validator: comet.Validator{ + Address: e.Validator.Address, + Power: e.Validator.Power, + }, + } + } + return evidence +} + +// toCoreCommitInfo takes comet commit info and returns sdk commit info +func toCoreCommitInfo(commit abci.CommitInfo) comet.CommitInfo { + ci := comet.CommitInfo{ + Round: commit.Round, + } + + for _, v := range commit.Votes { + ci.Votes = append(ci.Votes, comet.VoteInfo{ + Validator: comet.Validator{ + Address: v.Validator.Address, + Power: v.Validator.Power, + }, + BlockIDFlag: comet.BlockIDFlag(v.BlockIdFlag), + }) + } + return ci +} + +// toCoreExtendedCommitInfo takes comet extended commit info and returns sdk commit info +func toCoreExtendedCommitInfo(commit abci.ExtendedCommitInfo) comet.CommitInfo { + ci := comet.CommitInfo{ + Round: commit.Round, + Votes: make([]comet.VoteInfo, len(commit.Votes)), + } + + for i, v := range commit.Votes { + ci.Votes[i] = comet.VoteInfo{ + Validator: comet.Validator{ + Address: v.Validator.Address, + Power: v.Validator.Power, + }, + BlockIDFlag: comet.BlockIDFlag(v.BlockIdFlag), + } + } + + return ci +} diff --git a/server/v2/cometbft/snapshots.go b/server/v2/cometbft/snapshots.go new file mode 100644 index 000000000000..dc68bab39752 --- /dev/null +++ b/server/v2/cometbft/snapshots.go @@ -0,0 +1,192 @@ +package cometbft + +import ( + "context" + "errors" + "fmt" + "os" + "path/filepath" + + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cosmos/gogoproto/proto" + + "cosmossdk.io/store/v2/snapshots" + snapshottypes "cosmossdk.io/store/v2/snapshots/types" +) + +// GetSnapshotStore returns a snapshot store for the given application options. +// It creates a directory for storing snapshots if it doesn't exist. +// It initializes a GoLevelDB database for storing metadata of the snapshots. +// The snapshot store is then created using the initialized database and directory. +// If any error occurs during the process, it is returned along with a nil snapshot store. +func GetSnapshotStore(rootDir string) (*snapshots.Store, error) { + snapshotDir := filepath.Join(rootDir, "data", "snapshots") + if err := os.MkdirAll(snapshotDir, 0o750); err != nil { + return nil, fmt.Errorf("failed to create snapshots directory: %w", err) + } + + snapshotStore, err := snapshots.NewStore(snapshotDir) + if err != nil { + return nil, err + } + + return snapshotStore, nil +} + +// ApplySnapshotChunk implements types.Application. +func (c *Consensus[T]) ApplySnapshotChunk(_ context.Context, req *abci.ApplySnapshotChunkRequest) (*abci.ApplySnapshotChunkResponse, error) { + if c.snapshotManager == nil { + c.logger.Error("snapshot manager not configured") + return &abci.ApplySnapshotChunkResponse{Result: abci.APPLY_SNAPSHOT_CHUNK_RESULT_ABORT}, nil + } + + _, err := c.snapshotManager.RestoreChunk(req.Chunk) + switch { + case err == nil: + return &abci.ApplySnapshotChunkResponse{Result: abci.APPLY_SNAPSHOT_CHUNK_RESULT_ACCEPT}, nil + + case errors.Is(err, snapshottypes.ErrChunkHashMismatch): + c.logger.Error( + "chunk checksum mismatch; rejecting sender and requesting refetch", + "chunk", req.Index, + "sender", req.Sender, + "err", err, + ) + return &abci.ApplySnapshotChunkResponse{ + Result: abci.APPLY_SNAPSHOT_CHUNK_RESULT_RETRY, + RefetchChunks: []uint32{req.Index}, + RejectSenders: []string{req.Sender}, + }, nil + + default: + c.logger.Error("failed to restore snapshot", "err", err) + return &abci.ApplySnapshotChunkResponse{Result: abci.APPLY_SNAPSHOT_CHUNK_RESULT_ABORT}, nil + } +} + +// ListSnapshots implements types.Application. +func (c *Consensus[T]) ListSnapshots(_ context.Context, ctx *abci.ListSnapshotsRequest) (*abci.ListSnapshotsResponse, error) { + if c.snapshotManager == nil { + return nil, nil + } + + snapshots, err := c.snapshotManager.List() + if err != nil { + c.logger.Error("failed to list snapshots", "err", err) + return nil, err + } + + resp := &abci.ListSnapshotsResponse{} + for _, snapshot := range snapshots { + abciSnapshot, err := snapshotToABCI(snapshot) + if err != nil { + c.logger.Error("failed to convert ABCI snapshots", "err", err) + return nil, err + } + + resp.Snapshots = append(resp.Snapshots, &abciSnapshot) + } + + return resp, nil +} + +// LoadSnapshotChunk implements types.Application. +func (c *Consensus[T]) LoadSnapshotChunk(_ context.Context, req *abci.LoadSnapshotChunkRequest) (*abci.LoadSnapshotChunkResponse, error) { + if c.snapshotManager == nil { + return &abci.LoadSnapshotChunkResponse{}, nil + } + + chunk, err := c.snapshotManager.LoadChunk(req.Height, req.Format, req.Chunk) + if err != nil { + c.logger.Error( + "failed to load snapshot chunk", + "height", req.Height, + "format", req.Format, + "chunk", req.Chunk, + "err", err, + ) + return nil, err + } + + return &abci.LoadSnapshotChunkResponse{Chunk: chunk}, nil +} + +// OfferSnapshot implements types.Application. +func (c *Consensus[T]) OfferSnapshot(_ context.Context, req *abci.OfferSnapshotRequest) (*abci.OfferSnapshotResponse, error) { + if c.snapshotManager == nil { + c.logger.Error("snapshot manager not configured") + return &abci.OfferSnapshotResponse{Result: abci.OFFER_SNAPSHOT_RESULT_ABORT}, nil + } + + if req.Snapshot == nil { + c.logger.Error("received nil snapshot") + return &abci.OfferSnapshotResponse{Result: abci.OFFER_SNAPSHOT_RESULT_REJECT}, nil + } + + snapshot, err := snapshotFromABCI(req.Snapshot) + if err != nil { + c.logger.Error("failed to decode snapshot metadata", "err", err) + return &abci.OfferSnapshotResponse{Result: abci.OFFER_SNAPSHOT_RESULT_REJECT}, nil + } + + err = c.snapshotManager.Restore(snapshot) + switch { + case err == nil: + return &abci.OfferSnapshotResponse{Result: abci.OFFER_SNAPSHOT_RESULT_ACCEPT}, nil + + case errors.Is(err, snapshottypes.ErrUnknownFormat): + return &abci.OfferSnapshotResponse{Result: abci.OFFER_SNAPSHOT_RESULT_REJECT_FORMAT}, nil + + case errors.Is(err, snapshottypes.ErrInvalidMetadata): + c.logger.Error( + "rejecting invalid snapshot", + "height", req.Snapshot.Height, + "format", req.Snapshot.Format, + "err", err, + ) + return &abci.OfferSnapshotResponse{Result: abci.OFFER_SNAPSHOT_RESULT_REJECT}, nil + + default: + c.logger.Error( + "failed to restore snapshot", + "height", req.Snapshot.Height, + "format", req.Snapshot.Format, + "err", err, + ) + + // We currently don't support resetting the IAVL stores and retrying a + // different snapshot, so we ask CometBFT to abort all snapshot restoration. + return &abci.OfferSnapshotResponse{Result: abci.OFFER_SNAPSHOT_RESULT_ABORT}, nil + } +} + +// Converts an ABCI snapshot to a snapshot. Mainly to decode the SDK metadata. +func snapshotFromABCI(in *abci.Snapshot) (snapshottypes.Snapshot, error) { + snapshot := snapshottypes.Snapshot{ + Height: in.Height, + Format: in.Format, + Chunks: in.Chunks, + Hash: in.Hash, + } + err := proto.Unmarshal(in.Metadata, &snapshot.Metadata) + if err != nil { + return snapshottypes.Snapshot{}, fmt.Errorf("failed to unmarshal snapshot metadata: %w", err) + } + return snapshot, nil +} + +// Converts a Snapshot to its ABCI representation. Mainly to encode the SDK metadata. +func snapshotToABCI(s *snapshottypes.Snapshot) (abci.Snapshot, error) { + out := abci.Snapshot{ + Height: s.Height, + Format: s.Format, + Chunks: s.Chunks, + Hash: s.Hash, + } + var err error + out.Metadata, err = proto.Marshal(&s.Metadata) + if err != nil { + return abci.Snapshot{}, fmt.Errorf("failed to marshal snapshot metadata: %w", err) + } + return out, nil +} diff --git a/server/v2/cometbft/streaming.go b/server/v2/cometbft/streaming.go new file mode 100644 index 000000000000..1ac9991b9ffa --- /dev/null +++ b/server/v2/cometbft/streaming.go @@ -0,0 +1,77 @@ +package cometbft + +import ( + "context" + + coreappmgr "cosmossdk.io/core/app" + "cosmossdk.io/core/event" + "cosmossdk.io/core/store" + "cosmossdk.io/server/v2/streaming" +) + +// streamDeliverBlockChanges will stream all the changes happened during deliver block. +func (c *Consensus[T]) streamDeliverBlockChanges( + ctx context.Context, + height int64, + txs [][]byte, + txResults []coreappmgr.TxResult, + events []event.Event, + stateChanges []store.StateChanges, +) error { + // convert txresults to streaming txresults + streamingTxResults := make([]*streaming.ExecTxResult, len(txResults)) + for i, txResult := range txResults { + streamingTxResults[i] = &streaming.ExecTxResult{ + Code: txResult.Code, + Data: txResult.Data, + Log: txResult.Log, + Info: txResult.Info, + GasWanted: uint64ToInt64(txResult.GasWanted), + GasUsed: uint64ToInt64(txResult.GasUsed), + Events: streaming.IntoStreamingEvents(txResult.Events), + Codespace: txResult.Codespace, + } + } + + for _, streamingListener := range c.streaming.Listeners { + if err := streamingListener.ListenDeliverBlock(ctx, streaming.ListenDeliverBlockRequest{ + BlockHeight: height, + Txs: txs, + TxResults: streamingTxResults, + Events: streaming.IntoStreamingEvents(events), + }); err != nil { + c.logger.Error("ListenDeliverBlock listening hook failed", "height", height, "err", err) + } + + if err := streamingListener.ListenStateChanges(ctx, intoStreamingKVPairs(stateChanges)); err != nil { + c.logger.Error("ListenStateChanges listening hook failed", "height", height, "err", err) + } + } + return nil +} + +func intoStreamingKVPairs(stateChanges []store.StateChanges) []*streaming.StoreKVPair { + // Calculate the total number of KV pairs to preallocate the slice with the required capacity. + totalKvPairs := 0 + for _, accounts := range stateChanges { + totalKvPairs += len(accounts.StateChanges) + } + + // Preallocate the slice with the required capacity. + streamKvPairs := make([]*streaming.StoreKVPair, 0, totalKvPairs) + + for _, accounts := range stateChanges { + // Reducing the scope of address variable. + address := accounts.Actor + + for _, kv := range accounts.StateChanges { + streamKvPairs = append(streamKvPairs, &streaming.StoreKVPair{ + Address: address, + Key: kv.Key, + Value: kv.Value, + Delete: kv.Remove, + }) + } + } + return streamKvPairs +} diff --git a/server/v2/cometbft/types/errors/errors.go b/server/v2/cometbft/types/errors/errors.go new file mode 100644 index 000000000000..380c176ff306 --- /dev/null +++ b/server/v2/cometbft/types/errors/errors.go @@ -0,0 +1,17 @@ +package errors + +import ( + errorsmod "cosmossdk.io/errors" +) + +// RootCodespace is the codespace for all errors defined in this package +const RootCodespace = "cometbft-sdk" + +var ( + // ErrUnknownRequest to doc + ErrUnknownRequest = errorsmod.Register(RootCodespace, 1, "unknown request") + + // ErrInvalidRequest defines an ABCI typed error where the request contains + // invalid data. + ErrInvalidRequest = errorsmod.Register(RootCodespace, 2, "invalid request") +) diff --git a/server/v2/cometbft/types/peer.go b/server/v2/cometbft/types/peer.go new file mode 100644 index 000000000000..1ebc9b03c78d --- /dev/null +++ b/server/v2/cometbft/types/peer.go @@ -0,0 +1,6 @@ +package types + +import abci "github.com/cometbft/cometbft/abci/types" + +// PeerFilter responds to p2p filtering queries from Tendermint +type PeerFilter func(info string) (*abci.QueryResponse, error) diff --git a/server/v2/cometbft/types/store.go b/server/v2/cometbft/types/store.go new file mode 100644 index 000000000000..dbbd8f313eff --- /dev/null +++ b/server/v2/cometbft/types/store.go @@ -0,0 +1,32 @@ +package types + +import ( + "cosmossdk.io/core/store" + storev2 "cosmossdk.io/store/v2" + "cosmossdk.io/store/v2/proof" +) + +type Store interface { + // GetLatestVersion returns the latest version that consensus has been made on + GetLatestVersion() (uint64, error) + // StateLatest returns a readonly view over the latest + // committed state of the store. Alongside the version + // associated with it. + StateLatest() (uint64, store.ReaderMap, error) + + // Commit commits the provided changeset and returns + // the new state root of the state. + Commit(*store.Changeset) (store.Hash, error) + + // Query is a key/value query directly to the underlying database. This skips the appmanager + Query(storeKey []byte, version uint64, key []byte, prove bool) (storev2.QueryResult, error) + + // LastCommitID returns a CommitID pertaining to the last commitment. + LastCommitID() (proof.CommitID, error) + + // GetStateStorage returns the SS backend. + GetStateStorage() storev2.VersionedDatabase + + // GetStateCommitment returns the SC backend. + GetStateCommitment() storev2.Committer +} diff --git a/server/v2/cometbft/types/vote.go b/server/v2/cometbft/types/vote.go new file mode 100644 index 000000000000..aeb3b9b8f150 --- /dev/null +++ b/server/v2/cometbft/types/vote.go @@ -0,0 +1,13 @@ +package types + +import ( + "context" + + abci "github.com/cometbft/cometbft/abci/types" +) + +// VoteExtensionsHandler defines how to implement vote extension handlers +type VoteExtensionsHandler interface { + ExtendVote(context.Context, *abci.ExtendVoteRequest) (*abci.ExtendVoteResponse, error) + VerifyVoteExtension(context.Context, *abci.VerifyVoteExtensionRequest) (*abci.VerifyVoteExtensionResponse, error) +} diff --git a/server/v2/cometbft/utils.go b/server/v2/cometbft/utils.go new file mode 100644 index 000000000000..8c21cbd454aa --- /dev/null +++ b/server/v2/cometbft/utils.go @@ -0,0 +1,414 @@ +package cometbft + +import ( + "context" + "fmt" + "math" + "strings" + "time" + + abciv1 "buf.build/gen/go/cometbft/cometbft/protocolbuffers/go/cometbft/abci/v1" + abci "github.com/cometbft/cometbft/abci/types" + 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/protobuf/encoding/protojson" + "google.golang.org/protobuf/types/known/anypb" + + v1beta1 "cosmossdk.io/api/cosmos/base/abci/v1beta1" + appmanager "cosmossdk.io/core/app" + appmodulev2 "cosmossdk.io/core/appmodule/v2" + "cosmossdk.io/core/comet" + "cosmossdk.io/core/event" + "cosmossdk.io/core/transaction" + errorsmod "cosmossdk.io/errors" + consensus "cosmossdk.io/x/consensus/types" +) + +func queryResponse(res transaction.Msg) (*abci.QueryResponse, error) { + // TODO(kocu): we are tightly coupled go gogoproto here, is this problem? + bz, err := gogoproto.Marshal(res) + if err != nil { + return nil, err + } + + // TODO: how do I reply? I suppose we need to different replies depending of the query + return &abci.QueryResponse{ + Code: 0, + Log: "", + Info: "", + Index: 0, + Key: []byte{}, + Value: bz, + // ProofOps: &cmtcrypto.ProofOps{}, + Height: 0, + Codespace: "", + }, nil +} + +// responseExecTxResultWithEvents returns an ABCI ExecTxResult object with fields +// filled in from the given error, gas values and events. +func responseExecTxResultWithEvents(err error, gw, gu uint64, events []abci.Event, debug bool) *abci.ExecTxResult { + space, code, log := errorsmod.ABCIInfo(err, debug) + return &abci.ExecTxResult{ + Codespace: space, + Code: code, + Log: log, + GasWanted: int64(gw), + GasUsed: int64(gu), + Events: events, + } +} + +// splitABCIQueryPath splits a string path using the delimiter '/'. +// +// e.g. "this/is/funny" becomes []string{"this", "is", "funny"} +func splitABCIQueryPath(requestPath string) (path []string) { + path = strings.Split(requestPath, "/") + + // first element is empty string + if len(path) > 0 && path[0] == "" { + path = path[1:] + } + + return path +} + +func finalizeBlockResponse( + in *appmanager.BlockResponse, + cp *cmtproto.ConsensusParams, + appHash []byte, + indexSet map[string]struct{}, +) (*abci.FinalizeBlockResponse, error) { + allEvents := append(in.BeginBlockEvents, in.EndBlockEvents...) + + resp := &abci.FinalizeBlockResponse{ + Events: intoABCIEvents(allEvents, indexSet), + TxResults: intoABCITxResults(in.TxResults, indexSet), + ValidatorUpdates: intoABCIValidatorUpdates(in.ValidatorUpdates), + AppHash: appHash, + ConsensusParamUpdates: cp, + } + return resp, nil +} + +func intoABCIValidatorUpdates(updates []appmodulev2.ValidatorUpdate) []abci.ValidatorUpdate { + valsetUpdates := make([]abci.ValidatorUpdate, len(updates)) + + for i, v := range updates { + valsetUpdates[i] = abci.ValidatorUpdate{ + PubKeyBytes: v.PubKey, + PubKeyType: v.PubKeyType, + Power: v.Power, + } + } + + return valsetUpdates +} + +func intoABCITxResults(results []appmanager.TxResult, indexSet map[string]struct{}) []*abci.ExecTxResult { + res := make([]*abci.ExecTxResult, len(results)) + for i := range results { + if results[i].Error == nil { + res[i] = responseExecTxResultWithEvents( + results[i].Error, + results[i].GasWanted, + results[i].GasUsed, + intoABCIEvents(results[i].Events, indexSet), + false, + ) + continue + } + + // TODO: handle properly once the we decide on the type of TxResult.Resp + } + + return res +} + +func intoABCIEvents(events []event.Event, indexSet map[string]struct{}) []abci.Event { + indexAll := len(indexSet) == 0 + abciEvents := make([]abci.Event, len(events)) + for i, e := range events { + abciEvents[i] = abci.Event{ + Type: e.Type, + Attributes: make([]abci.EventAttribute, len(e.Attributes)), + } + + for j, attr := range e.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, + } + } + } + return abciEvents +} + +func intoABCISimulationResponse(txRes appmanager.TxResult, indexSet map[string]struct{}) ([]byte, error) { + indexAll := len(indexSet) == 0 + abciEvents := make([]*abciv1.Event, len(txRes.Events)) + for i, e := range txRes.Events { + abciEvents[i] = &abciv1.Event{ + Type: e.Type, + Attributes: make([]*abciv1.EventAttribute, len(e.Attributes)), + } + + for j, attr := range e.Attributes { + _, index := indexSet[fmt.Sprintf("%s.%s", e.Type, attr.Key)] + abciEvents[i].Attributes[j] = &abciv1.EventAttribute{ + Key: attr.Key, + Value: attr.Value, + Index: index || indexAll, + } + } + } + + msgResponses := make([]*anypb.Any, len(txRes.Resp)) + for i, resp := range txRes.Resp { + // use this hack to maintain the protov2 API here for now + anyMsg, err := gogoany.NewAnyWithCacheWithValue(resp) + if err != nil { + return nil, err + } + msgResponses[i] = &anypb.Any{TypeUrl: anyMsg.TypeUrl, Value: anyMsg.Value} + } + + res := &v1beta1.SimulationResponse{ + GasInfo: &v1beta1.GasInfo{ + GasWanted: txRes.GasWanted, + GasUsed: txRes.GasUsed, + }, + Result: &v1beta1.Result{ + Data: []byte{}, + Log: txRes.Error.Error(), + Events: abciEvents, + MsgResponses: msgResponses, + }, + } + + return protojson.Marshal(res) +} + +// ToSDKEvidence takes comet evidence and returns sdk evidence +func ToSDKEvidence(ev []abci.Misbehavior) []*comet.Evidence { + evidence := make([]*comet.Evidence, len(ev)) + for i, e := range ev { + evidence[i] = &comet.Evidence{ + Type: comet.MisbehaviorType(e.Type), + Height: e.Height, + Time: e.Time, + TotalVotingPower: e.TotalVotingPower, + Validator: comet.Validator{ + Address: e.Validator.Address, + Power: e.Validator.Power, + }, + } + } + return evidence +} + +// ToSDKDecidedCommitInfo takes comet commit info and returns sdk commit info +func ToSDKCommitInfo(commit abci.CommitInfo) *comet.CommitInfo { + ci := comet.CommitInfo{ + Round: commit.Round, + } + + for _, v := range commit.Votes { + ci.Votes = append(ci.Votes, comet.VoteInfo{ + Validator: comet.Validator{ + Address: v.Validator.Address, + Power: v.Validator.Power, + }, + BlockIDFlag: comet.BlockIDFlag(v.BlockIdFlag), + }) + } + return &ci +} + +// ToSDKExtendedCommitInfo takes comet extended commit info and returns sdk commit info +func ToSDKExtendedCommitInfo(commit abci.ExtendedCommitInfo) comet.CommitInfo { + ci := comet.CommitInfo{ + Round: commit.Round, + } + + for _, v := range commit.Votes { + ci.Votes = append(ci.Votes, comet.VoteInfo{ + Validator: comet.Validator{ + Address: v.Validator.Address, + Power: v.Validator.Power, + }, + BlockIDFlag: comet.BlockIDFlag(v.BlockIdFlag), + }) + } + + 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 { + space, code, log := errorsmod.ABCIInfo(err, debug) + return &abci.QueryResponse{ + Codespace: space, + Code: code, + Log: log, + } +} + +func (c *Consensus[T]) validateFinalizeBlockHeight(req *abci.FinalizeBlockRequest) error { + if req.Height < 1 { + return fmt.Errorf("invalid height: %d", req.Height) + } + + lastBlockHeight, _, err := c.store.StateLatest() + if err != nil { + return err + } + + // expectedHeight holds the expected height to validate + var expectedHeight uint64 + if lastBlockHeight == 0 && c.cfg.InitialHeight > 1 { + // In this case, we're validating the first block of the chain, i.e no + // previous commit. The height we're expecting is the initial height. + expectedHeight = c.cfg.InitialHeight + } else { + // This case can mean two things: + // + // - Either there was already a previous commit in the store, in which + // case we increment the version from there. + // - Or there was no previous commit, in which case we start at version 1. + expectedHeight = lastBlockHeight + 1 + } + + if req.Height != int64(expectedHeight) { + return fmt.Errorf("invalid height: %d; expected: %d", req.Height, expectedHeight) + } + + return nil +} + +// GetConsensusParams makes a query to the consensus module in order to get the latest consensus +// parameters from committed state +func (c *Consensus[T]) GetConsensusParams(ctx context.Context) (*cmtproto.ConsensusParams, error) { + latestVersion, err := c.store.GetLatestVersion() + if err != nil { + return nil, err + } + + res, err := c.app.Query(ctx, latestVersion, &consensus.QueryParamsRequest{}) + if err != nil { + return nil, err + } + + if r, ok := res.(*consensus.QueryParamsResponse); !ok { + return nil, fmt.Errorf("failed to query consensus params") + } else { + // convert our params to cometbft params + evidenceMaxDuration := r.Params.Evidence.MaxAgeDuration + cs := &cmtproto.ConsensusParams{ + Block: &cmtproto.BlockParams{ + MaxBytes: r.Params.Block.MaxBytes, + MaxGas: r.Params.Block.MaxGas, + }, + Evidence: &cmtproto.EvidenceParams{ + MaxAgeNumBlocks: r.Params.Evidence.MaxAgeNumBlocks, + MaxAgeDuration: evidenceMaxDuration, + }, + Validator: &cmtproto.ValidatorParams{ + PubKeyTypes: r.Params.Validator.PubKeyTypes, + }, + Version: &cmtproto.VersionParams{ + App: r.Params.Version.App, + }, + } + if r.Params.Abci != nil { + cs.Abci = &cmtproto.ABCIParams{ // nolint:staticcheck // deprecated type still supported for now + VoteExtensionsEnableHeight: r.Params.Abci.VoteExtensionsEnableHeight, + } + } + return cs, nil + } +} + +func (c *Consensus[T]) GetBlockRetentionHeight(cp *cmtproto.ConsensusParams, commitHeight int64) int64 { + // pruning is disabled if minRetainBlocks is zero + if c.cfg.MinRetainBlocks == 0 { + return 0 + } + + minNonZero := func(x, y int64) int64 { + switch { + case x == 0: + return y + + case y == 0: + return x + + case x < y: + return x + + default: + return y + } + } + + // Define retentionHeight as the minimum value that satisfies all non-zero + // constraints. All blocks below (commitHeight-retentionHeight) are pruned + // from CometBFT. + var retentionHeight int64 + + // Define the number of blocks needed to protect against misbehaving validators + // which allows light clients to operate safely. Note, we piggy back of the + // evidence parameters instead of computing an estimated number of blocks based + // on the unbonding period and block commitment time as the two should be + // equivalent. + if cp.Evidence != nil && cp.Evidence.MaxAgeNumBlocks > 0 { + retentionHeight = commitHeight - cp.Evidence.MaxAgeNumBlocks + } + + if c.snapshotManager != nil { + snapshotRetentionHeights := c.snapshotManager.GetSnapshotBlockRetentionHeights() + if snapshotRetentionHeights > 0 { + retentionHeight = minNonZero(retentionHeight, commitHeight-snapshotRetentionHeights) + } + } + + v := commitHeight - int64(c.cfg.MinRetainBlocks) + retentionHeight = minNonZero(retentionHeight, v) + + if retentionHeight <= 0 { + // prune nothing in the case of a non-positive height + return 0 + } + + return retentionHeight +} + +// checkHalt checks if height or time exceeds halt-height or halt-time respectively. +func (c *Consensus[T]) checkHalt(height int64, time time.Time) error { + var halt bool + switch { + case c.cfg.HaltHeight > 0 && uint64(height) > c.cfg.HaltHeight: + halt = true + + case c.cfg.HaltTime > 0 && time.Unix() > int64(c.cfg.HaltTime): + halt = true + } + + if halt { + return fmt.Errorf("halt per configuration height %d time %d", c.cfg.HaltHeight, c.cfg.HaltTime) + } + + return nil +} + +// uint64ToInt64 converts a uint64 to an int64, returning math.MaxInt64 if the uint64 is too large. +func uint64ToInt64(u uint64) int64 { + if u > uint64(math.MaxInt64) { + return math.MaxInt64 + } + return int64(u) +} diff --git a/tools/cosmovisor/go.mod b/tools/cosmovisor/go.mod index babf91700310..a55f77f1990a 100644 --- a/tools/cosmovisor/go.mod +++ b/tools/cosmovisor/go.mod @@ -6,7 +6,9 @@ require ( cosmossdk.io/log v1.3.1 cosmossdk.io/x/upgrade v0.1.2 github.com/otiai10/copy v1.14.0 + github.com/pelletier/go-toml/v2 v2.2.2 github.com/spf13/cobra v1.8.0 + github.com/spf13/viper v1.18.2 github.com/stretchr/testify v1.9.0 ) @@ -125,7 +127,6 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/petermattis/goid v0.0.0-20240327183114-c42a807a84ba // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -144,7 +145,6 @@ require ( github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.18.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect From fa371f5e23bb59a0955696809c54beac6ccd82e7 Mon Sep 17 00:00:00 2001 From: SuiYuan <165623542+suiyuan1314@users.noreply.github.com> Date: Fri, 31 May 2024 16:18:30 +0800 Subject: [PATCH 08/16] chore: fix the note box syntax error (#20499) --- docs/README.md | 2 +- x/protocolpool/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 7c0340e19843..e8f1f8803e71 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,6 @@ # Updating the docs -::note +:::note The documentation is built from [cosmos-sdk-docs repo](https://github.com/cosmos/cosmos-sdk-docs) and is hosted on [docs.cosmos.network](https://docs.cosmos.network). ::: diff --git a/x/protocolpool/README.md b/x/protocolpool/README.md index 85a504f487b3..fa6be0fd56e9 100644 --- a/x/protocolpool/README.md +++ b/x/protocolpool/README.md @@ -82,7 +82,7 @@ This message sends coins directly from the sender to the community pool. :::tip If you know the protocolpool module account address, you can directly use bank `send` transaction instead. -:::: +::: ```protobuf reference https://github.com/cosmos/cosmos-sdk/blob/97724493d792517ba2be8969078b5f92ad04d79c/proto/cosmos/protocolpool/v1/tx.proto#L32-L42 From b13e5cb2ed578aaab4d6dfdf74cc1e01db074856 Mon Sep 17 00:00:00 2001 From: veth <162897869+VitalikButerinEth@users.noreply.github.com> Date: Fri, 31 May 2024 16:21:18 +0800 Subject: [PATCH 09/16] chore: fix comment (#20498) Signed-off-by: VitalikButerinEth --- x/auth/vesting/types/period.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/auth/vesting/types/period.go b/x/auth/vesting/types/period.go index 6bf7bffcceeb..174bd3437a1e 100644 --- a/x/auth/vesting/types/period.go +++ b/x/auth/vesting/types/period.go @@ -31,7 +31,7 @@ func (p Periods) TotalDuration() time.Duration { return time.Duration(len) * time.Second } -// TotalDuration returns the sum of coins for the period +// TotalAmount returns the sum of coins for the period func (p Periods) TotalAmount() sdk.Coins { total := sdk.Coins{} for _, period := range p { From 0256369851b636b641247152ef4177089e2c359e Mon Sep 17 00:00:00 2001 From: Mark Rushakoff Date: Fri, 31 May 2024 04:51:08 -0400 Subject: [PATCH 10/16] fix: wrap errors in auto CLI service registration (#20493) Co-authored-by: Marko --- runtime/v2/services/autocli.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/runtime/v2/services/autocli.go b/runtime/v2/services/autocli.go index 281d9f8c0301..85aeb20b702d 100644 --- a/runtime/v2/services/autocli.go +++ b/runtime/v2/services/autocli.go @@ -2,6 +2,7 @@ package services import ( "context" + "fmt" "github.com/cosmos/gogoproto/proto" "google.golang.org/grpc" @@ -104,11 +105,16 @@ type autocliRegistrar struct { func (a *autocliRegistrar) RegisterService(sd *grpc.ServiceDesc, ss interface{}) { if a.registryCache == nil { a.registryCache, a.err = proto.MergedRegistry() + if a.err != nil { + a.err = fmt.Errorf("failed to build registry cache: %w", a.err) + return + } } - desc, err := a.registryCache.FindDescriptorByName(protoreflect.FullName(sd.ServiceName)) + fullName := protoreflect.FullName(sd.ServiceName) + desc, err := a.registryCache.FindDescriptorByName(fullName) if err != nil { - a.err = err + a.err = fmt.Errorf("failed to find descriptor for %q: %w", fullName, err) return } From a6857962c541d98195c4dee657295b013f136caa Mon Sep 17 00:00:00 2001 From: Alexander Peters Date: Fri, 31 May 2024 10:51:41 +0200 Subject: [PATCH 11/16] chore: Address linter issues (#20486) --- Makefile | 2 +- core/context/context.go | 6 +- .../client/grpc/cmtservice/query.pb.go | 149 ++++++++++++++++-- .../client/grpc/cmtservice/query.pb.gw.go | 57 ++----- .../client/grpc/cmtservice/types.pb.go | 33 +++- types/address.go | 18 +-- x/gov/types/v1/proposal.go | 4 +- x/gov/types/v1/vote.go | 4 +- x/gov/types/v1beta1/proposal.go | 4 +- x/gov/types/v1beta1/vote.go | 4 +- x/group/keeper/keeper.go | 3 - 11 files changed, 196 insertions(+), 88 deletions(-) diff --git a/Makefile b/Makefile index 2131edb3025e..6746e56e94a2 100644 --- a/Makefile +++ b/Makefile @@ -395,7 +395,7 @@ benchmark: ### Linting ### ############################################################################### -golangci_version=v1.56.2 +golangci_version=v1.59.0 #? setup-pre-commit: Set pre-commit git hook setup-pre-commit: diff --git a/core/context/context.go b/core/context/context.go index 5fcccefc3b95..814917233412 100644 --- a/core/context/context.go +++ b/core/context/context.go @@ -1,6 +1,8 @@ package context +type contextKey uint8 + const ( - ExecModeKey = iota - CometInfoKey + ExecModeKey contextKey = iota + CometInfoKey contextKey = iota ) diff --git a/server/v2/cometbft/client/grpc/cmtservice/query.pb.go b/server/v2/cometbft/client/grpc/cmtservice/query.pb.go index 3d8a4e74d234..29d9a43d94e7 100644 --- a/server/v2/cometbft/client/grpc/cmtservice/query.pb.go +++ b/server/v2/cometbft/client/grpc/cmtservice/query.pb.go @@ -6,6 +6,10 @@ package cmtservice import ( context "context" fmt "fmt" + io "io" + math "math" + math_bits "math/bits" + v11 "github.com/cometbft/cometbft/api/cometbft/p2p/v1" v1 "github.com/cometbft/cometbft/api/cometbft/types/v1" _ "github.com/cosmos/cosmos-proto" @@ -19,15 +23,15 @@ import ( 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 + +var ( + _ = fmt.Errorf + _ = 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. @@ -48,9 +52,11 @@ func (*GetValidatorSetByHeightRequest) ProtoMessage() {} func (*GetValidatorSetByHeightRequest) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{0} } + func (m *GetValidatorSetByHeightRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetValidatorSetByHeightRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetValidatorSetByHeightRequest.Marshal(b, m, deterministic) @@ -63,12 +69,15 @@ func (m *GetValidatorSetByHeightRequest) XXX_Marshal(b []byte, deterministic boo return b[:n], nil } } + func (m *GetValidatorSetByHeightRequest) XXX_Merge(src proto.Message) { xxx_messageInfo_GetValidatorSetByHeightRequest.Merge(m, src) } + func (m *GetValidatorSetByHeightRequest) XXX_Size() int { return m.Size() } + func (m *GetValidatorSetByHeightRequest) XXX_DiscardUnknown() { xxx_messageInfo_GetValidatorSetByHeightRequest.DiscardUnknown(m) } @@ -103,9 +112,11 @@ func (*GetValidatorSetByHeightResponse) ProtoMessage() {} func (*GetValidatorSetByHeightResponse) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{1} } + func (m *GetValidatorSetByHeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetValidatorSetByHeightResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetValidatorSetByHeightResponse.Marshal(b, m, deterministic) @@ -118,12 +129,15 @@ func (m *GetValidatorSetByHeightResponse) XXX_Marshal(b []byte, deterministic bo return b[:n], nil } } + func (m *GetValidatorSetByHeightResponse) XXX_Merge(src proto.Message) { xxx_messageInfo_GetValidatorSetByHeightResponse.Merge(m, src) } + func (m *GetValidatorSetByHeightResponse) XXX_Size() int { return m.Size() } + func (m *GetValidatorSetByHeightResponse) XXX_DiscardUnknown() { xxx_messageInfo_GetValidatorSetByHeightResponse.DiscardUnknown(m) } @@ -163,9 +177,11 @@ func (*GetLatestValidatorSetRequest) ProtoMessage() {} func (*GetLatestValidatorSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{2} } + func (m *GetLatestValidatorSetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetLatestValidatorSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetLatestValidatorSetRequest.Marshal(b, m, deterministic) @@ -178,12 +194,15 @@ func (m *GetLatestValidatorSetRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } + func (m *GetLatestValidatorSetRequest) XXX_Merge(src proto.Message) { xxx_messageInfo_GetLatestValidatorSetRequest.Merge(m, src) } + func (m *GetLatestValidatorSetRequest) XXX_Size() int { return m.Size() } + func (m *GetLatestValidatorSetRequest) XXX_DiscardUnknown() { xxx_messageInfo_GetLatestValidatorSetRequest.DiscardUnknown(m) } @@ -211,9 +230,11 @@ func (*GetLatestValidatorSetResponse) ProtoMessage() {} func (*GetLatestValidatorSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{3} } + func (m *GetLatestValidatorSetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetLatestValidatorSetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetLatestValidatorSetResponse.Marshal(b, m, deterministic) @@ -226,12 +247,15 @@ func (m *GetLatestValidatorSetResponse) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } + func (m *GetLatestValidatorSetResponse) XXX_Merge(src proto.Message) { xxx_messageInfo_GetLatestValidatorSetResponse.Merge(m, src) } + func (m *GetLatestValidatorSetResponse) XXX_Size() int { return m.Size() } + func (m *GetLatestValidatorSetResponse) XXX_DiscardUnknown() { xxx_messageInfo_GetLatestValidatorSetResponse.DiscardUnknown(m) } @@ -273,9 +297,11 @@ func (*Validator) ProtoMessage() {} func (*Validator) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{4} } + func (m *Validator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *Validator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_Validator.Marshal(b, m, deterministic) @@ -288,12 +314,15 @@ func (m *Validator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } + func (m *Validator) XXX_Merge(src proto.Message) { xxx_messageInfo_Validator.Merge(m, src) } + func (m *Validator) XXX_Size() int { return m.Size() } + func (m *Validator) XXX_DiscardUnknown() { xxx_messageInfo_Validator.DiscardUnknown(m) } @@ -339,9 +368,11 @@ func (*GetBlockByHeightRequest) ProtoMessage() {} func (*GetBlockByHeightRequest) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{5} } + func (m *GetBlockByHeightRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetBlockByHeightRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetBlockByHeightRequest.Marshal(b, m, deterministic) @@ -354,12 +385,15 @@ func (m *GetBlockByHeightRequest) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } + func (m *GetBlockByHeightRequest) XXX_Merge(src proto.Message) { xxx_messageInfo_GetBlockByHeightRequest.Merge(m, src) } + func (m *GetBlockByHeightRequest) XXX_Size() int { return m.Size() } + func (m *GetBlockByHeightRequest) XXX_DiscardUnknown() { xxx_messageInfo_GetBlockByHeightRequest.DiscardUnknown(m) } @@ -387,9 +421,11 @@ func (*GetBlockByHeightResponse) ProtoMessage() {} func (*GetBlockByHeightResponse) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{6} } + func (m *GetBlockByHeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetBlockByHeightResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetBlockByHeightResponse.Marshal(b, m, deterministic) @@ -402,12 +438,15 @@ func (m *GetBlockByHeightResponse) XXX_Marshal(b []byte, deterministic bool) ([] return b[:n], nil } } + func (m *GetBlockByHeightResponse) XXX_Merge(src proto.Message) { xxx_messageInfo_GetBlockByHeightResponse.Merge(m, src) } + func (m *GetBlockByHeightResponse) XXX_Size() int { return m.Size() } + func (m *GetBlockByHeightResponse) XXX_DiscardUnknown() { xxx_messageInfo_GetBlockByHeightResponse.DiscardUnknown(m) } @@ -436,8 +475,7 @@ func (m *GetBlockByHeightResponse) GetSdkBlock() *Block { } // GetLatestBlockRequest is the request type for the Query/GetLatestBlock RPC method. -type GetLatestBlockRequest struct { -} +type GetLatestBlockRequest struct{} func (m *GetLatestBlockRequest) Reset() { *m = GetLatestBlockRequest{} } func (m *GetLatestBlockRequest) String() string { return proto.CompactTextString(m) } @@ -445,9 +483,11 @@ func (*GetLatestBlockRequest) ProtoMessage() {} func (*GetLatestBlockRequest) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{7} } + func (m *GetLatestBlockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetLatestBlockRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetLatestBlockRequest.Marshal(b, m, deterministic) @@ -460,12 +500,15 @@ func (m *GetLatestBlockRequest) XXX_Marshal(b []byte, deterministic bool) ([]byt return b[:n], nil } } + func (m *GetLatestBlockRequest) XXX_Merge(src proto.Message) { xxx_messageInfo_GetLatestBlockRequest.Merge(m, src) } + func (m *GetLatestBlockRequest) XXX_Size() int { return m.Size() } + func (m *GetLatestBlockRequest) XXX_DiscardUnknown() { xxx_messageInfo_GetLatestBlockRequest.DiscardUnknown(m) } @@ -486,9 +529,11 @@ func (*GetLatestBlockResponse) ProtoMessage() {} func (*GetLatestBlockResponse) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{8} } + func (m *GetLatestBlockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetLatestBlockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetLatestBlockResponse.Marshal(b, m, deterministic) @@ -501,12 +546,15 @@ func (m *GetLatestBlockResponse) XXX_Marshal(b []byte, deterministic bool) ([]by return b[:n], nil } } + func (m *GetLatestBlockResponse) XXX_Merge(src proto.Message) { xxx_messageInfo_GetLatestBlockResponse.Merge(m, src) } + func (m *GetLatestBlockResponse) XXX_Size() int { return m.Size() } + func (m *GetLatestBlockResponse) XXX_DiscardUnknown() { xxx_messageInfo_GetLatestBlockResponse.DiscardUnknown(m) } @@ -535,8 +583,7 @@ func (m *GetLatestBlockResponse) GetSdkBlock() *Block { } // GetSyncingRequest is the request type for the Query/GetSyncing RPC method. -type GetSyncingRequest struct { -} +type GetSyncingRequest struct{} func (m *GetSyncingRequest) Reset() { *m = GetSyncingRequest{} } func (m *GetSyncingRequest) String() string { return proto.CompactTextString(m) } @@ -544,9 +591,11 @@ func (*GetSyncingRequest) ProtoMessage() {} func (*GetSyncingRequest) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{9} } + func (m *GetSyncingRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetSyncingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetSyncingRequest.Marshal(b, m, deterministic) @@ -559,12 +608,15 @@ func (m *GetSyncingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, e return b[:n], nil } } + func (m *GetSyncingRequest) XXX_Merge(src proto.Message) { xxx_messageInfo_GetSyncingRequest.Merge(m, src) } + func (m *GetSyncingRequest) XXX_Size() int { return m.Size() } + func (m *GetSyncingRequest) XXX_DiscardUnknown() { xxx_messageInfo_GetSyncingRequest.DiscardUnknown(m) } @@ -582,9 +634,11 @@ func (*GetSyncingResponse) ProtoMessage() {} func (*GetSyncingResponse) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{10} } + func (m *GetSyncingResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetSyncingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetSyncingResponse.Marshal(b, m, deterministic) @@ -597,12 +651,15 @@ func (m *GetSyncingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } + func (m *GetSyncingResponse) XXX_Merge(src proto.Message) { xxx_messageInfo_GetSyncingResponse.Merge(m, src) } + func (m *GetSyncingResponse) XXX_Size() int { return m.Size() } + func (m *GetSyncingResponse) XXX_DiscardUnknown() { xxx_messageInfo_GetSyncingResponse.DiscardUnknown(m) } @@ -617,8 +674,7 @@ func (m *GetSyncingResponse) GetSyncing() bool { } // GetNodeInfoRequest is the request type for the Query/GetNodeInfo RPC method. -type GetNodeInfoRequest struct { -} +type GetNodeInfoRequest struct{} func (m *GetNodeInfoRequest) Reset() { *m = GetNodeInfoRequest{} } func (m *GetNodeInfoRequest) String() string { return proto.CompactTextString(m) } @@ -626,9 +682,11 @@ func (*GetNodeInfoRequest) ProtoMessage() {} func (*GetNodeInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{11} } + func (m *GetNodeInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetNodeInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetNodeInfoRequest.Marshal(b, m, deterministic) @@ -641,12 +699,15 @@ func (m *GetNodeInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } + func (m *GetNodeInfoRequest) XXX_Merge(src proto.Message) { xxx_messageInfo_GetNodeInfoRequest.Merge(m, src) } + func (m *GetNodeInfoRequest) XXX_Size() int { return m.Size() } + func (m *GetNodeInfoRequest) XXX_DiscardUnknown() { xxx_messageInfo_GetNodeInfoRequest.DiscardUnknown(m) } @@ -665,9 +726,11 @@ func (*GetNodeInfoResponse) ProtoMessage() {} func (*GetNodeInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{12} } + func (m *GetNodeInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *GetNodeInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_GetNodeInfoResponse.Marshal(b, m, deterministic) @@ -680,12 +743,15 @@ func (m *GetNodeInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } + func (m *GetNodeInfoResponse) XXX_Merge(src proto.Message) { xxx_messageInfo_GetNodeInfoResponse.Merge(m, src) } + func (m *GetNodeInfoResponse) XXX_Size() int { return m.Size() } + func (m *GetNodeInfoResponse) XXX_DiscardUnknown() { xxx_messageInfo_GetNodeInfoResponse.DiscardUnknown(m) } @@ -724,9 +790,11 @@ func (*VersionInfo) ProtoMessage() {} func (*VersionInfo) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{13} } + func (m *VersionInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *VersionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_VersionInfo.Marshal(b, m, deterministic) @@ -739,12 +807,15 @@ func (m *VersionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } + func (m *VersionInfo) XXX_Merge(src proto.Message) { xxx_messageInfo_VersionInfo.Merge(m, src) } + func (m *VersionInfo) XXX_Size() int { return m.Size() } + func (m *VersionInfo) XXX_DiscardUnknown() { xxx_messageInfo_VersionInfo.DiscardUnknown(m) } @@ -823,9 +894,11 @@ func (*Module) ProtoMessage() {} func (*Module) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{14} } + func (m *Module) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *Module) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_Module.Marshal(b, m, deterministic) @@ -838,12 +911,15 @@ func (m *Module) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } + func (m *Module) XXX_Merge(src proto.Message) { xxx_messageInfo_Module.Merge(m, src) } + func (m *Module) XXX_Size() int { return m.Size() } + func (m *Module) XXX_DiscardUnknown() { xxx_messageInfo_Module.DiscardUnknown(m) } @@ -885,9 +961,11 @@ func (*ABCIQueryRequest) ProtoMessage() {} func (*ABCIQueryRequest) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{15} } + func (m *ABCIQueryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *ABCIQueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_ABCIQueryRequest.Marshal(b, m, deterministic) @@ -900,12 +978,15 @@ func (m *ABCIQueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, er return b[:n], nil } } + func (m *ABCIQueryRequest) XXX_Merge(src proto.Message) { xxx_messageInfo_ABCIQueryRequest.Merge(m, src) } + func (m *ABCIQueryRequest) XXX_Size() int { return m.Size() } + func (m *ABCIQueryRequest) XXX_DiscardUnknown() { xxx_messageInfo_ABCIQueryRequest.DiscardUnknown(m) } @@ -962,9 +1043,11 @@ func (*ABCIQueryResponse) ProtoMessage() {} func (*ABCIQueryResponse) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{16} } + func (m *ABCIQueryResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *ABCIQueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_ABCIQueryResponse.Marshal(b, m, deterministic) @@ -977,12 +1060,15 @@ func (m *ABCIQueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, e return b[:n], nil } } + func (m *ABCIQueryResponse) XXX_Merge(src proto.Message) { xxx_messageInfo_ABCIQueryResponse.Merge(m, src) } + func (m *ABCIQueryResponse) XXX_Size() int { return m.Size() } + func (m *ABCIQueryResponse) XXX_DiscardUnknown() { xxx_messageInfo_ABCIQueryResponse.DiscardUnknown(m) } @@ -1069,9 +1155,11 @@ func (*ProofOp) ProtoMessage() {} func (*ProofOp) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{17} } + func (m *ProofOp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *ProofOp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_ProofOp.Marshal(b, m, deterministic) @@ -1084,12 +1172,15 @@ func (m *ProofOp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } + func (m *ProofOp) XXX_Merge(src proto.Message) { xxx_messageInfo_ProofOp.Merge(m, src) } + func (m *ProofOp) XXX_Size() int { return m.Size() } + func (m *ProofOp) XXX_DiscardUnknown() { xxx_messageInfo_ProofOp.DiscardUnknown(m) } @@ -1130,9 +1221,11 @@ func (*ProofOps) ProtoMessage() {} func (*ProofOps) Descriptor() ([]byte, []int) { return fileDescriptor_40c93fb3ef485c5d, []int{18} } + func (m *ProofOps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *ProofOps) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_ProofOps.Marshal(b, m, deterministic) @@ -1145,12 +1238,15 @@ func (m *ProofOps) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } + func (m *ProofOps) XXX_Merge(src proto.Message) { xxx_messageInfo_ProofOps.Merge(m, src) } + func (m *ProofOps) XXX_Size() int { return m.Size() } + func (m *ProofOps) XXX_DiscardUnknown() { xxx_messageInfo_ProofOps.DiscardUnknown(m) } @@ -1406,27 +1502,32 @@ type ServiceServer interface { } // UnimplementedServiceServer can be embedded to have forward compatible implementations. -type UnimplementedServiceServer struct { -} +type UnimplementedServiceServer struct{} func (*UnimplementedServiceServer) GetNodeInfo(ctx context.Context, req *GetNodeInfoRequest) (*GetNodeInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetNodeInfo not implemented") } + func (*UnimplementedServiceServer) GetSyncing(ctx context.Context, req *GetSyncingRequest) (*GetSyncingResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSyncing not implemented") } + func (*UnimplementedServiceServer) GetLatestBlock(ctx context.Context, req *GetLatestBlockRequest) (*GetLatestBlockResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetLatestBlock not implemented") } + func (*UnimplementedServiceServer) GetBlockByHeight(ctx context.Context, req *GetBlockByHeightRequest) (*GetBlockByHeightResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetBlockByHeight not implemented") } + func (*UnimplementedServiceServer) GetLatestValidatorSet(ctx context.Context, req *GetLatestValidatorSetRequest) (*GetLatestValidatorSetResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetLatestValidatorSet not implemented") } + func (*UnimplementedServiceServer) GetValidatorSetByHeight(ctx context.Context, req *GetValidatorSetByHeightRequest) (*GetValidatorSetByHeightResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetValidatorSetByHeight not implemented") } + func (*UnimplementedServiceServer) ABCIQuery(ctx context.Context, req *ABCIQueryRequest) (*ABCIQueryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ABCIQuery not implemented") } @@ -2487,6 +2588,7 @@ func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } + func (m *GetValidatorSetByHeightRequest) Size() (n int) { if m == nil { return 0 @@ -2861,9 +2963,11 @@ func (m *ProofOps) Size() (n int) { func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } + func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } + func (m *GetValidatorSetByHeightRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -2969,6 +3073,7 @@ func (m *GetValidatorSetByHeightRequest) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetValidatorSetByHeightResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3108,6 +3213,7 @@ func (m *GetValidatorSetByHeightResponse) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetLatestValidatorSetRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3194,6 +3300,7 @@ func (m *GetLatestValidatorSetRequest) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetLatestValidatorSetResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3333,6 +3440,7 @@ func (m *GetLatestValidatorSetResponse) Unmarshal(dAtA []byte) error { } return nil } + func (m *Validator) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3489,6 +3597,7 @@ func (m *Validator) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetBlockByHeightRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3558,6 +3667,7 @@ func (m *GetBlockByHeightRequest) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetBlockByHeightResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3716,6 +3826,7 @@ func (m *GetBlockByHeightResponse) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetLatestBlockRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3766,6 +3877,7 @@ func (m *GetLatestBlockRequest) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetLatestBlockResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3924,6 +4036,7 @@ func (m *GetLatestBlockResponse) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetSyncingRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3974,6 +4087,7 @@ func (m *GetSyncingRequest) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetSyncingResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4044,6 +4158,7 @@ func (m *GetSyncingResponse) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetNodeInfoRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4094,6 +4209,7 @@ func (m *GetNodeInfoRequest) Unmarshal(dAtA []byte) error { } return nil } + func (m *GetNodeInfoResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4216,6 +4332,7 @@ func (m *GetNodeInfoResponse) Unmarshal(dAtA []byte) error { } return nil } + func (m *VersionInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4524,6 +4641,7 @@ func (m *VersionInfo) Unmarshal(dAtA []byte) error { } return nil } + func (m *Module) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4670,6 +4788,7 @@ func (m *Module) Unmarshal(dAtA []byte) error { } return nil } + func (m *ABCIQueryRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4825,6 +4944,7 @@ func (m *ABCIQueryRequest) Unmarshal(dAtA []byte) error { } return nil } + func (m *ABCIQueryResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -5132,6 +5252,7 @@ func (m *ABCIQueryResponse) Unmarshal(dAtA []byte) error { } return nil } + func (m *ProofOp) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -5282,6 +5403,7 @@ func (m *ProofOp) Unmarshal(dAtA []byte) error { } return nil } + func (m *ProofOps) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -5366,6 +5488,7 @@ func (m *ProofOps) Unmarshal(dAtA []byte) error { } return nil } + func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/server/v2/cometbft/client/grpc/cmtservice/query.pb.gw.go b/server/v2/cometbft/client/grpc/cmtservice/query.pb.gw.go index e169618c93c8..184d6d7b99c8 100644 --- a/server/v2/cometbft/client/grpc/cmtservice/query.pb.gw.go +++ b/server/v2/cometbft/client/grpc/cmtservice/query.pb.gw.go @@ -26,12 +26,15 @@ import ( // Suppress "imported and not used" errors var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage -var _ = metadata.Join + +var ( + _ io.Reader + _ status.Status + _ = runtime.String + _ = utilities.NewDoubleArray + _ = descriptor.ForMessage + _ = metadata.Join +) func request_Service_GetNodeInfo_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetNodeInfoRequest @@ -39,7 +42,6 @@ func request_Service_GetNodeInfo_0(ctx context.Context, marshaler runtime.Marsha msg, err := client.GetNodeInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err - } func local_request_Service_GetNodeInfo_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -48,7 +50,6 @@ func local_request_Service_GetNodeInfo_0(ctx context.Context, marshaler runtime. msg, err := server.GetNodeInfo(ctx, &protoReq) return msg, metadata, err - } func request_Service_GetSyncing_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -57,7 +58,6 @@ func request_Service_GetSyncing_0(ctx context.Context, marshaler runtime.Marshal msg, err := client.GetSyncing(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err - } func local_request_Service_GetSyncing_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -66,7 +66,6 @@ func local_request_Service_GetSyncing_0(ctx context.Context, marshaler runtime.M msg, err := server.GetSyncing(ctx, &protoReq) return msg, metadata, err - } func request_Service_GetLatestBlock_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -75,7 +74,6 @@ func request_Service_GetLatestBlock_0(ctx context.Context, marshaler runtime.Mar msg, err := client.GetLatestBlock(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err - } func local_request_Service_GetLatestBlock_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -84,7 +82,6 @@ func local_request_Service_GetLatestBlock_0(ctx context.Context, marshaler runti msg, err := server.GetLatestBlock(ctx, &protoReq) return msg, metadata, err - } func request_Service_GetBlockByHeight_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -111,7 +108,6 @@ func request_Service_GetBlockByHeight_0(ctx context.Context, marshaler runtime.M msg, err := client.GetBlockByHeight(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err - } func local_request_Service_GetBlockByHeight_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -138,12 +134,9 @@ func local_request_Service_GetBlockByHeight_0(ctx context.Context, marshaler run msg, err := server.GetBlockByHeight(ctx, &protoReq) return msg, metadata, err - } -var ( - filter_Service_GetLatestValidatorSet_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) +var filter_Service_GetLatestValidatorSet_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} func request_Service_GetLatestValidatorSet_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetLatestValidatorSetRequest @@ -158,7 +151,6 @@ func request_Service_GetLatestValidatorSet_0(ctx context.Context, marshaler runt msg, err := client.GetLatestValidatorSet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err - } func local_request_Service_GetLatestValidatorSet_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -174,12 +166,9 @@ func local_request_Service_GetLatestValidatorSet_0(ctx context.Context, marshale msg, err := server.GetLatestValidatorSet(ctx, &protoReq) return msg, metadata, err - } -var ( - filter_Service_GetValidatorSetByHeight_0 = &utilities.DoubleArray{Encoding: map[string]int{"height": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) +var filter_Service_GetValidatorSetByHeight_0 = &utilities.DoubleArray{Encoding: map[string]int{"height": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} func request_Service_GetValidatorSetByHeight_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetValidatorSetByHeightRequest @@ -212,7 +201,6 @@ func request_Service_GetValidatorSetByHeight_0(ctx context.Context, marshaler ru msg, err := client.GetValidatorSetByHeight(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err - } func local_request_Service_GetValidatorSetByHeight_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -246,12 +234,9 @@ func local_request_Service_GetValidatorSetByHeight_0(ctx context.Context, marsha msg, err := server.GetValidatorSetByHeight(ctx, &protoReq) return msg, metadata, err - } -var ( - filter_Service_ABCIQuery_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) +var filter_Service_ABCIQuery_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} func request_Service_ABCIQuery_0(ctx context.Context, marshaler runtime.Marshaler, client ServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ABCIQueryRequest @@ -266,7 +251,6 @@ func request_Service_ABCIQuery_0(ctx context.Context, marshaler runtime.Marshale msg, err := client.ABCIQuery(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err - } func local_request_Service_ABCIQuery_0(ctx context.Context, marshaler runtime.Marshaler, server ServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -282,7 +266,6 @@ func local_request_Service_ABCIQuery_0(ctx context.Context, marshaler runtime.Ma msg, err := server.ABCIQuery(ctx, &protoReq) return msg, metadata, err - } // RegisterServiceHandlerServer registers the http handlers for service Service to "mux". @@ -290,7 +273,6 @@ func local_request_Service_ABCIQuery_0(ctx context.Context, marshaler runtime.Ma // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterServiceHandlerFromEndpoint instead. func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ServiceServer) error { - mux.Handle("GET", pattern_Service_GetNodeInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -311,7 +293,6 @@ func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, se } forward_Service_GetNodeInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetSyncing_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -334,7 +315,6 @@ func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, se } forward_Service_GetSyncing_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetLatestBlock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -357,7 +337,6 @@ func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, se } forward_Service_GetLatestBlock_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetBlockByHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -380,7 +359,6 @@ func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, se } forward_Service_GetBlockByHeight_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetLatestValidatorSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -403,7 +381,6 @@ func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, se } forward_Service_GetLatestValidatorSet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetValidatorSetByHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -426,7 +403,6 @@ func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, se } forward_Service_GetValidatorSetByHeight_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_ABCIQuery_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -449,7 +425,6 @@ func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, se } forward_Service_ABCIQuery_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) return nil @@ -492,7 +467,6 @@ func RegisterServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "ServiceClient" to call the correct interceptors. func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ServiceClient) error { - mux.Handle("GET", pattern_Service_GetNodeInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -510,7 +484,6 @@ func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl } forward_Service_GetNodeInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetSyncing_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -530,7 +503,6 @@ func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl } forward_Service_GetSyncing_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetLatestBlock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -550,7 +522,6 @@ func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl } forward_Service_GetLatestBlock_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetBlockByHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -570,7 +541,6 @@ func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl } forward_Service_GetBlockByHeight_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetLatestValidatorSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -590,7 +560,6 @@ func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl } forward_Service_GetLatestValidatorSet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_GetValidatorSetByHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -610,7 +579,6 @@ func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl } forward_Service_GetValidatorSetByHeight_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) mux.Handle("GET", pattern_Service_ABCIQuery_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { @@ -630,7 +598,6 @@ func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, cl } forward_Service_ABCIQuery_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) return nil diff --git a/server/v2/cometbft/client/grpc/cmtservice/types.pb.go b/server/v2/cometbft/client/grpc/cmtservice/types.pb.go index 6d1a3cbb607c..7f36cb4eec64 100644 --- a/server/v2/cometbft/client/grpc/cmtservice/types.pb.go +++ b/server/v2/cometbft/client/grpc/cmtservice/types.pb.go @@ -5,6 +5,11 @@ package cmtservice import ( fmt "fmt" + io "io" + math "math" + math_bits "math/bits" + time "time" + v1 "github.com/cometbft/cometbft/api/cometbft/types/v1" v11 "github.com/cometbft/cometbft/api/cometbft/version/v1" _ "github.com/cosmos/cosmos-sdk/types/tx/amino" @@ -12,17 +17,16 @@ import ( proto "github.com/cosmos/gogoproto/proto" github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" _ "google.golang.org/protobuf/types/known/timestamppb" - io "io" - math "math" - math_bits "math/bits" - time "time" ) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf -var _ = time.Kitchen + +var ( + _ = fmt.Errorf + _ = math.Inf + _ = time.Kitchen +) // This is a compile-time assertion to ensure that this generated file // is compatible with the proto package it is being compiled against. @@ -45,9 +49,11 @@ func (*Block) ProtoMessage() {} func (*Block) Descriptor() ([]byte, []int) { return fileDescriptor_bb9931519c08e0d6, []int{0} } + func (m *Block) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *Block) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_Block.Marshal(b, m, deterministic) @@ -60,12 +66,15 @@ func (m *Block) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } + func (m *Block) XXX_Merge(src proto.Message) { xxx_messageInfo_Block.Merge(m, src) } + func (m *Block) XXX_Size() int { return m.Size() } + func (m *Block) XXX_DiscardUnknown() { xxx_messageInfo_Block.DiscardUnknown(m) } @@ -132,9 +141,11 @@ func (*Header) ProtoMessage() {} func (*Header) Descriptor() ([]byte, []int) { return fileDescriptor_bb9931519c08e0d6, []int{1} } + func (m *Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } + func (m *Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { return xxx_messageInfo_Header.Marshal(b, m, deterministic) @@ -147,12 +158,15 @@ func (m *Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } + func (m *Header) XXX_Merge(src proto.Message) { xxx_messageInfo_Header.Merge(m, src) } + func (m *Header) XXX_Size() int { return m.Size() } + func (m *Header) XXX_DiscardUnknown() { xxx_messageInfo_Header.DiscardUnknown(m) } @@ -513,6 +527,7 @@ func encodeVarintTypes(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } + func (m *Block) Size() (n int) { if m == nil { return 0 @@ -593,9 +608,11 @@ func (m *Header) Size() (n int) { func sovTypes(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } + func sozTypes(x uint64) (n int) { return sovTypes(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } + func (m *Block) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -781,6 +798,7 @@ func (m *Block) Unmarshal(dAtA []byte) error { } return nil } + func (m *Header) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -1285,6 +1303,7 @@ func (m *Header) Unmarshal(dAtA []byte) error { } return nil } + func skipTypes(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/types/address.go b/types/address.go index 8bb0d56fc4c8..8b19141e6569 100644 --- a/types/address.go +++ b/types/address.go @@ -305,11 +305,11 @@ func (aa AccAddress) String() string { func (aa AccAddress) Format(s fmt.State, verb rune) { switch verb { case 's': - s.Write([]byte(aa.String())) + _, _ = s.Write([]byte(aa.String())) case 'p': - s.Write([]byte(fmt.Sprintf("%p", aa))) + _, _ = s.Write([]byte(fmt.Sprintf("%p", aa))) default: - s.Write([]byte(fmt.Sprintf("%X", []byte(aa)))) + _, _ = s.Write([]byte(fmt.Sprintf("%X", []byte(aa)))) } } @@ -456,11 +456,11 @@ func (va ValAddress) String() string { func (va ValAddress) Format(s fmt.State, verb rune) { switch verb { case 's': - s.Write([]byte(va.String())) + _, _ = s.Write([]byte(va.String())) case 'p': - s.Write([]byte(fmt.Sprintf("%p", va))) + _, _ = s.Write([]byte(fmt.Sprintf("%p", va))) default: - s.Write([]byte(fmt.Sprintf("%X", []byte(va)))) + _, _ = s.Write([]byte(fmt.Sprintf("%X", []byte(va)))) } } @@ -627,11 +627,11 @@ func MustBech32ifyAddressBytes(prefix string, bs []byte) string { func (ca ConsAddress) Format(s fmt.State, verb rune) { switch verb { case 's': - s.Write([]byte(ca.String())) + _, _ = s.Write([]byte(ca.String())) case 'p': - s.Write([]byte(fmt.Sprintf("%p", ca))) + _, _ = s.Write([]byte(fmt.Sprintf("%p", ca))) default: - s.Write([]byte(fmt.Sprintf("%X", []byte(ca)))) + _, _ = s.Write([]byte(fmt.Sprintf("%X", []byte(ca)))) } } diff --git a/x/gov/types/v1/proposal.go b/x/gov/types/v1/proposal.go index aec495ff2040..be5931c217ae 100644 --- a/x/gov/types/v1/proposal.go +++ b/x/gov/types/v1/proposal.go @@ -122,10 +122,10 @@ func ProposalStatusFromString(str string) (ProposalStatus, error) { func (status ProposalStatus) Format(s fmt.State, verb rune) { switch verb { case 's': - s.Write([]byte(status.String())) + _, _ = s.Write([]byte(status.String())) default: // TODO: Do this conversion more directly - s.Write([]byte(fmt.Sprintf("%v", byte(status)))) + _, _ = s.Write([]byte(fmt.Sprintf("%v", byte(status)))) } } diff --git a/x/gov/types/v1/vote.go b/x/gov/types/v1/vote.go index f88b5a627e1a..c83e90453bd8 100644 --- a/x/gov/types/v1/vote.go +++ b/x/gov/types/v1/vote.go @@ -150,8 +150,8 @@ func ValidVoteOption(option VoteOption) bool { func (vo VoteOption) Format(s fmt.State, verb rune) { switch verb { case 's': - s.Write([]byte(vo.String())) + _, _ = s.Write([]byte(vo.String())) default: - s.Write([]byte(fmt.Sprintf("%v", byte(vo)))) + _, _ = s.Write([]byte(fmt.Sprintf("%v", byte(vo)))) } } diff --git a/x/gov/types/v1beta1/proposal.go b/x/gov/types/v1beta1/proposal.go index ddc48e169801..b29753edb33b 100644 --- a/x/gov/types/v1beta1/proposal.go +++ b/x/gov/types/v1beta1/proposal.go @@ -141,10 +141,10 @@ func ProposalStatusFromString(str string) (ProposalStatus, error) { func (status ProposalStatus) Format(s fmt.State, verb rune) { switch verb { case 's': - s.Write([]byte(status.String())) + _, _ = s.Write([]byte(status.String())) default: // TODO: Do this conversion more directly - s.Write([]byte(fmt.Sprintf("%v", byte(status)))) + _, _ = s.Write([]byte(fmt.Sprintf("%v", byte(status)))) } } diff --git a/x/gov/types/v1beta1/vote.go b/x/gov/types/v1beta1/vote.go index 86407be8def7..801b94c1d79a 100644 --- a/x/gov/types/v1beta1/vote.go +++ b/x/gov/types/v1beta1/vote.go @@ -113,8 +113,8 @@ func ValidVoteOption(option VoteOption) bool { func (vo VoteOption) Format(s fmt.State, verb rune) { switch verb { case 's': - s.Write([]byte(vo.String())) + _, _ = s.Write([]byte(vo.String())) default: - s.Write([]byte(fmt.Sprintf("%v", byte(vo)))) + _, _ = s.Write([]byte(fmt.Sprintf("%v", byte(vo)))) } } diff --git a/x/group/keeper/keeper.go b/x/group/keeper/keeper.go index 42c14ff78df9..667c62ab0bc1 100644 --- a/x/group/keeper/keeper.go +++ b/x/group/keeper/keeper.go @@ -292,7 +292,6 @@ func (k Keeper) abortProposals(ctx context.Context, groupPolicyAddr sdk.AccAddre return err } - //nolint:gosec // "implicit memory aliasing in the for loop (because of the pointer on &proposalInfo)" for _, proposalInfo := range proposals { // Mark all proposals still in the voting phase as aborted. if proposalInfo.Status == group.PROPOSAL_STATUS_SUBMITTED { @@ -337,7 +336,6 @@ func (k Keeper) pruneVotes(ctx context.Context, proposalID uint64) error { return err } - //nolint:gosec // "implicit memory aliasing in the for loop (because of the pointer on &v)" for _, v := range votes { err = k.voteTable.Delete(k.KVStoreService.OpenKVStore(ctx), &v) if err != nil { @@ -410,7 +408,6 @@ func (k Keeper) TallyProposalsAtVPEnd(ctx context.Context) error { if err != nil { return nil } - //nolint:gosec // "implicit memory aliasing in the for loop (because of the pointers in the loop)" for _, proposal := range proposals { policyInfo, err := k.getGroupPolicyInfo(ctx, proposal.GroupPolicyAddress) if err != nil { From 8364791eb31df39fa23e60c318c57b50f0f9f3f0 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 31 May 2024 11:56:44 +0200 Subject: [PATCH 12/16] ci: Add GitHub Action for go mod tidy and mocks (#20501) --- .github/workflows/pr-go-mod-tidy-mocks.yml | 50 ++++++++++++++++++++++ testutil/mock/logger.go | 2 +- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/pr-go-mod-tidy-mocks.yml diff --git a/.github/workflows/pr-go-mod-tidy-mocks.yml b/.github/workflows/pr-go-mod-tidy-mocks.yml new file mode 100644 index 000000000000..c1891099e074 --- /dev/null +++ b/.github/workflows/pr-go-mod-tidy-mocks.yml @@ -0,0 +1,50 @@ +name: 'Checks dependencies and mocks generation' +on: + pull_request: + branches: + - main + +concurrency: + group: ci-${{ github.ref }}-pr-go-mod-tidy-mocks + cancel-in-progress: true + +jobs: + go-mod-tidy: + name: Check go mod tidy + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: "1.22" + check-latest: true + - name: Run go mod tidy + run: ./scripts/go-mod-tidy-all.sh + - name: Check for diffs + run: | + git diff --exit-code || { + echo "Please run './scripts/go-mod-tidy-all.sh' and commit the changes"; + exit 1; + } + + generate-mocks: + name: Check up to date mocks + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: "1.22" + check-latest: true + - name: Generate mocks + run: make mocks + - name: Check for diffs + run: | + git diff --exit-code || { + echo "Please run 'make mocks' and commit the changes"; + exit 1; + } diff --git a/testutil/mock/logger.go b/testutil/mock/logger.go index 800210aa241e..1a8080da357b 100644 --- a/testutil/mock/logger.go +++ b/testutil/mock/logger.go @@ -7,7 +7,7 @@ package mock import ( reflect "reflect" - log "cosmossdk.io/log" + log "cosmossdk.io/core/log" gomock "github.com/golang/mock/gomock" ) From 6967fbd11e7f07dd85eefa215613ddedbc018519 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Fri, 31 May 2024 17:58:58 +0800 Subject: [PATCH 13/16] chore: update protoc-gen-swagger to protoc-gen-openapiv2 (#20448) --- client/docs/swagger-ui/swagger.yaml | 23136 ++++++++---------- contrib/devtools/Dockerfile | 7 +- proto/buf.gen.swagger.yaml | 4 +- proto/cosmos/app/v1alpha1/config.proto | 2 + proto/cosmos/app/v1alpha1/module.proto | 2 + proto/cosmos/app/v1alpha1/query.proto | 2 + proto/cosmos/orm/query/v1alpha1/query.proto | 2 + scripts/protoc-swagger-gen.sh | 2 +- 8 files changed, 9901 insertions(+), 13256 deletions(-) diff --git a/client/docs/swagger-ui/swagger.yaml b/client/docs/swagger-ui/swagger.yaml index a3b70bb6538a..29df67ba00b7 100644 --- a/client/docs/swagger-ui/swagger.yaml +++ b/client/docs/swagger-ui/swagger.yaml @@ -7,7 +7,6 @@ paths: /cosmos/auth/v1beta1/account_info/{address}: get: summary: AccountInfo queries account info which is common to all account types. - description: 'Since: cosmos-sdk 0.47' operationId: AccountInfo responses: '200': @@ -24,7 +23,7 @@ paths: pub_key: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -82,12 +81,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -208,17 +202,12 @@ paths: sequence: type: string format: uint64 - description: |- - QueryAccountInfoResponse is the Query/AccountInfo response type. - - Since: cosmos-sdk 0.47 + description: QueryAccountInfoResponse is the Query/AccountInfo response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -229,7 +218,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -287,12 +276,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -417,15 +401,13 @@ paths: - Query /cosmos/auth/v1beta1/accounts: get: - summary: Accounts returns all the existing accounts. - description: >- + summary: >- + Accounts returns all the existing accounts. + When called from another module, this query might consume a high amount of gas if the pagination field is incorrectly set. - - - Since: cosmos-sdk 0.43 operationId: Accounts responses: '200': @@ -438,7 +420,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -496,12 +478,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -639,16 +616,11 @@ paths: description: >- QueryAccountsResponse is the response type for the Query/Accounts RPC method. - - - Since: cosmos-sdk 0.43 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -659,7 +631,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -717,12 +689,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -888,9 +855,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -909,7 +873,7 @@ paths: account: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -966,12 +930,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -1091,8 +1050,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -1103,7 +1060,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -1161,12 +1118,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -1292,7 +1244,6 @@ paths: /cosmos/auth/v1beta1/address_by_id/{id}: get: summary: AccountAddressByID returns account address based on account number. - description: 'Since: cosmos-sdk 0.46.2' operationId: AccountAddressByID responses: '200': @@ -1302,7 +1253,6 @@ paths: properties: account_address: type: string - description: 'Since: cosmos-sdk 0.46.2' title: >- QueryAccountAddressByIDResponse is the response type for AccountAddressByID rpc method @@ -1311,8 +1261,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -1323,7 +1271,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -1381,12 +1329,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -1514,10 +1457,7 @@ paths: type: string format: int64 - name: account_id - description: |- - account_id is the account number of the address to be queried. - - Since: cosmos-sdk 0.47 + description: account_id is the account number of the address to be queried. in: query required: false type: string @@ -1527,7 +1467,6 @@ paths: /cosmos/auth/v1beta1/bech32: get: summary: Bech32Prefix queries bech32Prefix - description: 'Since: cosmos-sdk 0.46' operationId: Bech32Prefix responses: '200': @@ -1540,16 +1479,11 @@ paths: description: >- Bech32PrefixResponse is the response type for Bech32Prefix rpc method. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -1560,7 +1494,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -1618,12 +1552,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -1743,7 +1672,6 @@ paths: /cosmos/auth/v1beta1/bech32/{address_bytes}: get: summary: AddressBytesToString converts Account Address bytes to string - description: 'Since: cosmos-sdk 0.46' operationId: AddressBytesToString responses: '200': @@ -1756,16 +1684,11 @@ paths: description: >- AddressBytesToStringResponse is the response type for AddressString rpc method. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -1776,7 +1699,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -1834,12 +1757,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -1965,7 +1883,6 @@ paths: /cosmos/auth/v1beta1/bech32/{address_string}: get: summary: AddressStringToBytes converts Address string to bytes - description: 'Since: cosmos-sdk 0.46' operationId: AddressStringToBytes responses: '200': @@ -1979,16 +1896,11 @@ paths: description: >- AddressStringToBytesResponse is the response type for AddressBytes rpc method. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -1999,7 +1911,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -2057,12 +1969,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -2187,7 +2094,6 @@ paths: /cosmos/auth/v1beta1/module_accounts: get: summary: ModuleAccounts returns all the existing module accounts. - description: 'Since: cosmos-sdk 0.46' operationId: ModuleAccounts responses: '200': @@ -2200,7 +2106,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -2258,12 +2164,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -2381,16 +2282,11 @@ paths: description: >- QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -2401,7 +2297,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -2459,12 +2355,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -2594,7 +2485,7 @@ paths: account: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -2651,12 +2542,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -2776,8 +2662,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -2788,7 +2672,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -2846,12 +2730,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -3010,8 +2889,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -3022,7 +2899,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -3080,12 +2957,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -3264,8 +3136,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -3276,11 +3146,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: address description: address is the address to query balances for. @@ -3337,9 +3205,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -3347,9 +3212,6 @@ paths: description: >- resolve_denom is the flag to resolve the denom into a human-readable form from the metadata. - - - Since: cosmos-sdk 0.50 in: query required: false type: boolean @@ -3366,20 +3228,13 @@ paths: type: object properties: balance: + description: balance is the balance of the coin. type: object properties: denom: type: string amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. description: >- QueryBalanceResponse is the response type for the Query/Balance RPC method. @@ -3388,8 +3243,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -3400,11 +3253,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: address description: address is the address to query balances for. @@ -3430,9 +3281,6 @@ paths: of gas if the pagination field is incorrectly set. - - - Since: cosmos-sdk 0.46 operationId: DenomOwners responses: '200': @@ -3451,20 +3299,15 @@ paths: address defines the address that owns a particular denomination. balance: + description: >- + balance is the balance of the denominated coin for an + account. type: object properties: denom: type: string amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. description: >- DenomOwner defines structure representing an account that owns or holds a @@ -3473,9 +3316,6 @@ paths: address and account balance of the denominated token. - - - Since: cosmos-sdk 0.46 pagination: description: pagination defines the pagination in the response. type: object @@ -3498,16 +3338,11 @@ paths: description: >- QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -3518,11 +3353,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: denom description: >- @@ -3581,9 +3414,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -3592,8 +3422,8 @@ paths: /cosmos/bank/v1beta1/denom_owners_by_query: get: summary: >- - DenomOwners queries for all account addresses that own a particular - token + DenomOwnersByQuery queries for all account addresses that own a + particular token denomination. operationId: DenomOwnersByQuery @@ -3614,20 +3444,15 @@ paths: address defines the address that owns a particular denomination. balance: + description: >- + balance is the balance of the denominated coin for an + account. type: object properties: denom: type: string amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. description: >- DenomOwner defines structure representing an account that owns or holds a @@ -3636,9 +3461,6 @@ paths: address and account balance of the denominated token. - - - Since: cosmos-sdk 0.46 pagination: description: pagination defines the pagination in the response. type: object @@ -3666,8 +3488,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -3678,11 +3498,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: denom description: >- @@ -3741,9 +3559,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -3819,7 +3634,6 @@ paths: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -3828,17 +3642,11 @@ paths: (eg: ATOM). This can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 uri_hash: type: string description: >- @@ -3846,9 +3654,6 @@ paths: It's used to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 description: |- Metadata represents a struct that describes a basic token. @@ -3884,8 +3689,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -3896,11 +3699,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: pagination.key description: |- @@ -3952,9 +3753,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -3962,7 +3760,7 @@ paths: - Query /cosmos/bank/v1beta1/denoms_metadata/{denom}: get: - summary: DenomsMetadata queries the client metadata of a given coin denomination. + summary: DenomMetadata queries the client metadata of a given coin denomination. operationId: DenomMetadata responses: '200': @@ -3971,6 +3769,9 @@ paths: type: object properties: metadata: + description: >- + metadata describes and provides all the client information for + the requested token. type: object properties: description: @@ -4026,7 +3827,6 @@ paths: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -4035,17 +3835,11 @@ paths: ATOM). This can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 uri_hash: type: string description: >- @@ -4053,12 +3847,6 @@ paths: It's used to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. description: >- QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC @@ -4069,8 +3857,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -4081,11 +3867,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: denom description: denom is the coin denom to query the metadata for. @@ -4096,7 +3880,9 @@ paths: - Query /cosmos/bank/v1beta1/denoms_metadata_by_query_string: get: - summary: DenomsMetadata queries the client metadata of a given coin denomination. + summary: >- + DenomMetadataByQueryString queries the client metadata of a given coin + denomination. operationId: DenomMetadataByQueryString responses: '200': @@ -4105,6 +3891,9 @@ paths: type: object properties: metadata: + description: >- + metadata describes and provides all the client information for + the requested token. type: object properties: description: @@ -4160,7 +3949,6 @@ paths: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -4169,17 +3957,11 @@ paths: ATOM). This can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 uri_hash: type: string description: >- @@ -4187,12 +3969,6 @@ paths: It's used to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. description: >- QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC @@ -4204,8 +3980,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -4216,11 +3990,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: denom description: denom is the coin denom to query the metadata for. @@ -4279,8 +4051,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -4291,11 +4061,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} tags: - Query /cosmos/bank/v1beta1/send_enabled: @@ -4309,9 +4077,6 @@ paths: default params.default_send_enabled, and will not be returned by this query. - - - Since: cosmos-sdk 0.47 operationId: SendEnabled responses: '200': @@ -4359,16 +4124,11 @@ paths: description: >- QuerySendEnabledResponse defines the RPC response of a SendEnable query. - - - Since: cosmos-sdk 0.47 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -4379,11 +4139,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: denoms description: >- @@ -4445,9 +4203,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -4460,14 +4215,11 @@ paths: single account. - description: >- + When called from another module, this query might consume a high amount of gas if the pagination field is incorrectly set. - - - Since: cosmos-sdk 0.46 operationId: SpendableBalances responses: '200': @@ -4517,16 +4269,11 @@ paths: for querying an account's spendable balances. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -4537,11 +4284,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: address description: address is the address to query spendable balances for. @@ -4598,9 +4343,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -4618,9 +4360,6 @@ paths: of gas if the pagination field is incorrectly set. - - - Since: cosmos-sdk 0.47 operationId: SpendableBalanceByDenom responses: '200': @@ -4629,35 +4368,23 @@ paths: type: object properties: balance: + description: balance is the balance of the coin. type: object properties: denom: type: string amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. description: >- QuerySpendableBalanceByDenomResponse defines the gRPC response structure for querying an account's spendable balance for a specific denom. - - - Since: cosmos-sdk 0.47 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -4668,11 +4395,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: address description: address is the address to query balances for. @@ -4720,10 +4445,7 @@ paths: signatures required by gogoproto. title: supply is the supply of the coins pagination: - description: |- - pagination defines the pagination in the response. - - Since: cosmos-sdk 0.43 + description: pagination defines the pagination in the response. type: object properties: next_key: @@ -4751,8 +4473,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -4763,11 +4483,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: pagination.key description: |- @@ -4819,9 +4537,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -4843,20 +4558,13 @@ paths: type: object properties: amount: + description: amount is the supply of the coin. type: object properties: denom: type: string amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. description: >- QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method. @@ -4865,8 +4573,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -4877,11 +4583,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: denom description: denom is the coin denom to query balances for. @@ -4900,7 +4604,6 @@ paths: contain a valid and supported path, including app, custom, p2p, and store. - description: 'Since: cosmos-sdk 0.46' operationId: ABCIQuery responses: '200': @@ -4913,8 +4616,10 @@ paths: format: int64 log: type: string + title: nondeterministic info: type: string + title: nondeterministic index: type: string format: int64 @@ -4924,6 +4629,11 @@ paths: value: type: string format: byte + height: + type: string + format: int64 + codespace: + type: string proof_ops: type: object properties: @@ -4940,29 +4650,15 @@ paths: data: type: string format: byte - description: >- + title: >- ProofOp defines an operation used for calculating Merkle - root. The data could - - be arbitrary format, providing necessary data for - example neighbouring node - - hash. + root + The data could be arbitrary format, providing necessary + data - Note: This type is a duplicate of the ProofOp proto type - defined in Tendermint. - description: >- - ProofOps is Merkle proof defined by the list of ProofOps. - - - Note: This type is a duplicate of the ProofOps proto type - defined in Tendermint. - height: - type: string - format: int64 - codespace: - type: string + for example neighbouring node hash + title: ProofOps is Merkle proof defined by the list of ProofOps description: >- ABCIQueryResponse defines the response structure for the ABCIQuery gRPC query. @@ -4977,8 +4673,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -4989,7 +4683,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -5047,12 +4741,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -5213,8 +4902,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. block: title: 'Deprecated: please use `sdk_block` instead' type: object @@ -5263,38 +4954,52 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs from the + previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. data: type: object @@ -5341,8 +5046,10 @@ paths: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -5364,8 +5071,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -5421,8 +5130,10 @@ paths: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -5444,8 +5155,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -5552,40 +5265,56 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs + from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -5613,8 +5342,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. signatures: type: array items: @@ -5628,6 +5359,12 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -5647,6 +5384,10 @@ paths: Commit contains the evidence that a block was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and + Commit(H+1) with signatures of + validators who signed it. validator_set: type: object properties: @@ -5667,15 +5408,18 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node + participating in the consensus protocol. proposer: type: object properties: @@ -5691,18 +5435,28 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node + participating in the consensus protocol. total_voting_power: type: string format: int64 + description: >- + ValidatorSet defines a set of + validators. + description: >- + LightBlock is a combination of SignedHeader + and ValidatorSet. It is used by light + clients. common_height: type: string format: int64 @@ -5723,15 +5477,18 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating + in the consensus protocol. total_voting_power: type: string format: int64 @@ -5742,6 +5499,10 @@ paths: LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of + misbehavior by a validator. + description: EvidenceList is a list of evidence. last_commit: type: object properties: @@ -5766,8 +5527,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. signatures: type: array items: @@ -5781,6 +5544,12 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -5799,8 +5568,10 @@ paths: description: >- Commit contains the evidence that a block was committed by a set of validators. + description: >- + Block defines the structure of a block in the CometBFT + blockchain. sdk_block: - title: 'Since: cosmos-sdk 0.47' type: object properties: header: @@ -5847,34 +5618,47 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs from the + previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string @@ -5886,6 +5670,9 @@ paths: we convert it to a Bech32 string for better UX. + + + original proposer of the block description: Header defines the structure of a Tendermint block header. data: type: object @@ -5932,8 +5719,10 @@ paths: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -5955,8 +5744,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -6012,8 +5803,10 @@ paths: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -6035,8 +5828,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -6143,40 +5938,56 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs + from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -6204,8 +6015,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. signatures: type: array items: @@ -6219,6 +6032,12 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -6238,6 +6057,10 @@ paths: Commit contains the evidence that a block was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and + Commit(H+1) with signatures of + validators who signed it. validator_set: type: object properties: @@ -6258,15 +6081,18 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node + participating in the consensus protocol. proposer: type: object properties: @@ -6282,18 +6108,28 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node + participating in the consensus protocol. total_voting_power: type: string format: int64 + description: >- + ValidatorSet defines a set of + validators. + description: >- + LightBlock is a combination of SignedHeader + and ValidatorSet. It is used by light + clients. common_height: type: string format: int64 @@ -6314,15 +6150,18 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating + in the consensus protocol. total_voting_power: type: string format: int64 @@ -6333,6 +6172,10 @@ paths: LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of + misbehavior by a validator. + description: EvidenceList is a list of evidence. last_commit: type: object properties: @@ -6357,8 +6200,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. signatures: type: array items: @@ -6372,6 +6217,12 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -6403,8 +6254,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -6415,7 +6264,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -6473,12 +6322,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -6620,8 +6464,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. block: title: 'Deprecated: please use `sdk_block` instead' type: object @@ -6670,38 +6516,52 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs from the + previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. data: type: object @@ -6748,8 +6608,10 @@ paths: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -6771,8 +6633,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -6828,8 +6692,10 @@ paths: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -6851,8 +6717,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -6959,40 +6827,56 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs + from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -7020,8 +6904,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. signatures: type: array items: @@ -7035,6 +6921,12 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -7054,6 +6946,10 @@ paths: Commit contains the evidence that a block was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and + Commit(H+1) with signatures of + validators who signed it. validator_set: type: object properties: @@ -7074,15 +6970,18 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node + participating in the consensus protocol. proposer: type: object properties: @@ -7098,18 +6997,28 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node + participating in the consensus protocol. total_voting_power: type: string format: int64 + description: >- + ValidatorSet defines a set of + validators. + description: >- + LightBlock is a combination of SignedHeader + and ValidatorSet. It is used by light + clients. common_height: type: string format: int64 @@ -7130,15 +7039,18 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating + in the consensus protocol. total_voting_power: type: string format: int64 @@ -7149,6 +7061,10 @@ paths: LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of + misbehavior by a validator. + description: EvidenceList is a list of evidence. last_commit: type: object properties: @@ -7173,8 +7089,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. signatures: type: array items: @@ -7188,6 +7106,12 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -7206,8 +7130,10 @@ paths: description: >- Commit contains the evidence that a block was committed by a set of validators. + description: >- + Block defines the structure of a block in the CometBFT + blockchain. sdk_block: - title: 'Since: cosmos-sdk 0.47' type: object properties: header: @@ -7254,34 +7180,47 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs from the + previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string @@ -7293,6 +7232,9 @@ paths: we convert it to a Bech32 string for better UX. + + + original proposer of the block description: Header defines the structure of a Tendermint block header. data: type: object @@ -7339,8 +7281,10 @@ paths: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -7362,8 +7306,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -7419,8 +7365,10 @@ paths: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -7442,8 +7390,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -7550,40 +7500,56 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs + from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -7611,8 +7577,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. signatures: type: array items: @@ -7626,6 +7594,12 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -7645,6 +7619,10 @@ paths: Commit contains the evidence that a block was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and + Commit(H+1) with signatures of + validators who signed it. validator_set: type: object properties: @@ -7665,15 +7643,18 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node + participating in the consensus protocol. proposer: type: object properties: @@ -7689,18 +7670,28 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node + participating in the consensus protocol. total_voting_power: type: string format: int64 + description: >- + ValidatorSet defines a set of + validators. + description: >- + LightBlock is a combination of SignedHeader + and ValidatorSet. It is used by light + clients. common_height: type: string format: int64 @@ -7721,15 +7712,18 @@ paths: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating + in the consensus protocol. total_voting_power: type: string format: int64 @@ -7740,6 +7734,10 @@ paths: LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of + misbehavior by a validator. + description: EvidenceList is a list of evidence. last_commit: type: object properties: @@ -7764,8 +7762,10 @@ paths: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. signatures: type: array items: @@ -7779,6 +7779,12 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -7810,8 +7816,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -7822,7 +7826,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -7880,12 +7884,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -8033,6 +8032,9 @@ paths: app: type: string format: uint64 + description: >- + ProtocolVersion represents the current p2p protocol + version. default_node_id: type: string listen_addr: @@ -8053,6 +8055,14 @@ paths: type: string rpc_address: type: string + description: >- + DefaultNodeInfoOther is the misc. application specific + data. + description: >- + DefaultNodeInfo is a basic node's information sent to other + peers during the + + p2p handshake. application_version: type: object properties: @@ -8085,7 +8095,6 @@ paths: title: Module is the type for VersionInfo cosmos_sdk_version: type: string - title: 'Since: cosmos-sdk 0.43' description: VersionInfo is the type for the GetNodeInfoResponse message. description: >- GetNodeInfoResponse is the response type for the Query/GetNodeInfo @@ -8095,8 +8104,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -8107,7 +8114,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -8165,12 +8172,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -8307,8 +8309,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -8319,7 +8319,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -8377,12 +8377,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -8522,7 +8517,7 @@ paths: pub_key: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -8580,12 +8575,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -8736,8 +8726,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -8748,7 +8736,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -8806,12 +8794,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -8977,9 +8960,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -9008,7 +8988,7 @@ paths: pub_key: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -9066,12 +9046,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -9222,8 +9197,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9234,7 +9207,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -9292,12 +9265,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -9468,9 +9436,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -9490,9 +9455,11 @@ paths: type: string pruning_keep_recent: type: string - title: pruning settings pruning_interval: type: string + halt_height: + type: string + format: uint64 description: >- ConfigResponse defines the response structure for the Config gRPC query. @@ -9501,8 +9468,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9513,11 +9478,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} tags: - Service /cosmos/base/node/v1beta1/status: @@ -9533,18 +9496,23 @@ paths: earliest_store_height: type: string format: uint64 + title: earliest block height available in the store height: type: string format: uint64 + title: current block height timestamp: type: string format: date-time + title: block height timestamp app_hash: type: string format: byte + title: app hash of the current block validator_hash: type: string format: byte + title: validator hash provided by the consensus header description: >- StateResponse defines the response structure for the status of a node. @@ -9553,8 +9521,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9565,11 +9531,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} tags: - Service /cosmos/distribution/v1beta1/community_pool: @@ -9578,8 +9542,6 @@ paths: description: >- Deprecated: Prefer to use x/protocolpool module's CommunityPool rpc method. - - Since: cosmos-sdk 0.50 operationId: CommunityPool responses: '200': @@ -9614,15 +9576,11 @@ paths: Deprecated - - Since: cosmos-sdk 0.50 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9633,11 +9591,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} tags: - Query /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards: @@ -9708,8 +9664,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9720,11 +9674,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: delegator_address description: delegator_address defines the delegator address to query for. @@ -9770,8 +9722,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9782,11 +9732,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: delegator_address description: delegator_address defines the delegator address to query for. @@ -9825,8 +9773,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9837,11 +9783,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: delegator_address description: delegator_address defines the delegator address to query for. @@ -9871,8 +9815,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9883,11 +9825,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: delegator_address description: delegator_address defines the delegator address to query for. @@ -9936,8 +9876,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9948,11 +9886,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} tags: - Query /cosmos/distribution/v1beta1/validators/{validator_address}: @@ -10016,8 +9952,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -10028,11 +9962,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: validator_address description: validator_address defines the validator address to query for. @@ -10081,8 +10013,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -10093,11 +10023,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: validator_address description: validator_address defines the validator address to query for. @@ -10153,8 +10081,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -10165,11 +10091,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: validator_address description: validator_address defines the validator address to query for. @@ -10236,8 +10160,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -10248,11 +10170,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: validator_address description: validator_address defines the validator address to query for. @@ -10325,9 +10245,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -10348,7 +10265,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -10406,12 +10323,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -10556,8 +10468,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -10568,7 +10478,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -10626,12 +10536,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -10797,9 +10702,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -10816,9 +10718,10 @@ paths: type: object properties: evidence: + description: evidence returns the requested evidence. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -10875,123 +10778,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} description: >- QueryEvidenceResponse is the response type for the Query/Evidence RPC method. @@ -11000,8 +10787,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -11012,7 +10797,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -11070,12 +10855,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -11192,10 +10972,7 @@ paths: } parameters: - name: hash - description: |- - hash defines the evidence hash of the requested evidence. - - Since: cosmos-sdk 0.47 + description: hash defines the evidence hash of the requested evidence. in: path required: true type: string @@ -11289,8 +11066,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -11301,7 +11076,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -11359,12 +11134,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -11511,9 +11281,10 @@ paths: format: uint64 description: proposal_id defines the unique id of the proposal. content: + description: content is the proposal's content. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -11571,128 +11342,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} status: description: status defines the proposal status. type: string @@ -11801,8 +11451,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -11813,7 +11461,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -11871,12 +11519,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -12078,9 +11721,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -12104,9 +11744,10 @@ paths: format: uint64 description: proposal_id defines the unique id of the proposal. content: + description: content is the proposal's content. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -12164,126 +11805,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} status: description: status defines the proposal status. type: string @@ -12367,8 +11889,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -12379,7 +11899,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -12437,12 +11957,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -12642,8 +12157,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -12654,7 +12167,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -12712,12 +12225,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -12889,9 +12397,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -12910,6 +12415,7 @@ paths: type: object properties: deposit: + description: deposit defines the requested deposit. type: object properties: proposal_id: @@ -12939,11 +12445,6 @@ paths: signatures required by gogoproto. description: amount to be deposited by depositor. - description: >- - Deposit defines an amount deposited by an account address to - an active - - proposal. description: >- QueryDepositResponse is the response type for the Query/Deposit RPC method. @@ -12952,8 +12453,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -12964,7 +12463,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -13022,12 +12521,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -13192,8 +12686,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -13204,7 +12696,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -13262,12 +12754,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -13456,9 +12943,6 @@ paths: description: >- WeightedVoteOption defines a unit of vote for vote split. - - - Since: cosmos-sdk 0.43 description: |- options is the weighted vote options. @@ -13496,8 +12980,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -13508,7 +12990,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -13566,12 +13048,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -13743,9 +13220,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -13766,6 +13240,7 @@ paths: type: object properties: vote: + description: vote defines the queried vote. type: object properties: proposal_id: @@ -13818,18 +13293,10 @@ paths: description: >- WeightedVoteOption defines a unit of vote for vote split. - - - Since: cosmos-sdk 0.43 description: |- options is the weighted vote options. Since: cosmos-sdk 0.43 - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. description: >- QueryVoteResponse is the response type for the Query/Vote RPC method. @@ -13838,8 +13305,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -13850,7 +13315,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -13908,12 +13373,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -14062,8 +13522,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -14074,7 +13532,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -14132,12 +13590,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -14254,7 +13707,7 @@ paths: } tags: - Query - /cosmos/gov/v1/params/{params_type}: + /cosmos/gov/v1/params: get: summary: Params queries all parameters of the gov module. operationId: GovV1Params @@ -14330,10 +13783,7 @@ paths: vetoed. Default value: 1/3. params: - description: |- - params defines all the parameters of x/gov module. - - Since: cosmos-sdk 0.47 + description: params defines all the parameters of x/gov module. type: object properties: min_deposit: @@ -14357,7 +13807,7 @@ paths: max_deposit_period: type: string description: >- - Maximum period for Atom holders to deposit on a proposal. + Maximum period for stake holders to deposit on a proposal. Initial value: 2 months. @@ -14391,9 +13841,6 @@ paths: description: >- The cancel ratio which will not be returned back to the depositors when a proposal is cancelled. - - - Since: cosmos-sdk 0.50 proposal_cancel_dest: type: string description: >- @@ -14402,23 +13849,14 @@ paths: If empty, the (proposal_cancel_ratio * deposit) proposal deposits will be burned. - - - Since: cosmos-sdk 0.50 expedited_voting_period: type: string - description: |- - Duration of the voting period of an expedited proposal. - - Since: cosmos-sdk 0.50 + description: Duration of the voting period of an expedited proposal. expedited_threshold: type: string description: >- Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. - - - Since: cosmos-sdk 0.50 expedited_min_deposit: type: array items: @@ -14441,15 +13879,12 @@ paths: period. burn_vote_quorum: type: boolean - description: 'Since: cosmos-sdk 0.47' title: burn deposits if a proposal does not meet quorum burn_proposal_deposit_prevote: type: boolean - description: 'Since: cosmos-sdk 0.47' title: burn deposits if the proposal does not enter voting period burn_vote_veto: type: boolean - description: 'Since: cosmos-sdk 0.47' title: burn deposits if quorum with vote type no_veto is met min_deposit_ratio: type: string @@ -14461,9 +13896,6 @@ paths: min_deposit of 100stake, a deposit of 1stake would be required. - - - Since: cosmos-sdk 0.50 proposal_cancel_max_period: type: string description: >- @@ -14482,7 +13914,6 @@ paths: type: array items: type: string - description: 'Since: x/gov v1.0.0' title: >- optimistic_authorized_addresses is an optional governance parameter that limits the authorized accounts than can @@ -14496,9 +13927,20 @@ paths: converted to a standard proposal. The threshold is expressed as a percentage of the total bonded tokens. + yes_quorum: + type: string + description: >- + yes_quorum defines the minimum percentage of Yes votes in + quorum for proposal to pass. + Default value: 0 (disabled). + expedited_quorum: + type: string + description: >- + Minimum percentage of total stake needed to vote for a + result to be - Since: x/gov v1.0.0 + considered valid for an expedited proposal. description: >- QueryParamsResponse is the response type for the Query/Params RPC method. @@ -14507,8 +13949,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -14519,7 +13959,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -14577,12 +14017,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -14704,6 +14139,253 @@ paths: "voting", "tallying" or "deposit". + + Deprecated: all params are stored in Params. + in: query + required: false + type: string + tags: + - Query + /cosmos/gov/v1/params/{msg_url}: + get: + summary: >- + MessageBasedParams queries the message specific governance params based + on a msg url. + operationId: MessageBasedParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + voting_period: + type: string + description: Duration of the voting period. + quorum: + type: string + description: >- + Minimum percentage of total stake needed to vote for a + result to be considered valid. + yes_quorum: + type: string + description: >- + yes_quorum defines the minimum percentage of Yes votes in + quorum for proposal to pass. + + If zero then the yes_quorum is disabled. + threshold: + type: string + description: Minimum proportion of Yes votes for proposal to pass. + veto_threshold: + type: string + description: >- + Minimum value of Veto votes to Total votes ratio for + proposal to be vetoed. + description: >- + MessageBasedParams defines the parameters of specific messages + in a proposal. + + It is used to define the parameters of a proposal that is + based on a specific message. + + Once a message has message based params, it only supports a + standard proposal type. + description: >- + QueryMessageBasedParamsResponse is the response for the + Query/MessageBasedParams RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: msg_url in: path required: true type: string @@ -14733,7 +14415,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -14791,12 +14473,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -14940,20 +14617,62 @@ paths: properties: yes_count: type: string - description: yes_count is the number of yes votes on a proposal. + description: |- + yes_count is the number of yes votes on a proposal. + + option 1 abstain_count: type: string description: >- abstain_count is the number of abstain votes on a proposal. + + + option 2 no_count: type: string - description: no_count is the number of no votes on a proposal. + description: |- + no_count is the number of no votes on a proposal. + + option 3 no_with_veto_count: type: string description: >- no_with_veto_count is the number of no with veto votes on a proposal. + + + option 4 + option_one_count: + type: string + description: >- + option_one_count corresponds to the number of votes + for option one (= yes_count for non multiple choice + proposals). + option_two_count: + type: string + description: >- + option_two_count corresponds to the number of votes + for option two (= abstain_count for non multiple + choice + + proposals). + option_three_count: + type: string + description: >- + option_three_count corresponds to the number of + votes for option three (= no_count for non multiple + choice + + proposals). + option_four_count: + type: string + description: >- + option_four_count corresponds to the number of votes + for option four (= no_with_veto_count for non + multiple choice + + proposals). spam_count: type: string description: >- @@ -15008,28 +14727,21 @@ paths: https://docs.cosmos.network/v0.47/modules/gov#proposal-3 title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal proposer: type: string - description: 'Since: cosmos-sdk 0.47' title: proposer is the address of the proposal sumbitter expedited: type: boolean - description: |- - Since: cosmos-sdk 0.50 - Deprecated: Use ProposalType instead. + description: 'Deprecated: Use ProposalType instead.' title: expedited defines if the proposal is expedited failed_reason: type: string - description: 'Since: cosmos-sdk 0.50' title: failed_reason defines the reason why the proposal failed proposal_type: - description: 'Since: cosmos-sdk 0.51' title: proposal_type defines the type of the proposal type: string enum: @@ -15039,6 +14751,17 @@ paths: - PROPOSAL_TYPE_OPTIMISTIC - PROPOSAL_TYPE_EXPEDITED default: PROPOSAL_TYPE_UNSPECIFIED + description: >- + ProposalType enumerates the valid proposal types. + + All proposal types are v1.Proposal which have different + voting periods or tallying logic. + + - PROPOSAL_TYPE_UNSPECIFIED: PROPOSAL_TYPE_UNSPECIFIED defines no proposal type, which fallback to PROPOSAL_TYPE_STANDARD. + - PROPOSAL_TYPE_STANDARD: PROPOSAL_TYPE_STANDARD defines the type for a standard proposal. + - PROPOSAL_TYPE_MULTIPLE_CHOICE: PROPOSAL_TYPE_MULTIPLE_CHOICE defines the type for a multiple choice proposal. + - PROPOSAL_TYPE_OPTIMISTIC: PROPOSAL_TYPE_OPTIMISTIC defines the type for an optimistic proposal. + - PROPOSAL_TYPE_EXPEDITED: PROPOSAL_TYPE_EXPEDITED defines the type for an expedited proposal. description: >- Proposal defines the core field members of a governance proposal. @@ -15072,8 +14795,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -15084,7 +14805,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -15142,12 +14863,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -15349,9 +15065,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -15368,6 +15081,7 @@ paths: type: object properties: proposal: + description: proposal is the requested governance proposal. type: object properties: id: @@ -15379,7 +15093,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -15437,12 +15151,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -15586,20 +15295,61 @@ paths: properties: yes_count: type: string - description: yes_count is the number of yes votes on a proposal. + description: |- + yes_count is the number of yes votes on a proposal. + + option 1 abstain_count: type: string description: >- abstain_count is the number of abstain votes on a proposal. + + + option 2 no_count: type: string - description: no_count is the number of no votes on a proposal. + description: |- + no_count is the number of no votes on a proposal. + + option 3 no_with_veto_count: type: string description: >- no_with_veto_count is the number of no with veto votes on a proposal. + + + option 4 + option_one_count: + type: string + description: >- + option_one_count corresponds to the number of votes + for option one (= yes_count for non multiple choice + proposals). + option_two_count: + type: string + description: >- + option_two_count corresponds to the number of votes + for option two (= abstain_count for non multiple + choice + + proposals). + option_three_count: + type: string + description: >- + option_three_count corresponds to the number of votes + for option three (= no_count for non multiple choice + + proposals). + option_four_count: + type: string + description: >- + option_four_count corresponds to the number of votes + for option four (= no_with_veto_count for non multiple + choice + + proposals). spam_count: type: string description: spam_count is the number of spam votes on a proposal. @@ -15651,28 +15401,21 @@ paths: https://docs.cosmos.network/v0.47/modules/gov#proposal-3 title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal proposer: type: string - description: 'Since: cosmos-sdk 0.47' title: proposer is the address of the proposal sumbitter expedited: type: boolean - description: |- - Since: cosmos-sdk 0.50 - Deprecated: Use ProposalType instead. + description: 'Deprecated: Use ProposalType instead.' title: expedited defines if the proposal is expedited failed_reason: type: string - description: 'Since: cosmos-sdk 0.50' title: failed_reason defines the reason why the proposal failed proposal_type: - description: 'Since: cosmos-sdk 0.51' title: proposal_type defines the type of the proposal type: string enum: @@ -15682,9 +15425,17 @@ paths: - PROPOSAL_TYPE_OPTIMISTIC - PROPOSAL_TYPE_EXPEDITED default: PROPOSAL_TYPE_UNSPECIFIED - description: >- - Proposal defines the core field members of a governance - proposal. + description: >- + ProposalType enumerates the valid proposal types. + + All proposal types are v1.Proposal which have different + voting periods or tallying logic. + + - PROPOSAL_TYPE_UNSPECIFIED: PROPOSAL_TYPE_UNSPECIFIED defines no proposal type, which fallback to PROPOSAL_TYPE_STANDARD. + - PROPOSAL_TYPE_STANDARD: PROPOSAL_TYPE_STANDARD defines the type for a standard proposal. + - PROPOSAL_TYPE_MULTIPLE_CHOICE: PROPOSAL_TYPE_MULTIPLE_CHOICE defines the type for a multiple choice proposal. + - PROPOSAL_TYPE_OPTIMISTIC: PROPOSAL_TYPE_OPTIMISTIC defines the type for an optimistic proposal. + - PROPOSAL_TYPE_EXPEDITED: PROPOSAL_TYPE_EXPEDITED defines the type for an expedited proposal. description: >- QueryProposalResponse is the response type for the Query/Proposal RPC method. @@ -15693,8 +15444,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -15705,7 +15454,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -15763,12 +15512,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -15968,8 +15712,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -15980,7 +15722,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -16038,12 +15780,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -16215,9 +15952,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -16236,6 +15970,7 @@ paths: type: object properties: deposit: + description: deposit defines the requested deposit. type: object properties: proposal_id: @@ -16265,11 +16000,6 @@ paths: signatures required by gogoproto. description: amount to be deposited by depositor. - description: >- - Deposit defines an amount deposited by an account address to - an active - - proposal. description: >- QueryDepositResponse is the response type for the Query/Deposit RPC method. @@ -16278,8 +16008,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16290,7 +16018,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -16348,12 +16076,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -16498,20 +16221,59 @@ paths: properties: yes_count: type: string - description: yes_count is the number of yes votes on a proposal. + description: |- + yes_count is the number of yes votes on a proposal. + + option 1 abstain_count: type: string description: >- abstain_count is the number of abstain votes on a proposal. + + + option 2 no_count: type: string - description: no_count is the number of no votes on a proposal. + description: |- + no_count is the number of no votes on a proposal. + + option 3 no_with_veto_count: type: string description: >- no_with_veto_count is the number of no with veto votes on a proposal. + + + option 4 + option_one_count: + type: string + description: >- + option_one_count corresponds to the number of votes for + option one (= yes_count for non multiple choice + proposals). + option_two_count: + type: string + description: >- + option_two_count corresponds to the number of votes for + option two (= abstain_count for non multiple choice + + proposals). + option_three_count: + type: string + description: >- + option_three_count corresponds to the number of votes for + option three (= no_count for non multiple choice + + proposals). + option_four_count: + type: string + description: >- + option_four_count corresponds to the number of votes for + option four (= no_with_veto_count for non multiple choice + + proposals). spam_count: type: string description: spam_count is the number of spam votes on a proposal. @@ -16523,8 +16285,235 @@ paths: schema: type: object properties: - error: + code: + type: integer + format: int32 + message: type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + tags: + - Query + /cosmos/gov/v1/proposals/{proposal_id}/vote_options: + get: + summary: ProposalVoteOptions queries the valid voting options for a proposal. + operationId: ProposalVoteOptions + responses: + '200': + description: A successful response. + schema: + type: object + properties: + vote_options: + description: vote_options defines the valid voting options for a proposal. + type: object + properties: + option_one: + type: string + title: option_one is the first option of the proposal + option_two: + type: string + title: option_two is the second option of the proposal + option_three: + type: string + title: option_three is the third option of the proposal + option_four: + type: string + title: option_four is the fourth option of the proposal + option_spam: + type: string + description: option_spam is always present for all proposals. + description: >- + QueryProposalVoteOptionsResponse is the response type for the + Query/ProposalVoteOptions RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: code: type: integer format: int32 @@ -16535,7 +16524,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -16593,12 +16582,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -16756,14 +16740,14 @@ paths: type: string enum: - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_ONE - VOTE_OPTION_YES - - VOTE_OPTION_TWO + - VOTE_OPTION_ONE - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_THREE + - VOTE_OPTION_TWO - VOTE_OPTION_NO - - VOTE_OPTION_FOUR + - VOTE_OPTION_THREE - VOTE_OPTION_NO_WITH_VETO + - VOTE_OPTION_FOUR - VOTE_OPTION_SPAM default: VOTE_OPTION_UNSPECIFIED weight: @@ -16816,8 +16800,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16828,7 +16810,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -16886,12 +16868,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -17063,9 +17040,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -17082,6 +17056,7 @@ paths: type: object properties: vote: + description: vote defines the queried vote. type: object properties: proposal_id: @@ -17103,14 +17078,14 @@ paths: type: string enum: - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_ONE - VOTE_OPTION_YES - - VOTE_OPTION_TWO + - VOTE_OPTION_ONE - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_THREE + - VOTE_OPTION_TWO - VOTE_OPTION_NO - - VOTE_OPTION_FOUR + - VOTE_OPTION_THREE - VOTE_OPTION_NO_WITH_VETO + - VOTE_OPTION_FOUR - VOTE_OPTION_SPAM default: VOTE_OPTION_UNSPECIFIED weight: @@ -17129,11 +17104,6 @@ paths: the recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/gov#vote-5 - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. description: >- QueryVoteResponse is the response type for the Query/Vote RPC method. @@ -17142,8 +17112,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17154,7 +17122,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -17212,12 +17180,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -17370,8 +17333,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17382,11 +17343,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} tags: - Query /cosmos/mint/v1beta1/inflation: @@ -17413,8 +17372,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17425,11 +17382,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} tags: - Query /cosmos/mint/v1beta1/params: @@ -17465,6 +17420,9 @@ paths: type: string format: uint64 title: expected blocks per year + max_supply: + type: string + title: maximum supply for the token description: >- QueryParamsResponse is the response type for the Query/Params RPC method. @@ -17473,8 +17431,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17485,11 +17441,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} tags: - Query /cosmos/params/v1beta1/params: @@ -17522,8 +17476,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17534,11 +17486,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: subspace description: subspace defines the module to query the parameter for. @@ -17557,7 +17507,6 @@ paths: summary: >- Subspaces queries for all registered subspaces and all keys for a subspace. - description: 'Since: cosmos-sdk 0.46' operationId: Subspaces responses: '200': @@ -17581,24 +17530,16 @@ paths: that exist for the subspace. - - - Since: cosmos-sdk 0.46 description: >- QuerySubspacesResponse defines the response types for querying for all registered subspaces and all keys for a subspace. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17609,11 +17550,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} tags: - Query /cosmos/slashing/v1beta1/params: @@ -17654,8 +17593,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17666,11 +17603,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} tags: - Query /cosmos/slashing/v1beta1/signing_infos: @@ -17700,8 +17635,8 @@ paths: type: string format: int64 description: >- - Index which is incremented every time a validator is - bonded in a block and + DEPRECATED: Index which is incremented every time a + validator is bonded in a block and _may_ have signed a pre-commit or not. This in conjunction with the @@ -17776,8 +17711,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17788,11 +17721,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: pagination.key description: |- @@ -17844,9 +17775,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -17863,6 +17791,9 @@ paths: type: object properties: val_signing_info: + title: >- + val_signing_info is the signing info of requested val cons + address type: object properties: address: @@ -17877,8 +17808,8 @@ paths: type: string format: int64 description: >- - Index which is incremented every time a validator is - bonded in a block and + DEPRECATED: Index which is incremented every time a + validator is bonded in a block and _may_ have signed a pre-commit or not. This in conjunction with the @@ -17914,9 +17845,6 @@ paths: monitoring their liveness activity. - title: >- - val_signing_info is the signing info of requested val cons - address title: >- QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC @@ -17927,8 +17855,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17939,11 +17865,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: cons_address description: cons_address is the address to query signing info of @@ -18049,8 +17973,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -18061,7 +17983,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -18119,12 +18041,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -18162,7 +18079,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -18172,7 +18089,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -18202,7 +18119,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -18295,9 +18211,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -18384,7 +18297,10 @@ paths: description: >- RedelegationEntry defines a redelegation object with relevant metadata. - description: entries are the redelegation entries. + description: |- + entries are the redelegation entries. + + redelegation entries description: >- Redelegation contains the list of a particular delegator's redelegating bonds @@ -18484,8 +18400,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -18496,7 +18410,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -18554,12 +18468,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -18597,7 +18506,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -18607,7 +18516,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -18637,7 +18546,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -18740,9 +18648,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -18824,7 +18729,10 @@ paths: description: >- UnbondingDelegationEntry defines an unbonding object with relevant metadata. - description: entries are the unbonding delegation entries. + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries description: >- UnbondingDelegation stores all of a single delegator's unbonding bonds @@ -18859,8 +18767,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -18871,7 +18777,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -18929,12 +18835,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -18972,7 +18873,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -18982,7 +18883,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -19012,7 +18913,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -19105,9 +19005,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -19141,9 +19038,12 @@ paths: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -19201,128 +19101,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -19425,9 +19204,6 @@ paths: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -19493,8 +19269,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -19505,7 +19279,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -19563,12 +19337,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -19606,7 +19375,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -19616,7 +19385,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -19646,7 +19415,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -19739,9 +19507,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -19760,6 +19525,7 @@ paths: type: object properties: validator: + description: validator defines the validator info. type: object properties: operator_address: @@ -19768,9 +19534,12 @@ paths: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -19828,126 +19597,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -20049,9 +19699,6 @@ paths: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -20066,29 +19713,6 @@ paths: title: >- list of unbonding ids, each uniquely identifying an unbonding of this validator - description: >- - Validator defines a validator, together with the total amount - of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation - of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated divided - by the current - - exchange rate. Voting power can be calculated as total bonded - shares - - multiplied by exchange rate. description: |- QueryDelegatorValidatorResponse response type for the Query/DelegatorValidator RPC method. @@ -20097,8 +19721,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -20109,7 +19731,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -20167,12 +19789,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -20210,7 +19827,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -20220,7 +19837,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -20250,7 +19867,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -20359,37 +19975,51 @@ paths: hash: type: string format: byte - title: PartsetHeader + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs from the + previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. valset: type: array @@ -20402,9 +20032,12 @@ paths: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -20462,129 +20095,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of - the above specified type. - description: >- - `Any` contains an arbitrary serialized protocol - buffer message along with a - - URL that describes the type of the serialized - message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods - of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will - by default use - - 'type.googleapis.com/full.type.name' as the type URL - and the unpack - - methods only use the fully qualified type name after - the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" - will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded - message, with an - - additional field `@type` which contains the type - URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to - the `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -20688,9 +20199,6 @@ paths: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -20761,8 +20269,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -20773,7 +20279,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -20831,12 +20337,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -20874,7 +20375,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -20884,7 +20385,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -20914,7 +20415,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -21029,8 +20529,214 @@ paths: schema: type: object properties: - error: + code: + type: integer + format: int32 + message: type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /cosmos/staking/v1beta1/pool: + get: + summary: Pool queries the pool info. + operationId: Pool + responses: + '200': + description: A successful response. + schema: + type: object + properties: + pool: + description: pool defines the pool info. + type: object + properties: + not_bonded_tokens: + type: string + bonded_tokens: + type: string + description: QueryPoolResponse is response type for the Query/Pool RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: code: type: integer format: int32 @@ -21041,7 +20747,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -21099,12 +20805,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -21142,7 +20843,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -21152,7 +20853,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -21182,223 +20883,6 @@ paths: JSON - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/staking/v1beta1/pool: - get: - summary: Pool queries the pool info. - operationId: Pool - responses: - '200': - description: A successful response. - schema: - type: object - properties: - pool: - description: pool defines the pool info. - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - ==== The JSON representation of an `Any` value uses the regular @@ -21463,9 +20947,12 @@ paths: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -21523,128 +21010,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -21747,9 +21113,6 @@ paths: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -21815,8 +21178,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -21827,7 +21188,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -21885,12 +21246,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -21928,7 +21284,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -21938,7 +21294,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -21968,7 +21324,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -22061,9 +21416,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -22080,6 +21432,7 @@ paths: type: object properties: validator: + description: validator defines the validator info. type: object properties: operator_address: @@ -22088,9 +21441,12 @@ paths: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -22148,126 +21504,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -22369,9 +21606,6 @@ paths: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -22386,29 +21620,6 @@ paths: title: >- list of unbonding ids, each uniquely identifying an unbonding of this validator - description: >- - Validator defines a validator, together with the total amount - of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation - of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated divided - by the current - - exchange rate. Voting power can be calculated as total bonded - shares - - multiplied by exchange rate. title: >- QueryValidatorResponse is response type for the Query/Validator RPC method @@ -22417,8 +21628,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -22429,7 +21638,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -22487,12 +21696,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -22530,7 +21734,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -22540,7 +21744,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -22570,7 +21774,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -22707,8 +21910,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -22719,7 +21920,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -22777,12 +21978,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -22820,7 +22016,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -22830,7 +22026,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -22860,7 +22056,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -22953,9 +22148,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -22972,6 +22164,9 @@ paths: type: object properties: delegation_response: + description: >- + delegation_responses defines the delegation info of a + delegation. type: object properties: delegation: @@ -23013,12 +22208,6 @@ paths: custom method signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a - - balance in addition to shares which is more suitable for - client responses. description: >- QueryDelegationResponse is response type for the Query/Delegation RPC method. @@ -23027,8 +22216,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -23039,7 +22226,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -23097,12 +22284,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -23140,7 +22322,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -23150,7 +22332,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -23180,7 +22362,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -23243,6 +22424,7 @@ paths: type: object properties: unbond: + description: unbond defines the unbonding information of a delegation. type: object properties: delegator_address: @@ -23289,12 +22471,10 @@ paths: description: >- UnbondingDelegationEntry defines an unbonding object with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds + description: |- + entries are the unbonding delegation entries. - for a single validator in an time-ordered list. + unbonding delegation entries description: >- QueryDelegationResponse is response type for the Query/UnbondingDelegation @@ -23305,8 +22485,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -23317,7 +22495,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -23375,12 +22553,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -23418,7 +22591,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -23428,7 +22601,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -23458,7 +22631,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -23582,7 +22754,10 @@ paths: description: >- UnbondingDelegationEntry defines an unbonding object with relevant metadata. - description: entries are the unbonding delegation entries. + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries description: >- UnbondingDelegation stores all of a single delegator's unbonding bonds @@ -23617,8 +22792,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -23629,7 +22802,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -23687,12 +22860,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -23730,7 +22898,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -23740,7 +22908,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -23770,7 +22938,6 @@ paths: JSON - ==== The JSON representation of an `Any` value uses the regular @@ -23863,9 +23030,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -23874,7 +23038,6 @@ paths: /cosmos/tx/v1beta1/decode: post: summary: TxDecode decodes the transaction. - description: 'Since: cosmos-sdk 0.47' operationId: TxDecode responses: '200': @@ -23886,8 +23049,230 @@ paths: schema: type: object properties: - error: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: body + description: |- + TxDecodeRequest is the request type for the Service.TxDecode + RPC method. + in: body + required: true + schema: + type: object + properties: + tx_bytes: + type: string + format: byte + description: tx_bytes is the raw transaction. + description: |- + TxDecodeRequest is the request type for the Service.TxDecode + RPC method. + tags: + - Service + /cosmos/tx/v1beta1/decode/amino: + post: + summary: TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON. + operationId: TxDecodeAmino + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amino_json: type: string + description: >- + TxDecodeAminoResponse is the response type for the + Service.TxDecodeAmino + + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: code: type: integer format: int32 @@ -23898,7 +23283,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -23956,12 +23341,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -24078,240 +23458,11 @@ paths: } parameters: - name: body - in: body - required: true - schema: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - description: |- - TxDecodeRequest is the request type for the Service.TxDecode - RPC method. - - Since: cosmos-sdk 0.47 - tags: - - Service - /cosmos/tx/v1beta1/decode/amino: - post: - summary: TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON. - description: 'Since: cosmos-sdk 0.47' - operationId: TxDecodeAmino - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amino_json: - type: string - description: >- - TxDecodeAminoResponse is the response type for the - Service.TxDecodeAmino - - RPC method. - - - Since: cosmos-sdk 0.47 - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): + description: >- + TxDecodeAminoRequest is the request type for the + Service.TxDecodeAmino - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: body + RPC method. in: body required: true schema: @@ -24325,15 +23476,11 @@ paths: Service.TxDecodeAmino RPC method. - - - Since: cosmos-sdk 0.47 tags: - Service /cosmos/tx/v1beta1/encode: post: summary: TxEncode encodes the transaction. - description: 'Since: cosmos-sdk 0.47' operationId: TxEncode responses: '200': @@ -24348,15 +23495,11 @@ paths: description: |- TxEncodeResponse is the response type for the Service.TxEncode method. - - Since: cosmos-sdk 0.47 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -24367,7 +23510,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -24425,12 +23568,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -24547,6 +23685,9 @@ paths: } parameters: - name: body + description: |- + TxEncodeRequest is the request type for the Service.TxEncode + RPC method. in: body required: true schema: @@ -24556,7 +23697,6 @@ paths: /cosmos/tx/v1beta1/encode/amino: post: summary: TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes. - description: 'Since: cosmos-sdk 0.47' operationId: TxEncodeAmino responses: '200': @@ -24572,16 +23712,11 @@ paths: Service.TxEncodeAmino RPC method. - - - Since: cosmos-sdk 0.47 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -24592,7 +23727,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -24650,12 +23785,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -24772,6 +23902,11 @@ paths: } parameters: - name: body + description: >- + TxEncodeAminoRequest is the request type for the + Service.TxEncodeAmino + + RPC method. in: body required: true schema: @@ -24784,9 +23919,6 @@ paths: Service.TxEncodeAmino RPC method. - - - Since: cosmos-sdk 0.47 tags: - Service /cosmos/tx/v1beta1/simulate: @@ -24854,6 +23986,7 @@ paths: type: string index: type: boolean + title: nondeterministic description: >- EventAttribute is a single key-value pair, associated with an event. @@ -24863,6 +23996,11 @@ paths: ResponseFinalizeBlock and ResponseCheckTx. + Up to 0.37, this could also be used in + ResponseBeginBlock, ResponseEndBlock, + + and ResponseDeliverTx. + Later, transactions may be queried using these events. description: >- Events contains a slice of Event objects that were emitted @@ -24874,7 +24012,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -24932,12 +24070,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -25057,9 +24190,6 @@ paths: description: >- msg_responses contains the Msg handler responses type packed in Anys. - - - Since: cosmos-sdk 0.46 description: |- SimulateResponse is the response type for the Service.SimulateRPC method. @@ -25068,8 +24198,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -25080,7 +24208,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -25138,12 +24266,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -25260,6 +24383,9 @@ paths: } parameters: - name: body + description: |- + SimulateRequest is the request type for the Service.Simulate + RPC method. in: body required: true schema: @@ -25280,8 +24406,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -25292,7 +24416,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -25350,12 +24474,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -25535,9 +24654,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -25579,9 +24695,6 @@ paths: Tendermint's TxSearch RPC method. The query must be valid. - - - Since cosmos-sdk 0.50 in: query required: false type: string @@ -25597,6 +24710,7 @@ paths: type: object properties: tx_response: + description: tx_response is the queried TxResponses. type: object properties: height: @@ -25683,9 +24797,10 @@ paths: format: int64 description: Amount of gas consumed by transaction. tx: + description: The request transaction bytes. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -25743,126 +24858,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} timestamp: type: string description: >- @@ -25891,6 +24887,7 @@ paths: type: string index: type: boolean + title: nondeterministic description: >- EventAttribute is a single key-value pair, associated with an event. @@ -25900,6 +24897,11 @@ paths: ResponseFinalizeBlock and ResponseCheckTx. + Up to 0.37, this could also be used in + ResponseBeginBlock, ResponseEndBlock, + + and ResponseDeliverTx. + Later, transactions may be queried using these events. description: >- Events defines all the events emitted by processing a @@ -25916,11 +24918,6 @@ paths: Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. description: |- BroadcastTxResponse is the response type for the Service.BroadcastTx method. @@ -25929,8 +24926,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -25941,7 +24936,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -25999,12 +24994,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -26121,6 +25111,11 @@ paths: } parameters: - name: body + description: >- + BroadcastTxRequest is the request type for the + Service.BroadcastTxRequest + + RPC method. in: body required: true schema: @@ -26162,7 +25157,6 @@ paths: /cosmos/tx/v1beta1/txs/block/{height}: get: summary: GetBlockWithTxs fetches a block with decoded txs. - description: 'Since: cosmos-sdk 0.45.2' operationId: GetBlockWithTxs responses: '200': @@ -26174,8 +25168,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -26186,7 +25178,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -26244,12 +25236,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -26421,9 +25408,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -26443,8 +25427,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -26455,7 +25437,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -26513,12 +25495,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -26665,8 +25642,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -26677,7 +25652,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -26735,12 +25710,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -26866,7 +25836,6 @@ paths: /cosmos/upgrade/v1beta1/authority: get: summary: Returns the account with authority to conduct upgrades - description: 'Since: cosmos-sdk 0.46' operationId: Authority responses: '200': @@ -26876,15 +25845,12 @@ paths: properties: address: type: string - description: 'Since: cosmos-sdk 0.46' title: QueryAuthorityResponse is the response type for Query/Authority default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -26895,7 +25861,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -26953,12 +25919,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -27134,9 +26095,16 @@ paths: such as a git commit that validators could automatically upgrade to upgraded_client_state: + description: >- + Deprecated: UpgradedClientState field has been deprecated. + IBC upgrade logic has been + + moved to the IBC module in the sub module 02-client. + + If this field is not empty, an error will be thrown. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -27194,126 +26162,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} description: >- QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC @@ -27324,8 +26173,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -27336,7 +26183,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -27394,12 +26241,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -27519,7 +26361,6 @@ paths: /cosmos/upgrade/v1beta1/module_versions: get: summary: ModuleVersions queries the list of module versions from state. - description: 'Since: cosmos-sdk 0.43' operationId: ModuleVersions responses: '200': @@ -27539,10 +26380,7 @@ paths: type: string format: uint64 title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. - - Since: cosmos-sdk 0.43 + description: ModuleVersion specifies a module and its consensus version. description: >- module_versions is a list of module names with their consensus versions. @@ -27551,16 +26389,11 @@ paths: Query/ModuleVersions RPC method. - - - Since: cosmos-sdk 0.43 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -27571,7 +26404,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -27629,12 +26462,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -27754,7 +26582,7 @@ paths: description: |- module_name is a field to query a specific module consensus version from state. Leaving this empty will - fetch the full list of module versions from state. + fetch the full list of module versions from state in: query required: false type: string @@ -27784,7 +26612,6 @@ paths: upgraded_consensus_state: type: string format: byte - title: 'Since: cosmos-sdk 0.43' description: >- QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState @@ -27795,8 +26622,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -27807,7 +26632,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -27865,12 +26690,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -28014,7 +26834,7 @@ paths: authorization: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -28072,12 +26892,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -28238,8 +27053,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -28250,7 +27063,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -28308,12 +27121,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -28494,9 +27302,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -28505,7 +27310,6 @@ paths: /cosmos/authz/v1beta1/grants/grantee/{grantee}: get: summary: GranteeGrants returns a list of `GrantAuthorization` by grantee. - description: 'Since: cosmos-sdk 0.46' operationId: GranteeGrants responses: '200': @@ -28525,7 +27329,7 @@ paths: authorization: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -28583,12 +27387,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -28741,8 +27540,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -28753,7 +27550,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -28811,12 +27608,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -28986,9 +27778,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -28997,7 +27786,6 @@ paths: /cosmos/authz/v1beta1/grants/granter/{granter}: get: summary: GranterGrants returns list of `GrantAuthorization`, granted by granter. - description: 'Since: cosmos-sdk 0.46' operationId: GranterGrants responses: '200': @@ -29017,7 +27805,7 @@ paths: authorization: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -29075,12 +27863,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -29233,8 +28016,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -29245,7 +28026,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -29303,12 +28084,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -29478,9 +28254,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -29516,7 +28289,7 @@ paths: allowance. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -29574,12 +28347,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} title: >- Grant is stored in the KVStore to record a grant with full context @@ -29591,8 +28359,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -29603,7 +28369,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -29661,12 +28427,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -29829,7 +28590,7 @@ paths: allowance. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -29887,12 +28648,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} title: >- Grant is stored in the KVStore to record a grant with full context @@ -29924,8 +28680,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -29936,7 +28690,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -29994,12 +28748,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -30169,9 +28918,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -30180,7 +28926,6 @@ paths: /cosmos/feegrant/v1beta1/issued/{granter}: get: summary: AllowancesByGranter returns all the grants given by an address - description: 'Since: cosmos-sdk 0.46' operationId: AllowancesByGranter responses: '200': @@ -30209,7 +28954,7 @@ paths: allowance. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -30267,12 +29012,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} title: >- Grant is stored in the KVStore to record a grant with full context @@ -30299,16 +29039,11 @@ paths: description: >- QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -30319,7 +29054,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -30377,12 +29112,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -30552,9 +29282,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -30565,7 +29292,6 @@ paths: summary: >- BalancebyQueryString queries the number of NFTs of a given class owned by the owner, same as balanceOf in ERC721 - description: 'Since: nft v0.1.1' operationId: BalanceByQueryString responses: '200': @@ -30579,7 +29305,6 @@ paths: title: >- amount is the number of all NFTs of a given class owned by the owner - description: 'Since: nft v0.1.1' title: >- QueryBalanceByQueryStringResponse is the response type for the Query/Balance RPC method @@ -30588,8 +29313,228 @@ paths: schema: type: object properties: - error: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: class_id + description: class_id associated with the nft + in: query + required: false + type: string + - name: owner + description: owner is the owner address of the nft + in: query + required: false + type: string + tags: + - Query + /cosmos/nft/v1beta1/balance/{owner}/{class_id}: + get: + summary: >- + Balance queries the number of NFTs of a given class owned by the owner, + same as balanceOf in ERC721 + operationId: NftBalance + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amount: type: string + format: uint64 + title: >- + amount is the number of all NFTs of a given class owned by the + owner + title: >- + QueryBalanceResponse is the response type for the Query/Balance + RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: code: type: integer format: int32 @@ -30600,7 +29545,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -30658,241 +29603,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - description: class_id associated with the nft. - in: query - required: false - type: string - - name: owner - description: owner is the owner address of the nft. - in: query - required: false - type: string - tags: - - Query - /cosmos/nft/v1beta1/balance/{owner}/{class_id}: - get: - summary: >- - Balance queries the number of NFTs of a given class owned by the owner, - same as balanceOf in ERC721 - operationId: NftBalance - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amount: - type: string - format: uint64 - title: >- - amount is the number of all NFTs of a given class owned by the - owner - title: >- - QueryBalanceResponse is the response type for the Query/Balance - RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -31023,7 +29734,6 @@ paths: /cosmos/nft/v1beta1/class: get: summary: Class queries an NFT class based on its id - description: 'Since: nft v0.1.1' operationId: ClassByQueryString responses: '200': @@ -31066,9 +29776,12 @@ paths: uri_hash is a hash of the document pointed by uri. Optional data: + title: >- + data is the app specific metadata of the NFT class. + Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -31126,12 +29839,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -31246,10 +29954,6 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: >- - data is the app specific metadata of the NFT class. - Optional - description: 'Since: nft v0.1.1' title: >- QueryClassByQueryStringResponse is the response type for the Query/Class RPC method @@ -31258,8 +29962,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -31270,7 +29972,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -31328,12 +30030,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -31450,7 +30147,7 @@ paths: } parameters: - name: class_id - description: class_id associated with the nft. + description: class_id associated with the nft in: query required: false type: string @@ -31504,9 +30201,12 @@ paths: uri_hash is a hash of the document pointed by uri. Optional data: + title: >- + data is the app specific metadata of the NFT class. + Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -31564,12 +30264,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -31686,9 +30381,6 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: >- - data is the app specific metadata of the NFT class. - Optional description: Class defines the class of the nft type. description: class defines the class of the nft type. pagination: @@ -31718,8 +30410,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -31730,7 +30420,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -31788,12 +30478,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -31959,9 +30644,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -31978,6 +30660,7 @@ paths: type: object properties: class: + description: class defines the class of the nft type. type: object properties: id: @@ -32011,9 +30694,12 @@ paths: uri_hash is a hash of the document pointed by uri. Optional data: + title: >- + data is the app specific metadata of the NFT class. + Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -32071,12 +30757,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -32191,10 +30872,6 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: >- - data is the app specific metadata of the NFT class. - Optional - description: Class defines the class of the nft type. title: >- QueryClassResponse is the response type for the Query/Class RPC method @@ -32203,8 +30880,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -32215,7 +30890,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -32273,12 +30948,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -32404,7 +31074,6 @@ paths: /cosmos/nft/v1beta1/nft: get: summary: NFTByQueryString queries an NFT based on its class and id. - description: 'Since: nft v0.1.1' operationId: NFTByQueryString responses: '200': @@ -32431,9 +31100,10 @@ paths: type: string title: uri_hash is a hash of the document pointed by uri data: + title: data is an app specific data of the NFT. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -32491,12 +31161,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -32611,9 +31276,7 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is an app specific data of the NFT. Optional description: NFT defines the NFT. - description: 'Since: nft v0.1.1' title: >- QueryNFTByQueryStringResponse is the response type for the Query/NFT RPC method @@ -32622,8 +31285,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -32634,7 +31295,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -32692,12 +31353,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -32814,12 +31470,12 @@ paths: } parameters: - name: class_id - description: class_id associated with the nft. + description: class_id associated with the nft in: query required: false type: string - name: id - description: id is a unique identifier of the NFT. + description: id is a unique identifier of the NFT in: query required: false type: string @@ -32859,9 +31515,10 @@ paths: type: string title: uri_hash is a hash of the document pointed by uri data: + title: data is an app specific data of the NFT. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -32919,12 +31576,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -33041,7 +31693,6 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is an app specific data of the NFT. Optional description: NFT defines the NFT. title: NFT defines the NFT pagination: @@ -33071,8 +31722,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -33083,7 +31732,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -33141,12 +31790,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -33263,12 +31907,12 @@ paths: } parameters: - name: class_id - description: class_id associated with the nft. + description: class_id associated with the nft in: query required: false type: string - name: owner - description: owner is the owner address of the nft. + description: owner is the owner address of the nft in: query required: false type: string @@ -33322,9 +31966,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -33341,6 +31982,7 @@ paths: type: object properties: nft: + title: owner is the owner address of the nft type: object properties: class_id: @@ -33358,9 +32000,10 @@ paths: type: string title: uri_hash is a hash of the document pointed by uri data: + title: data is an app specific data of the NFT. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -33418,12 +32061,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -33538,17 +32176,232 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is an app specific data of the NFT. Optional description: NFT defines the NFT. - title: owner is the owner address of the nft title: QueryNFTResponse is the response type for the Query/NFT RPC method default: description: An unexpected error response. schema: type: object properties: - error: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: class_id + description: class_id associated with the nft + in: path + required: true + type: string + - name: id + description: id is a unique identifier of the NFT + in: path + required: true + type: string + tags: + - Query + /cosmos/nft/v1beta1/owner: + get: + summary: >- + OwnerByQueryString queries the owner of the NFT based on its class and + id, same as ownerOf in ERC721 + operationId: OwnerByQueryString + responses: + '200': + description: A successful response. + schema: + type: object + properties: + owner: type: string + title: owner is the owner address of the nft + title: >- + QueryOwnerByQueryStringResponse is the response type for the + Query/Owner RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: code: type: integer format: int32 @@ -33559,7 +32412,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -33617,12 +32470,226 @@ paths: might be used with implementation specific semantics. - value: + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: class_id + description: class_id associated with the nft + in: query + required: false + type: string + - name: id + description: id is a unique identifier of the NFT + in: query + required: false + type: string + tags: + - Query + /cosmos/nft/v1beta1/owner/{class_id}/{id}: + get: + summary: >- + Owner queries the owner of the NFT based on its class and id, same as + ownerOf in ERC721 + operationId: Owner + responses: + '200': + description: A successful response. + schema: + type: object + properties: + owner: + type: string + title: owner is the owner address of the nft + title: >- + QueryOwnerResponse is the response type for the Query/Owner RPC + method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -33750,33 +32817,30 @@ paths: type: string tags: - Query - /cosmos/nft/v1beta1/owner: + /cosmos/nft/v1beta1/supply: get: summary: >- - OwnerByQueryString queries the owner of the NFT based on its class and - id, same as ownerOf in ERC721 - description: 'Since: nft v0.1.1' - operationId: OwnerByQueryString + SupplyByQueryString queries the number of NFTs from the given class, + same as totalSupply of ERC721. + operationId: SupplyByQueryString responses: '200': description: A successful response. schema: type: object properties: - owner: + amount: type: string - title: owner is the owner address of the nft - description: 'Since: nft v0.1.1' + format: uint64 + title: amount is the number of all NFTs from the given class title: >- - QueryOwnerByQueryStringResponse is the response type for the - Query/Owner RPC method + QuerySupplyByQueryStringResponse is the response type for the + Query/Supply RPC method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -33787,7 +32851,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -33845,12 +32909,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -33967,42 +33026,36 @@ paths: } parameters: - name: class_id - description: class_id associated with the nft. - in: query - required: false - type: string - - name: id - description: id is a unique identifier of the NFT. + description: class_id associated with the nft in: query required: false type: string tags: - Query - /cosmos/nft/v1beta1/owner/{class_id}/{id}: + /cosmos/nft/v1beta1/supply/{class_id}: get: summary: >- - Owner queries the owner of the NFT based on its class and id, same as - ownerOf in ERC721 - operationId: Owner + Supply queries the number of NFTs from the given class, same as + totalSupply of ERC721. + operationId: Supply responses: '200': description: A successful response. schema: type: object properties: - owner: + amount: type: string - title: owner is the owner address of the nft + format: uint64 + title: amount is the number of all NFTs from the given class title: >- - QueryOwnerResponse is the response type for the Query/Owner RPC + QuerySupplyResponse is the response type for the Query/Supply RPC method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -34013,7 +33066,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -34071,463 +33124,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - description: class_id associated with the nft - in: path - required: true - type: string - - name: id - description: id is a unique identifier of the NFT - in: path - required: true - type: string - tags: - - Query - /cosmos/nft/v1beta1/supply: - get: - summary: >- - SupplyByQueryString queries the number of NFTs from the given class, - same as totalSupply of ERC721. - description: 'Since: nft v0.1.1' - operationId: SupplyByQueryString - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amount: - type: string - format: uint64 - title: amount is the number of all NFTs from the given class - description: 'Since: nft v0.1.1' - title: >- - QuerySupplyByQueryStringResponse is the response type for the - Query/Supply RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - description: class_id associated with the nft. - in: query - required: false - type: string - tags: - - Query - /cosmos/nft/v1beta1/supply/{class_id}: - get: - summary: >- - Supply queries the number of NFTs from the given class, same as - totalSupply of ERC721. - operationId: Supply - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amount: - type: string - format: uint64 - title: amount is the number of all NFTs from the given class - title: >- - QuerySupplyResponse is the response type for the Query/Supply RPC - method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -34710,8 +33307,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -34722,7 +33317,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -34780,12 +33375,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -34982,8 +33572,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -34994,7 +33582,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -35052,12 +33640,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -35229,9 +33812,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -35281,9 +33861,12 @@ paths: would create a different result on a running proposal. decision_policy: + description: >- + decision_policy specifies the group policy's decision + policy. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -35341,187 +33924,64 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} + created_at: + type: string + format: date-time description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + created_at is a timestamp specifying when a group policy + was created. + description: >- + GroupPolicyInfo represents the high-level on-chain + information for a group policy. + description: >- + group_policies are the group policies info with provided + admin. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - URL that describes the type of the serialized message. + was set, its value is undefined otherwise + description: >- + QueryGroupPoliciesByAdminResponse is the + Query/GroupPoliciesByAdmin response type. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy - was created. - description: >- - GroupPolicyInfo represents the high-level on-chain - information for a group policy. - description: >- - group_policies are the group policies info with provided - admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByAdminResponse is the - Query/GroupPoliciesByAdmin response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least one "/" character. The last segment of the URL's path must represent @@ -35572,12 +34032,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -35748,9 +34203,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -35800,9 +34252,12 @@ paths: would create a different result on a running proposal. decision_policy: + description: >- + decision_policy specifies the group policy's decision + policy. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -35860,128 +34315,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} created_at: type: string format: date-time @@ -36021,8 +34355,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -36033,7 +34365,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -36091,12 +34423,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -36268,9 +34595,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -36289,6 +34613,7 @@ paths: type: object properties: info: + description: info is the GroupPolicyInfo of the group policy. type: object properties: address: @@ -36320,9 +34645,12 @@ paths: would create a different result on a running proposal. decision_policy: + description: >- + decision_policy specifies the group policy's decision + policy. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -36380,135 +34708,13 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} created_at: type: string format: date-time description: >- created_at is a timestamp specifying when a group policy was created. - description: >- - GroupPolicyInfo represents the high-level on-chain information - for a group policy. description: >- QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type. @@ -36517,8 +34723,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -36529,7 +34733,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -36587,12 +34791,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -36718,7 +34917,6 @@ paths: /cosmos/group/v1/groups: get: summary: Groups queries all groups in state. - description: 'Since: cosmos-sdk 0.47.1' operationId: Groups responses: '200': @@ -36794,17 +34992,12 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QueryGroupsResponse is the Query/Groups response type. - - Since: cosmos-sdk 0.47.1 + description: QueryGroupsResponse is the Query/Groups response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -36815,7 +35008,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -36873,12 +35066,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -37044,9 +35232,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -37138,8 +35323,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -37150,7 +35333,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -37208,12 +35391,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -37384,9 +35562,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -37478,8 +35653,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -37490,7 +35663,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -37548,12 +35721,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -37724,9 +35892,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -37869,7 +36034,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -37927,12 +36092,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -38054,11 +36214,9 @@ paths: the proposal passes. title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal description: QueryProposalResponse is the Query/Proposal response type. default: @@ -38066,8 +36224,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -38078,7 +36234,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -38136,12 +36292,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -38307,8 +36458,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -38319,7 +36468,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -38377,12 +36526,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -38646,7 +36790,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -38704,12 +36848,7 @@ paths: scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -38831,11 +36970,9 @@ paths: if the proposal passes. title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal description: >- Proposal defines a group proposal. Any member of a group can @@ -38876,8 +37013,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -38888,7 +37023,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -38946,12 +37081,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -39124,9 +37254,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -39184,8 +37311,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -39196,7 +37321,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -39254,12 +37379,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -39463,8 +37583,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -39475,7 +37593,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -39533,12 +37651,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -39710,9 +37823,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -39791,8 +37901,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -39803,7 +37911,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -39861,12 +37969,7 @@ paths: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -40037,9 +38140,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -40123,8 +38223,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -40135,11 +38233,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: pagination.key description: |- @@ -40191,9 +38287,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -40244,8 +38337,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -40256,11 +38347,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - name: address in: path @@ -40290,8 +38379,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -40302,11 +38389,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} tags: - Query /cosmos/consensus/v1/params: @@ -40336,16 +38421,29 @@ paths: max_bytes: type: string format: int64 - title: |- - Max block size, in bytes. - Note: must be greater than 0 + description: >- + Maximum size of a block, in bytes. + + + Must be greater or equal to -1 and cannot be greater + than the hard-coded + + maximum block size, which is 100MB. + + + If set to -1, the limit is the hard-coded maximum + block size. max_gas: type: string format: int64 - title: |- - Max gas per block. - Note: must be greater or equal to -1 - description: BlockParams contains limits on the block size. + description: >- + Maximum gas wanted by transactions included in a + block. + + + Must be greater or equal to -1. If set to -1, no limit + is enforced. + description: BlockParams define limits on the block size and gas. evidence: type: object properties: @@ -40353,38 +38451,42 @@ paths: type: string format: int64 description: >- - Max age of evidence, in blocks. + Maximum age of evidence, in blocks. - The basic formula for calculating this is: - MaxAgeDuration / {average block + The recommended formula for calculating it is + max_age_duration / {average - time}. + block time}. max_age_duration: type: string description: >- - Max age of evidence, in time. + Maximum age of evidence, in time. + + The recommended value of is should correspond to the + application's - It should correspond with an app's "unbonding period" - or other similar + "unbonding period" or other similar mechanism for + handling - mechanism for handling [Nothing-At-Stake + Nothing-At-Stake attacks. - attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). + See: + https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed. max_bytes: type: string format: int64 - title: >- - This sets the maximum size of total evidence in bytes - that can be committed in a single block. + description: >- + Maximum size in bytes of evidence allowed to be + included in a block. - and should fall comfortably under the max block bytes. - Default is 1048576 or 1MB + It should fall comfortably under the maximum size of a + block. description: >- - EvidenceParams determine how we handle evidence of - malfeasance. + EvidenceParams determine the validity of evidences of + Byzantine behavior. validator: type: object properties: @@ -40396,47 +38498,126 @@ paths: ValidatorParams restrict the public key types validators can use. - NOTE: uses ABCI pubkey naming, not Amino names. + + NOTE: uses ABCI public keys naming, not Amino names. version: type: object properties: app: type: string format: uint64 - description: VersionParams contains the ABCI application version. + description: |- + The ABCI application version. + + It was named app_version in CometBFT 0.34. + description: >- + VersionParams contain the version of specific components + of CometBFT. abci: + title: Use FeatureParams.vote_extensions_enable_height instead + type: object + properties: + vote_extensions_enable_height: + type: string + format: int64 + description: >- + vote_extensions_enable_height has been deprecated. + + Instead, use + FeatureParams.vote_extensions_enable_height. + synchrony: + type: object + properties: + precision: + type: string + description: >- + Bound for how skewed a proposer's clock may be from + any validator on the + + network while still producing valid proposals. + message_delay: + type: string + description: >- + Bound for how long a proposal message may take to + reach all validators on + + a network and still be considered valid. + description: >- + SynchronyParams determine the validity of block + timestamps. + + + These parameters are part of the Proposer-Based Timestamps + (PBTS) algorithm. + + For more information on the relationship of the synchrony + parameters to + + block timestamps validity, refer to the PBTS + specification: + + https://github.com/tendermint/spec/blob/master/spec/consensus/proposer-based-timestamp/README.md + feature: type: object properties: vote_extensions_enable_height: type: string format: int64 description: >- - vote_extensions_enable_height configures the first - height during which + First height during which vote extensions will be + enabled. + - vote extensions will be enabled. During this specified - height, and for all + During the specified height, and for all subsequent + heights, precommit - subsequent heights, precommit messages that do not - contain valid extension data + messages that do not contain valid extension data will + be considered - will be considered invalid. Prior to this height, vote - extensions will not + invalid. Prior to this height, or when this height is + set to 0, vote - be used or accepted by validators on the network. + extensions will not be used or accepted by validators + on the network. Once enabled, vote extensions will be created by the - application in ExtendVote, + application in + + ExtendVote, validated by the application in + VerifyVoteExtension, and + + used by the application in PrepareProposal, when + proposing the next block. + + + Cannot be set to heights lower or equal to the current + blockchain height. + pbts_enable_height: + type: string + format: int64 + description: >- + Height at which Proposer-Based Timestamps (PBTS) will + be enabled. + + + From the specified height, and for all subsequent + heights, the PBTS + + algorithm will be used to produce and validate block + timestamps. Prior to - passed to the application for validation in - VerifyVoteExtension and given + this height, or when this height is set to 0, the + legacy BFT Time - to the application to use when proposing a block - during PrepareProposal. + algorithm is used to produce and validate timestamps. + + + Cannot be set to heights lower or equal to the current + blockchain height. description: >- - ABCIParams configure functionality specific to the - Application Blockchain Interface. + FeatureParams configure the height from which features of + CometBFT are enabled. description: >- QueryParamsResponse defines the response type for querying x/consensus parameters. @@ -40445,8 +38626,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -40457,11 +38636,9 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} tags: - Query definitions: @@ -40473,9 +38650,6 @@ definitions: description: >- AddressBytesToStringResponse is the response type for AddressString rpc method. - - - Since: cosmos-sdk 0.46 cosmos.auth.v1beta1.AddressStringToBytesResponse: type: object properties: @@ -40485,9 +38659,6 @@ definitions: description: >- AddressStringToBytesResponse is the response type for AddressBytes rpc method. - - - Since: cosmos-sdk 0.46 cosmos.auth.v1beta1.BaseAccount: type: object properties: @@ -40496,7 +38667,7 @@ definitions: pub_key: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -40548,12 +38719,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -40677,10 +38843,7 @@ definitions: properties: bech32_prefix: type: string - description: |- - Bech32PrefixResponse is the response type for Bech32Prefix rpc method. - - Since: cosmos-sdk 0.46 + description: Bech32PrefixResponse is the response type for Bech32Prefix rpc method. cosmos.auth.v1beta1.Params: type: object properties: @@ -40705,7 +38868,6 @@ definitions: properties: account_address: type: string - description: 'Since: cosmos-sdk 0.46.2' title: >- QueryAccountAddressByIDResponse is the response type for AccountAddressByID rpc method @@ -40721,7 +38883,7 @@ definitions: pub_key: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -40776,12 +38938,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -40895,17 +39052,14 @@ definitions: sequence: type: string format: uint64 - description: |- - QueryAccountInfoResponse is the Query/AccountInfo response type. - - Since: cosmos-sdk 0.47 + description: QueryAccountInfoResponse is the Query/AccountInfo response type. cosmos.auth.v1beta1.QueryAccountResponse: type: object properties: account: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -40957,12 +39111,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -41078,7 +39227,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -41132,12 +39281,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -41266,16 +39410,13 @@ definitions: description: >- QueryAccountsResponse is the response type for the Query/Accounts RPC method. - - - Since: cosmos-sdk 0.43 cosmos.auth.v1beta1.QueryModuleAccountByNameResponse: type: object properties: account: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -41327,12 +39468,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -41448,7 +39584,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -41502,12 +39638,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -41616,9 +39747,6 @@ definitions: description: >- QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method. - - - Since: cosmos-sdk 0.46 cosmos.auth.v1beta1.QueryParamsResponse: type: object properties: @@ -41684,9 +39812,6 @@ definitions: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 description: |- message SomeRequest { Foo some_parameter = 1; @@ -41722,7 +39847,7 @@ definitions: google.protobuf.Any: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -41771,12 +39896,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -41880,11 +40000,9 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - grpc.gateway.runtime.Error: + google.rpc.Status: type: object properties: - error: - type: string code: type: integer format: int32 @@ -41895,7 +40013,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -41949,12 +40067,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -42067,23 +40180,17 @@ definitions: type: string description: address defines the address that owns a particular denomination. balance: + description: balance is the balance of the denominated coin for an account. type: object properties: denom: type: string amount: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. description: |- DenomOwner defines structure representing an account that owns or holds a particular denominated token. It contains the account address and account balance of the denominated token. - - Since: cosmos-sdk 0.46 cosmos.bank.v1beta1.DenomUnit: type: object properties: @@ -42163,7 +40270,6 @@ definitions: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -42172,17 +40278,11 @@ definitions: can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 uri_hash: type: string description: >- @@ -42190,9 +40290,6 @@ definitions: verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 description: |- Metadata represents a struct that describes a basic token. @@ -42274,17 +40371,13 @@ definitions: type: object properties: balance: + description: balance is the balance of the coin. type: object properties: denom: type: string amount: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. description: >- QueryBalanceResponse is the response type for the Query/Balance RPC method. @@ -42292,6 +40385,9 @@ definitions: type: object properties: metadata: + description: >- + metadata describes and provides all the client information for the + requested token. type: object properties: description: @@ -42342,7 +40438,6 @@ definitions: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -42351,17 +40446,11 @@ definitions: This can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 uri_hash: type: string description: >- @@ -42369,12 +40458,6 @@ definitions: to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. description: >- QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC @@ -42385,6 +40468,9 @@ definitions: type: object properties: metadata: + description: >- + metadata describes and provides all the client information for the + requested token. type: object properties: description: @@ -42435,7 +40521,6 @@ definitions: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -42444,17 +40529,11 @@ definitions: This can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 uri_hash: type: string description: >- @@ -42462,12 +40541,6 @@ definitions: to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. description: >- QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC @@ -42485,20 +40558,13 @@ definitions: type: string description: address defines the address that owns a particular denomination. balance: + description: balance is the balance of the denominated coin for an account. type: object properties: denom: type: string amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. description: >- DenomOwner defines structure representing an account that owns or holds a @@ -42507,9 +40573,6 @@ definitions: account balance of the denominated token. - - - Since: cosmos-sdk 0.46 pagination: description: pagination defines the pagination in the response. type: object @@ -42544,20 +40607,13 @@ definitions: type: string description: address defines the address that owns a particular denomination. balance: + description: balance is the balance of the denominated coin for an account. type: object properties: denom: type: string amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. description: >- DenomOwner defines structure representing an account that owns or holds a @@ -42566,9 +40622,6 @@ definitions: account balance of the denominated token. - - - Since: cosmos-sdk 0.46 pagination: description: pagination defines the pagination in the response. type: object @@ -42591,9 +40644,6 @@ definitions: description: >- QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query. - - - Since: cosmos-sdk 0.46 cosmos.bank.v1beta1.QueryDenomsMetadataResponse: type: object properties: @@ -42650,7 +40700,6 @@ definitions: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -42659,17 +40708,11 @@ definitions: ATOM). This can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 uri_hash: type: string description: >- @@ -42677,9 +40720,6 @@ definitions: to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 description: |- Metadata represents a struct that describes a basic token. @@ -42786,33 +40826,23 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QuerySendEnabledResponse defines the RPC response of a SendEnable query. - - Since: cosmos-sdk 0.47 + description: QuerySendEnabledResponse defines the RPC response of a SendEnable query. cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse: type: object properties: balance: + description: balance is the balance of the coin. type: object properties: denom: type: string amount: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. description: >- QuerySpendableBalanceByDenomResponse defines the gRPC response structure for querying an account's spendable balance for a specific denom. - - - Since: cosmos-sdk 0.47 cosmos.bank.v1beta1.QuerySpendableBalancesResponse: type: object properties: @@ -42855,24 +40885,17 @@ definitions: querying an account's spendable balances. - - - Since: cosmos-sdk 0.46 cosmos.bank.v1beta1.QuerySupplyOfResponse: type: object properties: amount: + description: amount is the supply of the coin. type: object properties: denom: type: string amount: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. description: >- QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method. @@ -42895,10 +40918,7 @@ definitions: signatures required by gogoproto. title: supply is the supply of the coins pagination: - description: |- - pagination defines the pagination in the response. - - Since: cosmos-sdk 0.43 + description: pagination defines the pagination in the response. type: object properties: next_key: @@ -42943,73 +40963,116 @@ definitions: NOTE: The amount field is an Int which implements the custom method signatures required by gogoproto. - cosmos.base.tendermint.v1beta1.ABCIQueryResponse: + cometbft.crypto.v1.ProofOp: type: object properties: - code: - type: integer - format: int64 - log: + type: type: string - info: + key: type: string - index: + format: byte + data: type: string - format: int64 - key: + format: byte + title: |- + ProofOp defines an operation used for calculating Merkle root + The data could be arbitrary format, providing necessary data + for example neighbouring node hash + cometbft.crypto.v1.ProofOps: + type: object + properties: + ops: + type: array + items: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + title: |- + ProofOp defines an operation used for calculating Merkle root + The data could be arbitrary format, providing necessary data + for example neighbouring node hash + title: ProofOps is Merkle proof defined by the list of ProofOps + cometbft.crypto.v1.PublicKey: + type: object + properties: + ed25519: type: string format: byte - value: + secp256k1: type: string format: byte - proof_ops: + description: PublicKey is a ED25519 or a secp256k1 public key. + cometbft.p2p.v1.DefaultNodeInfo: + type: object + properties: + protocol_version: type: object properties: - ops: - type: array - items: - type: object - properties: - type: - type: string - key: - type: string - format: byte - data: - type: string - format: byte - description: >- - ProofOp defines an operation used for calculating Merkle root. - The data could - - be arbitrary format, providing necessary data for example - neighbouring node - - hash. - - - Note: This type is a duplicate of the ProofOp proto type defined - in Tendermint. - description: >- - ProofOps is Merkle proof defined by the list of ProofOps. - - - Note: This type is a duplicate of the ProofOps proto type defined in - Tendermint. - height: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: ProtocolVersion represents the current p2p protocol version. + default_node_id: type: string - format: int64 - codespace: + listen_addr: + type: string + network: + type: string + version: type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + description: DefaultNodeInfoOther is the misc. application specific data. description: >- - ABCIQueryResponse defines the response structure for the ABCIQuery gRPC - query. - - - Note: This type is a duplicate of the ResponseQuery proto type defined in + DefaultNodeInfo is a basic node's information sent to other peers during + the - Tendermint. - cosmos.base.tendermint.v1beta1.Block: + p2p handshake. + cometbft.p2p.v1.DefaultNodeInfoOther: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + description: DefaultNodeInfoOther is the misc. application specific data. + cometbft.p2p.v1.ProtocolVersion: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: ProtocolVersion represents the current p2p protocol version. + cometbft.types.v1.Block: type: object properties: header: @@ -43056,46 +41119,51 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: root hash of all results from the txs from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string - description: >- - proposer_address is the original block proposer address, formatted - as a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, we convert it - to a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. data: type: object properties: @@ -43138,8 +41206,10 @@ definitions: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -43161,8 +41231,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. timestamp: type: string format: date-time @@ -43218,8 +41290,10 @@ definitions: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -43241,8 +41315,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. timestamp: type: string format: date-time @@ -43348,40 +41424,54 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as + its hash and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs from + the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. commit: type: object @@ -43407,8 +41497,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as + its hash and its `PartSetHeader`. signatures: type: array items: @@ -43422,6 +41514,12 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -43440,6 +41538,9 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and Commit(H+1) + with signatures of validators who signed it. validator_set: type: object properties: @@ -43460,15 +41561,18 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating in + the consensus protocol. proposer: type: object properties: @@ -43484,18 +41588,25 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for use - with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 public + key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. total_voting_power: type: string format: int64 + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and + ValidatorSet. It is used by light clients. common_height: type: string format: int64 @@ -43516,15 +41627,16 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for use with - Validators + description: PublicKey is a ED25519 or a secp256k1 public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. total_voting_power: type: string format: int64 @@ -43534,6 +41646,10 @@ definitions: description: >- LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of misbehavior + by a validator. + description: EvidenceList is a list of evidence. last_commit: type: object properties: @@ -43558,8 +41674,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. signatures: type: array items: @@ -43573,6 +41691,11 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: BlockIdFlag indicates which BlockID the signature is for validator_address: type: string @@ -43587,12 +41710,49 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. + description: Block defines the structure of a block in the CometBFT blockchain. + cometbft.types.v1.BlockID: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + cometbft.types.v1.BlockIDFlag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN description: |- - Block is tendermint type Block, with the Header proposer address - field converted to bech32 string. - cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + cometbft.types.v1.Commit: type: object properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 block_id: type: object properties: @@ -43608,42 +41768,287 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID - block: - title: 'Deprecated: please use `sdk_block` instead' + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + cometbft.types.v1.CommitSig: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + cometbft.types.v1.Data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the order + first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + cometbft.types.v1.DuplicateVoteEvidence: + type: object + properties: + vote_a: type: object properties: - header: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: type: object properties: - version: - title: basic block info + hash: + type: string + format: byte + part_set_header: type: object properties: - block: + total: + type: integer + format: int64 + hash: type: string - format: uint64 - app: + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in consensus + for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid for + precommit + + messages. + extension_signature: + type: string + format: byte + description: |- + Vote extension signature by the validator if they participated in + consensus for the associated block. + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in consensus + for the - including all blockchain data structures and the rules of the - application's + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid for + precommit - state transition machine. - chain_id: + messages. + extension_signature: + type: string + format: byte + description: |- + Vote extension signature by the validator if they participated in + consensus for the associated block. + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed two + conflicting votes. + cometbft.types.v1.Evidence: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 - time: - type: string - format: date-time - last_block_id: + round: + type: integer + format: int32 + block_id: type: object properties: hash: @@ -43658,170 +42063,643 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + timestamp: type: string - format: byte - title: hashes of block data - data_hash: + format: date-time + validator_address: type: string format: byte - validators_hash: + validator_index: + type: integer + format: int32 + signature: type: string format: byte - title: hashes from the app output from the prev block - next_validators_hash: + description: >- + Vote signature by the validator if they participated in + consensus for the + + associated block. + extension: type: string format: byte - consensus_hash: + description: >- + Vote extension provided by the application. Only valid for + precommit + + messages. + extension_signature: type: string format: byte - app_hash: + description: >- + Vote extension signature by the validator if they participated + in + + consensus for the associated block. + + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: type: string format: byte - last_results_hash: + validator_index: + type: integer + format: int32 + signature: type: string format: byte - evidence_hash: + description: >- + Vote signature by the validator if they participated in + consensus for the + + associated block. + extension: type: string format: byte - title: consensus info - proposer_address: + description: >- + Vote extension provided by the application. Only valid for + precommit + + messages. + extension_signature: type: string format: byte - description: Header defines the structure of a block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte description: >- - Txs that will be applied by state @ block.Height+1. + Vote extension signature by the validator if they participated + in - NOTE: not all txs here are valid. We're just agreeing on the - order first. + consensus for the associated block. - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed two + conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: type: object properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: >- + root hash of all results from the txs from the + previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time signature: type: string format: byte - description: >- - Vote signature by the validator if they - participated in consensus for the - - associated block. - extension: + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + description: >- + SignedHeader contains a Header(H) and Commit(H+1) with + signatures of validators who signed it. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: type: string format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the consensus + protocol. + total_voting_power: + type: string + format: int64 + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and ValidatorSet. It + is used by light clients. + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the consensus + protocol. + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of validators + attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of misbehavior by a + validator. + cometbft.types.v1.EvidenceList: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. - messages. - extension_signature: + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: type: string format: byte - description: >- - Vote extension signature by the validator if - they participated in + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and + its `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in + consensus for the - consensus for the associated block. + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid + for precommit - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from - validators for + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in - consensus. - vote_b: + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from validators + for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: type: object properties: - type: + total: + type: integer + format: int64 + hash: type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and + its `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in + consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid + for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from validators + for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed + two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 description: >- - SignedMsgType is a type of signed message in the - consensus. + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and the + rules of the application's - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + state transition machine. + chain_id: + type: string height: type: string format: int64 - round: - type: integer - format: int32 - block_id: + time: + type: string + format: date-time + last_block_id: type: object properties: hash: @@ -43836,268 +42714,125 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID - timestamp: + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. + title: prev block info + last_commit_hash: type: string - format: date-time - validator_address: + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: type: string format: byte - validator_index: - type: integer - format: int32 - signature: + title: transactions + validators_hash: type: string format: byte - description: >- - Vote signature by the validator if they - participated in consensus for the - - associated block. - extension: + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: type: string format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit - - messages. - extension_signature: + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: >- + root hash of all results from the txs from the + previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: type: string format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. description: >- - Vote extension signature by the validator if - they participated in - - consensus for the associated block. - - Only valid for precommit messages. + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. description: >- - Vote represents a prevote or precommit vote from - validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time + Commit contains the evidence that a block was + committed by a set of validators. description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: + SignedHeader contains a Header(H) and Commit(H+1) with + signatures of validators who signed it. + validator_set: type: object properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a block - header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlockID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: + validators: type: array items: type: object @@ -44114,79 +42849,188 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for use - with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 public + key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 public + key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. total_voting_power: type: string format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and + ValidatorSet. It is used by light clients. + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: type: object properties: - total: - type: integer - format: int64 - hash: + address: type: string format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the consensus + protocol. + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of misbehavior by a + validator. + description: EvidenceList is a list of evidence. + cometbft.types.v1.Header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + cometbft.types.v1.LightBlock: + type: object + properties: + signed_header: type: object properties: header: @@ -44233,514 +43077,80 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: root hash of all results from the txs from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string - description: >- - proposer_address is the original block proposer address, - formatted as a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, we - convert it to a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. - data: + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + commit: type: object properties: - txs: - type: array - items: - type: string - format: byte + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they - participated in consensus for the - - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit - - messages. - extension_signature: - type: string - format: byte - description: >- - Vote extension signature by the validator if - they participated in - - consensus for the associated block. - - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from - validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they - participated in consensus for the - - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit - - messages. - extension_signature: - type: string - format: byte - description: >- - Vote extension signature by the validator if - they participated in - - consensus for the associated block. - - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from - validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a block - header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlockID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + signatures: type: array items: type: object @@ -44753,6 +43163,11 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: BlockIdFlag indicates which BlockID the signature is for validator_address: type: string @@ -44767,609 +43182,1416 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - description: |- - Block is tendermint type Block, with the Header proposer address - field converted to bech32 string. - description: >- - GetBlockByHeightResponse is the response type for the - Query/GetBlockByHeight RPC method. - cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: - type: object - properties: - block_id: + description: >- + SignedHeader contains a Header(H) and Commit(H+1) with signatures of + validators who signed it. + validator_set: type: object properties: - hash: - type: string - format: byte - part_set_header: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the consensus + protocol. + proposer: type: object properties: - total: - type: integer - format: int64 - hash: + address: type: string format: byte - title: PartsetHeader - title: BlockID - block: - title: 'Deprecated: please use `sdk_block` instead' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info + pub_key: type: object properties: - block: + ed25519: type: string - format: uint64 - app: + format: byte + secp256k1: type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: type: string format: int64 - time: + proposer_priority: type: string - format: date-time - last_block_id: + format: int64 + description: >- + Validator represents a node participating in the consensus + protocol. + total_voting_power: + type: string + format: int64 + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and ValidatorSet. It is used + by light clients. + cometbft.types.v1.LightClientAttackEvidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: type: object properties: - hash: - type: string - format: byte - part_set_header: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a + block in the blockchain, + + including all blockchain data structures and the rules of + the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: type: object properties: - total: - type: integer - format: int64 hash: type: string format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and + its `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: >- + root hash of all results from the txs from the previous + block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and + its `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: >- + BlockIdFlag indicates which BlockID the signature is + for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a + set of validators. + description: >- + SignedHeader contains a Header(H) and Commit(H+1) with signatures + of validators who signed it. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the consensus + protocol. + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the consensus + protocol. + total_voting_power: type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: + format: int64 + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and ValidatorSet. It is + used by light clients. + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator represents a node participating in the consensus protocol. + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of validators + attempting to mislead a light client. + cometbft.types.v1.PartSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + cometbft.types.v1.SignedHeader: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: type: string - format: byte - consensus_hash: + format: uint64 + app: type: string - format: byte - app_hash: + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: type: string format: byte - last_results_hash: + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: type: string format: byte - evidence_hash: + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + description: >- + SignedHeader contains a Header(H) and Commit(H+1) with signatures of + validators who signed it. + cometbft.types.v1.SignedMsgType: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + cometbft.types.v1.Validator: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator represents a node participating in the consensus protocol. + cometbft.types.v1.ValidatorSet: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator represents a node participating in the consensus protocol. + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: type: string format: byte - title: consensus info - proposer_address: + secp256k1: type: string format: byte - description: Header defines the structure of a block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator represents a node participating in the consensus protocol. + total_voting_power: + type: string + format: int64 + description: ValidatorSet defines a set of validators. + cometbft.types.v1.Vote: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: type: object properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they - participated in consensus for the + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in consensus for + the - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit + associated block. + extension: + type: string + format: byte + description: |- + Vote extension provided by the application. Only valid for precommit + messages. + extension_signature: + type: string + format: byte + description: |- + Vote extension signature by the validator if they participated in + consensus for the associated block. + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + cometbft.version.v1.Consensus: + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, - messages. - extension_signature: - type: string - format: byte - description: >- - Vote extension signature by the validator if - they participated in + including all blockchain data structures and the rules of the + application's - consensus for the associated block. + state transition machine. + cosmos.base.tendermint.v1beta1.ABCIQueryResponse: + type: object + properties: + code: + type: integer + format: int64 + log: + type: string + title: nondeterministic + info: + type: string + title: nondeterministic + index: + type: string + format: int64 + key: + type: string + format: byte + value: + type: string + format: byte + height: + type: string + format: int64 + codespace: + type: string + proof_ops: + type: object + properties: + ops: + type: array + items: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + title: |- + ProofOp defines an operation used for calculating Merkle root + The data could be arbitrary format, providing necessary data + for example neighbouring node hash + title: ProofOps is Merkle proof defined by the list of ProofOps + description: >- + ABCIQueryResponse defines the response structure for the ABCIQuery gRPC + query. - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from - validators for + Note: This type is a duplicate of the ResponseQuery proto type defined in + + Tendermint. + cosmos.base.tendermint.v1beta1.Block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, formatted + as a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, we convert it + to a Bech32 string + + for better UX. + + + original proposer of the block + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the consensus. - vote_b: + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: type: object properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: + hash: type: string - format: int64 - round: - type: integer - format: int32 - block_id: + format: byte + part_set_header: type: object properties: + total: + type: integer + format: int64 hash: type: string format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they - participated in consensus for the + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated + in consensus for the - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit - messages. - extension_signature: - type: string - format: byte - description: >- - Vote extension signature by the validator if - they participated in + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in - consensus for the associated block. + consensus for the associated block. - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from - validators for + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for - consensus. - total_voting_power: + consensus. + vote_b: + type: object + properties: + type: type: string - format: int64 - validator_power: + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: type: string format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash + and its `PartSetHeader`. timestamp: type: string format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated + in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in + + consensus for the associated block. + + Only valid for precommit messages. description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: type: object properties: - conflicting_block: + signed_header: type: object properties: - signed_header: + header: type: object properties: - header: + version: + title: basic block info type: object properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: + block: type: string - height: + format: uint64 + app: type: string - format: int64 - time: + format: uint64 + description: >- + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and + the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: type: string - format: date-time - last_block_id: + format: byte + part_set_header: type: object properties: + total: + type: integer + format: int64 hash: type: string format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte + description: Header of the parts set for a block. description: >- - Header defines the structure of a block - header. - commit: + BlockID defines the unique ID of a block as + its hash and its `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: >- + root hash of all results from the txs from + the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: type: object properties: - height: + hash: type: string - format: int64 - round: - type: integer - format: int32 - block_id: + format: byte + part_set_header: type: object properties: + total: + type: integer + format: int64 hash: type: string format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlockID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. + description: Header of the parts set for a block. description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: + BlockID defines the unique ID of a block as + its hash and its `PartSetHeader`. + signatures: type: array items: type: object properties: - address: + block_id_flag: type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- - PublicKey defines the keys available for - use with Validators - voting_power: + BlockIdFlag indicates which BlockID the + signature is for + validator_address: type: string - format: int64 - proposer_priority: + format: byte + timestamp: type: string - format: int64 - proposer: + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block was + committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and Commit(H+1) + with signatures of validators who signed it. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in + the consensus protocol. + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: type: object properties: - address: + ed25519: type: string format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Validators - voting_power: - type: string - format: int64 - proposer_priority: + secp256k1: type: string - format: int64 - total_voting_power: + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 public + key. + voting_power: type: string format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. + total_voting_power: + type: string + format: int64 + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and + ValidatorSet. It is used by light clients. + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: type: object properties: - address: + ed25519: type: string format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Validators - voting_power: - type: string - format: int64 - proposer_priority: + secp256k1: type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: + format: byte + description: PublicKey is a ED25519 or a secp256k1 public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of misbehavior + by a validator. + description: EvidenceList is a list of evidence. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: type: object properties: - height: + hash: type: string - format: int64 - round: - type: integer - format: int32 - block_id: + format: byte + part_set_header: type: object properties: + total: + type: integer + format: int64 hash: type: string format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. + description: Header of the parts set for a block. description: >- - Commit contains the evidence that a block was committed by a set - of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + block: + title: 'Deprecated: please use `sdk_block` instead' type: object properties: header: @@ -45416,46 +44638,51 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: root hash of all results from the txs from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string - description: >- - proposer_address is the original block proposer address, - formatted as a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, we - convert it to a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. data: type: object properties: @@ -45498,8 +44725,10 @@ definitions: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -45521,8 +44750,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -45578,8 +44809,10 @@ definitions: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -45601,8 +44834,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -45709,40 +44944,56 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs + from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -45770,8 +45021,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. signatures: type: array items: @@ -45785,6 +45038,12 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -45803,6 +45062,10 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and + Commit(H+1) with signatures of validators who + signed it. validator_set: type: object properties: @@ -45823,15 +45086,18 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating + in the consensus protocol. proposer: type: object properties: @@ -45847,18 +45113,25 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating in + the consensus protocol. total_voting_power: type: string format: int64 + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and + ValidatorSet. It is used by light clients. common_height: type: string format: int64 @@ -45879,15 +45152,18 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for use - with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 public + key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. total_voting_power: type: string format: int64 @@ -45897,6 +45173,10 @@ definitions: description: >- LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of + misbehavior by a validator. + description: EvidenceList is a list of evidence. last_commit: type: object properties: @@ -45921,8 +45201,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. signatures: type: array items: @@ -45936,6 +45218,11 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: BlockIdFlag indicates which BlockID the signature is for validator_address: type: string @@ -45950,1831 +45237,605 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - description: |- - Block is tendermint type Block, with the Header proposer address - field converted to bech32 string. - description: >- - GetLatestBlockResponse is the response type for the Query/GetLatestBlock - RPC method. - cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + description: Block defines the structure of a block in the CometBFT blockchain. + sdk_block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, - Note: this functionality is not currently available in the - official + including all blockchain data structures and the rules of the + application's - protobuf release, and it is not used for type URLs beginning - with + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, + formatted as a Bech32 string. - type.googleapis.com. + In Tendermint, this type is `bytes`, but in the SDK, we + convert it to a Bech32 string + for better UX. - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - value: + original proposer of the block + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' + description: >- + Txs that will be applied by state @ block.Height+1. - in the type URL, for example "foo.bar.com/x/y.z" will yield type + NOTE: not all txs here are valid. We're just agreeing on the + order first. - name "y.z". + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the - JSON + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit - ==== + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in - The JSON representation of an `Any` value uses the regular + consensus for the associated block. - representation of the deserialized, embedded message, with an + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for - additional field `@type` which contains the type URL. Example: + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit - If the embedded message type is well-known and has a custom JSON + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in - representation, that representation will be embedded adding a - field + consensus for the associated block. - `value` which holds the custom JSON in addition to the `@type` + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for - field. Example (for message [google.protobuf.Duration][]): + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + including all blockchain data structures + and the rules of the application's - was set, its value is undefined otherwise - description: >- - GetLatestValidatorSetResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: - type: object - properties: - default_node_info: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - application_version: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - description: >- - GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC - method. - cosmos.base.tendermint.v1beta1.GetSyncingResponse: - type: object - properties: - syncing: - type: boolean - description: >- - GetSyncingResponse is the response type for the Query/GetSyncing RPC - method. - cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - GetValidatorSetByHeightResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - cosmos.base.tendermint.v1beta1.Header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - description: >- - proposer_address is the original block proposer address, formatted as - a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, we convert it to - a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. - cosmos.base.tendermint.v1beta1.Module: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos.base.tendermint.v1beta1.ProofOp: - type: object - properties: - type: - type: string - key: - type: string - format: byte - data: - type: string - format: byte - description: >- - ProofOp defines an operation used for calculating Merkle root. The data - could - - be arbitrary format, providing necessary data for example neighbouring - node - - hash. - - - Note: This type is a duplicate of the ProofOp proto type defined in - Tendermint. - cosmos.base.tendermint.v1beta1.ProofOps: - type: object - properties: - ops: - type: array - items: - type: object - properties: - type: - type: string - key: - type: string - format: byte - data: - type: string - format: byte - description: >- - ProofOp defines an operation used for calculating Merkle root. The - data could - - be arbitrary format, providing necessary data for example - neighbouring node - - hash. - - - Note: This type is a duplicate of the ProofOp proto type defined in - Tendermint. - description: >- - ProofOps is Merkle proof defined by the list of ProofOps. - - - Note: This type is a duplicate of the ProofOps proto type defined in - Tendermint. - cosmos.base.tendermint.v1beta1.Validator: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - cosmos.base.tendermint.v1beta1.VersionInfo: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - tendermint.crypto.PublicKey: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - tendermint.p2p.DefaultNodeInfo: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - tendermint.p2p.DefaultNodeInfoOther: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - tendermint.p2p.ProtocolVersion: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - tendermint.types.Block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they participated - in consensus for the - - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit - - messages. - extension_signature: - type: string - format: byte - description: >- - Vote extension signature by the validator if they - participated in - - consensus for the associated block. - - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from - validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they participated - in consensus for the - - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit - - messages. - extension_signature: - type: string - format: byte - description: >- - Vote extension signature by the validator if they - participated in - - consensus for the associated block. - - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from - validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: + state transition machine. + chain_id: type: string - format: uint64 - app: + height: type: string - format: uint64 - description: >- - Consensus captures the consensus rules for - processing a block in the blockchain, - - including all blockchain data structures and - the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: + format: int64 + time: type: string - format: byte - part_set_header: + format: date-time + last_block_id: type: object properties: - total: - type: integer - format: int64 hash: type: string format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: >- + commit from validators from the last + block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: >- + root hash of all results from the txs + from the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + format: byte + title: original proposer of the block + description: >- + Header defines the structure of a block + header. + commit: type: object properties: - hash: + height: type: string - format: byte - part_set_header: + format: int64 + round: + type: integer + format: int32 + block_id: type: object properties: - total: - type: integer - format: int64 hash: type: string format: byte - title: PartsetHeader - title: BlockID - signatures: + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and + Commit(H+1) with signatures of validators who + signed it. + validator_set: + type: object + properties: + validators: type: array items: type: object properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlockID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block was - committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: + address: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.BlockID: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - tendermint.types.BlockIDFlag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - tendermint.types.Commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.CommitSig: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - tendermint.types.Data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the order - first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - tendermint.types.DuplicateVoteEvidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they participated in consensus - for the - - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only valid for - precommit - - messages. - extension_signature: - type: string - format: byte - description: |- - Vote extension signature by the validator if they participated in - consensus for the associated block. - Only valid for precommit messages. - description: |- - Vote represents a prevote or precommit vote from validators for - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they participated in consensus - for the - - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only valid for - precommit - - messages. - extension_signature: - type: string - format: byte - description: |- - Vote extension signature by the validator if they participated in - consensus for the associated block. - Only valid for precommit messages. - description: |- - Vote represents a prevote or precommit vote from validators for - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed two - conflicting votes. - tendermint.types.Evidence: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating + in the consensus protocol. + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in + the consensus protocol. + total_voting_power: + type: string + format: int64 + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and + ValidatorSet. It is used by light clients. + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 public + key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of + misbehavior by a validator. + description: EvidenceList is a list of evidence. + last_commit: type: object properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals height: type: string format: int64 @@ -47796,69 +45857,104 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they participated in - consensus for the - - associated block. - extension: - type: string - format: byte + description: Header of the parts set for a block. description: >- - Vote extension provided by the application. Only valid for - precommit - - messages. - extension_signature: + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + description: >- + GetBlockByHeightResponse is the response type for the + Query/GetBlockByHeight RPC method. + cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: type: string format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + block: + title: 'Deprecated: please use `sdk_block` instead' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 description: >- - Vote extension signature by the validator if they participated - in + Consensus captures the consensus rules for processing a block + in the blockchain, - consensus for the associated block. + including all blockchain data structures and the rules of the + application's - Only valid for precommit messages. - description: |- - Vote represents a prevote or precommit vote from validators for - consensus. - vote_b: - type: object - properties: - type: + state transition machine. + chain_id: type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals height: type: string format: int64 - round: - type: integer - format: int32 - block_id: + time: + type: string + format: date-time + last_block_id: type: object properties: hash: @@ -47873,515 +45969,760 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID - timestamp: + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info + last_commit_hash: type: string - format: date-time - validator_address: + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: type: string format: byte - validator_index: - type: integer - format: int32 - signature: + title: transactions + validators_hash: type: string format: byte - description: >- - Vote signature by the validator if they participated in - consensus for the - - associated block. - extension: + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: type: string format: byte - description: >- - Vote extension provided by the application. Only valid for - precommit - - messages. - extension_signature: + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidence_hash: type: string format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte description: >- - Vote extension signature by the validator if they participated - in + Txs that will be applied by state @ block.Height+1. - consensus for the associated block. + NOTE: not all txs here are valid. We're just agreeing on the + order first. - Only valid for precommit messages. - description: |- - Vote represents a prevote or precommit vote from validators for - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed two - conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: type: object properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. - including all blockchain data structures and the rules - of the application's + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + vote_b: type: object properties: - block_id_flag: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. + timestamp: type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlockID the - signature is for + format: date-time validator_address: type: string format: byte - timestamp: - type: string - format: date-time + validator_index: + type: integer + format: int32 signature: type: string format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: type: string format: byte - secp256k1: + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: type: string format: byte - title: >- - PublicKey defines the keys available for use with - Validators - voting_power: + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: type: string format: int64 - proposer_priority: + validator_power: type: string format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of validators - attempting to mislead a light client. - tendermint.types.EvidenceList: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN + timestamp: + type: string + format: date-time description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: type: object properties: - hash: - type: string - format: byte - part_set_header: + conflicting_block: type: object properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they participated in - consensus for the + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only valid - for precommit + including all blockchain data structures + and the rules of the application's - messages. - extension_signature: - type: string - format: byte + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: >- + commit from validators from the last + block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: >- + root hash of all results from the txs + from the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + format: byte + title: original proposer of the block + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and + Commit(H+1) with signatures of validators who + signed it. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating + in the consensus protocol. + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in + the consensus protocol. + total_voting_power: + type: string + format: int64 + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and + ValidatorSet. It is used by light clients. + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 public + key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time description: >- - Vote extension signature by the validator if they - participated in - - consensus for the associated block. - - Only valid for precommit messages. + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. description: >- - Vote represents a prevote or precommit vote from validators - for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: + Evidence is a generic type for wrapping evidence of + misbehavior by a validator. + description: EvidenceList is a list of evidence. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: type: string - format: date-time + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: BlockIdFlag indicates which BlockID the signature is for validator_address: type: string format: byte - validator_index: - type: integer - format: int32 + timestamp: + type: string + format: date-time signature: type: string format: byte - description: >- - Vote signature by the validator if they participated in - consensus for the + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + description: Block defines the structure of a block in the CometBFT blockchain. + sdk_block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only valid - for precommit + including all blockchain data structures and the rules of the + application's - messages. - extension_signature: - type: string - format: byte - description: >- - Vote extension signature by the validator if they - participated in + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, + formatted as a Bech32 string. - consensus for the associated block. + In Tendermint, this type is `bytes`, but in the SDK, we + convert it to a Bech32 string - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from validators - for + for better UX. - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: + + original proposer of the block + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed - two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: type: object properties: - signed_header: + duplicate_vote_evidence: type: object properties: - header: + vote_a: type: object properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN description: >- - Consensus captures the consensus rules for - processing a block in the blockchain, - - including all blockchain data structures and the - rules of the application's + SignedMsgType is a type of signed message in the + consensus. - state transition machine. - chain_id: - type: string + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 - time: - type: string - format: date-time - last_block_id: + round: + type: integer + format: int32 + block_id: type: object properties: hash: @@ -48396,42 +46737,69 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. + timestamp: type: string - format: byte - app_hash: + format: date-time + validator_address: type: string format: byte - last_results_hash: + validator_index: + type: integer + format: int32 + signature: type: string format: byte - evidence_hash: + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: type: string format: byte - title: consensus info - proposer_address: + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: type: string format: byte - description: Header defines the structure of a block header. - commit: + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + vote_b: type: object properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -48447,49 +46815,314 @@ definitions: part_set_header: type: object properties: - total: - type: integer - format: int64 - hash: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + title: prev block info + last_commit_hash: + type: string + format: byte + description: >- + commit from validators from the last + block + title: hashes of block data + data_hash: + type: string + format: byte + title: transactions + validators_hash: + type: string + format: byte + description: validators for the current block + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + title: validators for the next block + consensus_hash: + type: string + format: byte + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: >- + root hash of all results from the txs + from the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + format: byte + title: original proposer of the block + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and + Commit(H+1) with signatures of validators who + signed it. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating + in the consensus protocol. + proposer: + type: object + properties: + address: type: string format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlockID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: >- + Validator represents a node participating in + the consensus protocol. + total_voting_power: + type: string + format: int64 + description: ValidatorSet defines a set of validators. description: >- - Commit contains the evidence that a block was - committed by a set of validators. - validator_set: - type: object - properties: - validators: + LightBlock is a combination of SignedHeader and + ValidatorSet. It is used by light clients. + common_height: + type: string + format: int64 + byzantine_validators: type: array items: type: object @@ -48506,241 +47139,32 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for use - with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 public + key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. total_voting_power: type: string format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - tendermint.types.Header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - tendermint.types.LightBlock: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - commit: + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of + misbehavior by a validator. + description: EvidenceList is a list of evidence. + last_commit: type: object properties: height: @@ -48756,581 +47180,599 @@ definitions: type: string format: byte part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - tendermint.types.LightClientAttackEvidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a - block in the blockchain, - - including all blockchain data structures and the rules of - the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlockID the signature is - for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + description: Header of the parts set for a block. description: >- - Commit contains the evidence that a block was committed by a - set of validators. - validator_set: - type: object - properties: - validators: + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + signatures: type: array items: type: object properties: - address: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: type: string format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Validators - voting_power: + timestamp: type: string - format: int64 - proposer_priority: + format: date-time + signature: type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + description: >- + GetLatestBlockResponse is the response type for the Query/GetLatestBlock + RPC method. + cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: + type: object + properties: + block_height: type: string format: int64 - byzantine_validators: + validators: type: array items: type: object properties: address: type: string - format: byte pub_key: type: object properties: - ed25519: - type: string - format: byte - secp256k1: + '@type': type: string - format: byte - title: PublicKey defines the keys available for use with Validators + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } voting_power: type: string format: int64 proposer_priority: type: string format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - LightClientAttackEvidence contains evidence of a set of validators - attempting to mislead a light client. - tendermint.types.PartSetHeader: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - tendermint.types.SignedHeader: + GetLatestValidatorSetResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: type: object properties: - header: + default_node_info: type: object properties: - version: - title: basic block info + protocol_version: type: object properties: + p2p: + type: string + format: uint64 block: type: string format: uint64 app: type: string format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: + description: ProtocolVersion represents the current p2p protocol version. + default_node_id: type: string - format: int64 - time: + listen_addr: type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: + network: type: string - format: byte - title: hashes of block data - data_hash: + version: type: string - format: byte - validators_hash: + channels: type: string format: byte - title: hashes from the app output from the prev block - next_validators_hash: + moniker: type: string - format: byte - consensus_hash: + other: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + description: DefaultNodeInfoOther is the misc. application specific data. + description: >- + DefaultNodeInfo is a basic node's information sent to other peers + during the + + p2p handshake. + application_version: + type: object + properties: + name: type: string - format: byte - app_hash: + app_name: type: string - format: byte - last_results_hash: + version: type: string - format: byte - evidence_hash: + git_commit: type: string - format: byte - title: consensus info - proposer_address: + build_tags: type: string - format: byte - description: Header defines the structure of a block header. - commit: - type: object - properties: - height: + go_version: type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: + build_deps: type: array items: type: object properties: - block_id_flag: + path: type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: + title: module path + version: type: string - format: byte - timestamp: + title: module version + sum: type: string - format: date-time - signature: + title: checksum + title: Module is the type for VersionInfo + cosmos_sdk_version: + type: string + description: VersionInfo is the type for the GetNodeInfoResponse message. + description: >- + GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC + method. + cosmos.base.tendermint.v1beta1.GetSyncingResponse: + type: object + properties: + syncing: + type: boolean + description: >- + GetSyncingResponse is the response type for the Query/GetSyncing RPC + method. + cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: + type: object + properties: + block_height: + type: string + format: int64 + validators: + type: array + items: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + '@type': type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.SignedMsgType: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - tendermint.types.Validator: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - tendermint.types.ValidatorSet: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } voting_power: type: string format: int64 proposer_priority: type: string format: int64 - proposer: + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. type: object properties: - address: + next_key: type: string format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - format: int64 - total_voting_power: - type: string - format: int64 - tendermint.types.Vote: + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + GetValidatorSetByHeightResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + cosmos.base.tendermint.v1beta1.Header: type: object properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + state transition machine. + chain_id: + type: string height: type: string format: int64 - round: - type: integer - format: int32 - block_id: + time: + type: string + format: date-time + last_block_id: type: object properties: hash: @@ -49345,58 +47787,278 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID - timestamp: + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info + last_commit_hash: type: string - format: date-time - validator_address: + format: byte + description: commit from validators from the last block + title: hashes of block data + data_hash: type: string format: byte - validator_index: - type: integer - format: int32 - signature: + title: transactions + validators_hash: type: string format: byte - description: >- - Vote signature by the validator if they participated in consensus for - the - - associated block. - extension: + description: validators for the current block + title: hashes from the app output from the prev block + next_validators_hash: type: string format: byte - description: |- - Vote extension provided by the application. Only valid for precommit - messages. - extension_signature: + title: validators for the next block + consensus_hash: type: string format: byte - description: |- - Vote extension signature by the validator if they participated in - consensus for the associated block. - Only valid for precommit messages. - description: |- - Vote represents a prevote or precommit vote from validators for - consensus. - tendermint.version.Consensus: + title: consensus params for current block + app_hash: + type: string + format: byte + title: state after txs from the previous block + last_results_hash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidence_hash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, formatted as + a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, we convert it to + a Bech32 string + + for better UX. + + + original proposer of the block + description: Header defines the structure of a Tendermint block header. + cosmos.base.tendermint.v1beta1.Module: type: object properties: - block: + path: type: string - format: uint64 - app: + title: module path + version: type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos.base.tendermint.v1beta1.Validator: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - including all blockchain data structures and the rules of the - application's + protocol buffer message. This string must contain at least - state transition machine. + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + cosmos.base.tendermint.v1beta1.VersionInfo: + type: object + properties: + name: + type: string + app_name: + type: string + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos_sdk_version: + type: string + description: VersionInfo is the type for the GetNodeInfoResponse message. cosmos.base.node.v1beta1.ConfigResponse: type: object properties: @@ -49404,9 +48066,11 @@ definitions: type: string pruning_keep_recent: type: string - title: pruning settings pruning_interval: type: string + halt_height: + type: string + format: uint64 description: ConfigResponse defines the response structure for the Config gRPC query. cosmos.base.node.v1beta1.StatusResponse: type: object @@ -49414,18 +48078,23 @@ definitions: earliest_store_height: type: string format: uint64 + title: earliest block height available in the store height: type: string format: uint64 + title: current block height timestamp: type: string format: date-time + title: block height timestamp app_hash: type: string format: byte + title: app hash of the current block validator_hash: type: string format: byte + title: validator hash provided by the consensus header description: StateResponse defines the response structure for the status of a node. cosmos.base.v1beta1.DecCoin: type: object @@ -49509,8 +48178,6 @@ definitions: Deprecated - - Since: cosmos-sdk 0.50 cosmos.distribution.v1beta1.QueryDelegationRewardsResponse: type: object properties: @@ -49829,7 +48496,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -49883,12 +48550,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -50023,9 +48685,10 @@ definitions: type: object properties: evidence: + description: evidence returns the requested evidence. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -50077,116 +48740,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} description: >- QueryEvidenceResponse is the response type for the Query/Evidence RPC method. @@ -50252,9 +48806,10 @@ definitions: format: uint64 description: proposal_id defines the unique id of the proposal. content: + description: content is the proposal's content. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -50306,116 +48861,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} status: description: status defines the proposal status. type: string @@ -50506,6 +48952,7 @@ definitions: type: object properties: deposit: + description: deposit defines the requested deposit. type: object properties: proposal_id: @@ -50533,9 +48980,6 @@ definitions: signatures required by gogoproto. description: amount to be deposited by depositor. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. description: >- QueryDepositResponse is the response type for the Query/Deposit RPC method. @@ -50677,9 +49121,10 @@ definitions: format: uint64 description: proposal_id defines the unique id of the proposal. content: + description: content is the proposal's content. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -50734,119 +49179,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} status: description: status defines the proposal status. type: string @@ -50933,9 +49266,10 @@ definitions: format: uint64 description: proposal_id defines the unique id of the proposal. content: + description: content is the proposal's content. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -50992,121 +49326,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} status: description: status defines the proposal status. type: string @@ -51227,6 +49447,7 @@ definitions: type: object properties: vote: + description: vote defines the queried vote. type: object properties: proposal_id: @@ -51273,17 +49494,11 @@ definitions: weight: type: string description: weight is the vote weight associated with the vote option. - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 + description: WeightedVoteOption defines a unit of vote for vote split. description: |- options is the weighted vote options. Since: cosmos-sdk 0.43 - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. description: QueryVoteResponse is the response type for the Query/Vote RPC method. cosmos.gov.v1beta1.QueryVotesResponse: type: object @@ -51337,10 +49552,7 @@ definitions: weight: type: string description: weight is the vote weight associated with the vote option. - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 + description: WeightedVoteOption defines a unit of vote for vote split. description: |- options is the weighted vote options. @@ -51454,10 +49666,7 @@ definitions: weight: type: string description: weight is the vote weight associated with the vote option. - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 + description: WeightedVoteOption defines a unit of vote for vote split. description: |- options is the weighted vote options. @@ -51508,10 +49717,7 @@ definitions: weight: type: string description: weight is the vote weight associated with the vote option. - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 + description: WeightedVoteOption defines a unit of vote for vote split. cosmos.gov.v1.Deposit: type: object properties: @@ -51566,6 +49772,41 @@ definitions: months. description: DepositParams defines the params for deposits on governance proposals. + cosmos.gov.v1.MessageBasedParams: + type: object + properties: + voting_period: + type: string + description: Duration of the voting period. + quorum: + type: string + description: >- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + yes_quorum: + type: string + description: >- + yes_quorum defines the minimum percentage of Yes votes in quorum for + proposal to pass. + + If zero then the yes_quorum is disabled. + threshold: + type: string + description: Minimum proportion of Yes votes for proposal to pass. + veto_threshold: + type: string + description: >- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. + description: >- + MessageBasedParams defines the parameters of specific messages in a + proposal. + + It is used to define the parameters of a proposal that is based on a + specific message. + + Once a message has message based params, it only supports a standard + proposal type. cosmos.gov.v1.Params: type: object properties: @@ -51587,7 +49828,7 @@ definitions: max_deposit_period: type: string description: >- - Maximum period for Atom holders to deposit on a proposal. Initial + Maximum period for stake holders to deposit on a proposal. Initial value: 2 months. @@ -51619,9 +49860,6 @@ definitions: description: >- The cancel ratio which will not be returned back to the depositors when a proposal is cancelled. - - - Since: cosmos-sdk 0.50 proposal_cancel_dest: type: string description: >- @@ -51630,23 +49868,14 @@ definitions: If empty, the (proposal_cancel_ratio * deposit) proposal deposits will be burned. - - - Since: cosmos-sdk 0.50 expedited_voting_period: type: string - description: |- - Duration of the voting period of an expedited proposal. - - Since: cosmos-sdk 0.50 + description: Duration of the voting period of an expedited proposal. expedited_threshold: type: string description: >- Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. - - - Since: cosmos-sdk 0.50 expedited_min_deposit: type: array items: @@ -51664,15 +49893,12 @@ definitions: description: Minimum expedited deposit for a proposal to enter voting period. burn_vote_quorum: type: boolean - description: 'Since: cosmos-sdk 0.47' title: burn deposits if a proposal does not meet quorum burn_proposal_deposit_prevote: type: boolean - description: 'Since: cosmos-sdk 0.47' title: burn deposits if the proposal does not enter voting period burn_vote_veto: type: boolean - description: 'Since: cosmos-sdk 0.47' title: burn deposits if quorum with vote type no_veto is met min_deposit_ratio: type: string @@ -51684,9 +49910,6 @@ definitions: 100stake, a deposit of 1stake would be required. - - - Since: cosmos-sdk 0.50 proposal_cancel_max_period: type: string description: >- @@ -51704,7 +49927,6 @@ definitions: type: array items: type: string - description: 'Since: x/gov v1.0.0' title: >- optimistic_authorized_addresses is an optional governance parameter that limits the authorized accounts than can @@ -51718,13 +49940,19 @@ definitions: converted to a standard proposal. The threshold is expressed as a percentage of the total bonded tokens. + yes_quorum: + type: string + description: >- + yes_quorum defines the minimum percentage of Yes votes in quorum for + proposal to pass. - - Since: x/gov v1.0.0 - description: |- - Params defines the parameters for the x/gov module. - - Since: cosmos-sdk 0.47 + Default value: 0 (disabled). + expedited_quorum: + type: string + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid for an expedited proposal. + description: Params defines the parameters for the x/gov module. cosmos.gov.v1.Proposal: type: object properties: @@ -51737,7 +49965,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -51791,12 +50019,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -51925,18 +50148,56 @@ definitions: properties: yes_count: type: string - description: yes_count is the number of yes votes on a proposal. + description: |- + yes_count is the number of yes votes on a proposal. + + option 1 abstain_count: type: string - description: abstain_count is the number of abstain votes on a proposal. + description: |- + abstain_count is the number of abstain votes on a proposal. + + option 2 no_count: type: string - description: no_count is the number of no votes on a proposal. + description: |- + no_count is the number of no votes on a proposal. + + option 3 no_with_veto_count: type: string description: >- no_with_veto_count is the number of no with veto votes on a proposal. + + + option 4 + option_one_count: + type: string + description: >- + option_one_count corresponds to the number of votes for option one + (= yes_count for non multiple choice proposals). + option_two_count: + type: string + description: >- + option_two_count corresponds to the number of votes for option two + (= abstain_count for non multiple choice + + proposals). + option_three_count: + type: string + description: >- + option_three_count corresponds to the number of votes for option + three (= no_count for non multiple choice + + proposals). + option_four_count: + type: string + description: >- + option_four_count corresponds to the number of votes for option + four (= no_with_veto_count for non multiple choice + + proposals). spam_count: type: string description: spam_count is the number of spam votes on a proposal. @@ -51979,28 +50240,21 @@ definitions: https://docs.cosmos.network/v0.47/modules/gov#proposal-3 title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal proposer: type: string - description: 'Since: cosmos-sdk 0.47' title: proposer is the address of the proposal sumbitter expedited: type: boolean - description: |- - Since: cosmos-sdk 0.50 - Deprecated: Use ProposalType instead. + description: 'Deprecated: Use ProposalType instead.' title: expedited defines if the proposal is expedited failed_reason: type: string - description: 'Since: cosmos-sdk 0.50' title: failed_reason defines the reason why the proposal failed proposal_type: - description: 'Since: cosmos-sdk 0.51' title: proposal_type defines the type of the proposal type: string enum: @@ -52010,6 +50264,17 @@ definitions: - PROPOSAL_TYPE_OPTIMISTIC - PROPOSAL_TYPE_EXPEDITED default: PROPOSAL_TYPE_UNSPECIFIED + description: >- + ProposalType enumerates the valid proposal types. + + All proposal types are v1.Proposal which have different voting periods + or tallying logic. + + - PROPOSAL_TYPE_UNSPECIFIED: PROPOSAL_TYPE_UNSPECIFIED defines no proposal type, which fallback to PROPOSAL_TYPE_STANDARD. + - PROPOSAL_TYPE_STANDARD: PROPOSAL_TYPE_STANDARD defines the type for a standard proposal. + - PROPOSAL_TYPE_MULTIPLE_CHOICE: PROPOSAL_TYPE_MULTIPLE_CHOICE defines the type for a multiple choice proposal. + - PROPOSAL_TYPE_OPTIMISTIC: PROPOSAL_TYPE_OPTIMISTIC defines the type for an optimistic proposal. + - PROPOSAL_TYPE_EXPEDITED: PROPOSAL_TYPE_EXPEDITED defines the type for an expedited proposal. description: Proposal defines the core field members of a governance proposal. cosmos.gov.v1.ProposalStatus: type: string @@ -52055,6 +50320,27 @@ definitions: - PROPOSAL_TYPE_MULTIPLE_CHOICE: PROPOSAL_TYPE_MULTIPLE_CHOICE defines the type for a multiple choice proposal. - PROPOSAL_TYPE_OPTIMISTIC: PROPOSAL_TYPE_OPTIMISTIC defines the type for an optimistic proposal. - PROPOSAL_TYPE_EXPEDITED: PROPOSAL_TYPE_EXPEDITED defines the type for an expedited proposal. + cosmos.gov.v1.ProposalVoteOptions: + type: object + properties: + option_one: + type: string + title: option_one is the first option of the proposal + option_two: + type: string + title: option_two is the second option of the proposal + option_three: + type: string + title: option_three is the third option of the proposal + option_four: + type: string + title: option_four is the fourth option of the proposal + option_spam: + type: string + description: option_spam is always present for all proposals. + description: |- + ProposalVoteOptions defines the stringified vote options for proposals. + This allows to support multiple choice options for a given proposal. cosmos.gov.v1.QueryConstitutionResponse: type: object properties: @@ -52067,6 +50353,7 @@ definitions: type: object properties: deposit: + description: deposit defines the requested deposit. type: object properties: proposal_id: @@ -52094,9 +50381,6 @@ definitions: signatures required by gogoproto. description: amount to be deposited by depositor. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. description: >- QueryDepositResponse is the response type for the Query/Deposit RPC method. @@ -52161,6 +50445,47 @@ definitions: description: >- QueryDepositsResponse is the response type for the Query/Deposits RPC method. + cosmos.gov.v1.QueryMessageBasedParamsResponse: + type: object + properties: + params: + type: object + properties: + voting_period: + type: string + description: Duration of the voting period. + quorum: + type: string + description: >- + Minimum percentage of total stake needed to vote for a result to + be considered valid. + yes_quorum: + type: string + description: >- + yes_quorum defines the minimum percentage of Yes votes in quorum + for proposal to pass. + + If zero then the yes_quorum is disabled. + threshold: + type: string + description: Minimum proportion of Yes votes for proposal to pass. + veto_threshold: + type: string + description: >- + Minimum value of Veto votes to Total votes ratio for proposal to + be vetoed. + description: >- + MessageBasedParams defines the parameters of specific messages in a + proposal. + + It is used to define the parameters of a proposal that is based on a + specific message. + + Once a message has message based params, it only supports a standard + proposal type. + description: >- + QueryMessageBasedParamsResponse is the response for the + Query/MessageBasedParams RPC method. cosmos.gov.v1.QueryParamsResponse: type: object properties: @@ -52230,10 +50555,7 @@ definitions: vetoed. Default value: 1/3. params: - description: |- - params defines all the parameters of x/gov module. - - Since: cosmos-sdk 0.47 + description: params defines all the parameters of x/gov module. type: object properties: min_deposit: @@ -52257,7 +50579,7 @@ definitions: max_deposit_period: type: string description: >- - Maximum period for Atom holders to deposit on a proposal. Initial + Maximum period for stake holders to deposit on a proposal. Initial value: 2 months. @@ -52291,9 +50613,6 @@ definitions: description: >- The cancel ratio which will not be returned back to the depositors when a proposal is cancelled. - - - Since: cosmos-sdk 0.50 proposal_cancel_dest: type: string description: >- @@ -52302,23 +50621,14 @@ definitions: If empty, the (proposal_cancel_ratio * deposit) proposal deposits will be burned. - - - Since: cosmos-sdk 0.50 expedited_voting_period: type: string - description: |- - Duration of the voting period of an expedited proposal. - - Since: cosmos-sdk 0.50 + description: Duration of the voting period of an expedited proposal. expedited_threshold: type: string description: >- Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. - - - Since: cosmos-sdk 0.50 expedited_min_deposit: type: array items: @@ -52339,15 +50649,12 @@ definitions: description: Minimum expedited deposit for a proposal to enter voting period. burn_vote_quorum: type: boolean - description: 'Since: cosmos-sdk 0.47' title: burn deposits if a proposal does not meet quorum burn_proposal_deposit_prevote: type: boolean - description: 'Since: cosmos-sdk 0.47' title: burn deposits if the proposal does not enter voting period burn_vote_veto: type: boolean - description: 'Since: cosmos-sdk 0.47' title: burn deposits if quorum with vote type no_veto is met min_deposit_ratio: type: string @@ -52359,9 +50666,6 @@ definitions: of 100stake, a deposit of 1stake would be required. - - - Since: cosmos-sdk 0.50 proposal_cancel_max_period: type: string description: >- @@ -52380,7 +50684,6 @@ definitions: type: array items: type: string - description: 'Since: x/gov v1.0.0' title: >- optimistic_authorized_addresses is an optional governance parameter that limits the authorized accounts than can @@ -52394,14 +50697,26 @@ definitions: converted to a standard proposal. The threshold is expressed as a percentage of the total bonded tokens. + yes_quorum: + type: string + description: >- + yes_quorum defines the minimum percentage of Yes votes in quorum + for proposal to pass. + Default value: 0 (disabled). + expedited_quorum: + type: string + description: >- + Minimum percentage of total stake needed to vote for a result to + be - Since: x/gov v1.0.0 + considered valid for an expedited proposal. description: QueryParamsResponse is the response type for the Query/Params RPC method. cosmos.gov.v1.QueryProposalResponse: type: object properties: proposal: + description: proposal is the requested governance proposal. type: object properties: id: @@ -52413,7 +50728,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -52470,12 +50785,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -52611,18 +50921,56 @@ definitions: properties: yes_count: type: string - description: yes_count is the number of yes votes on a proposal. + description: |- + yes_count is the number of yes votes on a proposal. + + option 1 abstain_count: type: string - description: abstain_count is the number of abstain votes on a proposal. + description: |- + abstain_count is the number of abstain votes on a proposal. + + option 2 no_count: type: string - description: no_count is the number of no votes on a proposal. + description: |- + no_count is the number of no votes on a proposal. + + option 3 no_with_veto_count: type: string description: >- no_with_veto_count is the number of no with veto votes on a proposal. + + + option 4 + option_one_count: + type: string + description: >- + option_one_count corresponds to the number of votes for option + one (= yes_count for non multiple choice proposals). + option_two_count: + type: string + description: >- + option_two_count corresponds to the number of votes for option + two (= abstain_count for non multiple choice + + proposals). + option_three_count: + type: string + description: >- + option_three_count corresponds to the number of votes for + option three (= no_count for non multiple choice + + proposals). + option_four_count: + type: string + description: >- + option_four_count corresponds to the number of votes for + option four (= no_with_veto_count for non multiple choice + + proposals). spam_count: type: string description: spam_count is the number of spam votes on a proposal. @@ -52668,28 +51016,21 @@ definitions: https://docs.cosmos.network/v0.47/modules/gov#proposal-3 title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal proposer: type: string - description: 'Since: cosmos-sdk 0.47' title: proposer is the address of the proposal sumbitter expedited: type: boolean - description: |- - Since: cosmos-sdk 0.50 - Deprecated: Use ProposalType instead. + description: 'Deprecated: Use ProposalType instead.' title: expedited defines if the proposal is expedited failed_reason: type: string - description: 'Since: cosmos-sdk 0.50' title: failed_reason defines the reason why the proposal failed proposal_type: - description: 'Since: cosmos-sdk 0.51' title: proposal_type defines the type of the proposal type: string enum: @@ -52699,10 +51040,45 @@ definitions: - PROPOSAL_TYPE_OPTIMISTIC - PROPOSAL_TYPE_EXPEDITED default: PROPOSAL_TYPE_UNSPECIFIED - description: Proposal defines the core field members of a governance proposal. + description: >- + ProposalType enumerates the valid proposal types. + + All proposal types are v1.Proposal which have different voting + periods or tallying logic. + + - PROPOSAL_TYPE_UNSPECIFIED: PROPOSAL_TYPE_UNSPECIFIED defines no proposal type, which fallback to PROPOSAL_TYPE_STANDARD. + - PROPOSAL_TYPE_STANDARD: PROPOSAL_TYPE_STANDARD defines the type for a standard proposal. + - PROPOSAL_TYPE_MULTIPLE_CHOICE: PROPOSAL_TYPE_MULTIPLE_CHOICE defines the type for a multiple choice proposal. + - PROPOSAL_TYPE_OPTIMISTIC: PROPOSAL_TYPE_OPTIMISTIC defines the type for an optimistic proposal. + - PROPOSAL_TYPE_EXPEDITED: PROPOSAL_TYPE_EXPEDITED defines the type for an expedited proposal. description: >- QueryProposalResponse is the response type for the Query/Proposal RPC method. + cosmos.gov.v1.QueryProposalVoteOptionsResponse: + type: object + properties: + vote_options: + description: vote_options defines the valid voting options for a proposal. + type: object + properties: + option_one: + type: string + title: option_one is the first option of the proposal + option_two: + type: string + title: option_two is the second option of the proposal + option_three: + type: string + title: option_three is the third option of the proposal + option_four: + type: string + title: option_four is the fourth option of the proposal + option_spam: + type: string + description: option_spam is always present for all proposals. + description: >- + QueryProposalVoteOptionsResponse is the response type for the + Query/ProposalVoteOptions RPC method. cosmos.gov.v1.QueryProposalsResponse: type: object properties: @@ -52720,7 +51096,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -52777,12 +51153,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -52921,18 +51292,56 @@ definitions: properties: yes_count: type: string - description: yes_count is the number of yes votes on a proposal. + description: |- + yes_count is the number of yes votes on a proposal. + + option 1 abstain_count: type: string - description: abstain_count is the number of abstain votes on a proposal. + description: |- + abstain_count is the number of abstain votes on a proposal. + + option 2 no_count: type: string - description: no_count is the number of no votes on a proposal. + description: |- + no_count is the number of no votes on a proposal. + + option 3 no_with_veto_count: type: string description: >- no_with_veto_count is the number of no with veto votes on a proposal. + + + option 4 + option_one_count: + type: string + description: >- + option_one_count corresponds to the number of votes for + option one (= yes_count for non multiple choice proposals). + option_two_count: + type: string + description: >- + option_two_count corresponds to the number of votes for + option two (= abstain_count for non multiple choice + + proposals). + option_three_count: + type: string + description: >- + option_three_count corresponds to the number of votes for + option three (= no_count for non multiple choice + + proposals). + option_four_count: + type: string + description: >- + option_four_count corresponds to the number of votes for + option four (= no_with_veto_count for non multiple choice + + proposals). spam_count: type: string description: spam_count is the number of spam votes on a proposal. @@ -52978,28 +51387,21 @@ definitions: https://docs.cosmos.network/v0.47/modules/gov#proposal-3 title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal proposer: type: string - description: 'Since: cosmos-sdk 0.47' title: proposer is the address of the proposal sumbitter expedited: type: boolean - description: |- - Since: cosmos-sdk 0.50 - Deprecated: Use ProposalType instead. + description: 'Deprecated: Use ProposalType instead.' title: expedited defines if the proposal is expedited failed_reason: type: string - description: 'Since: cosmos-sdk 0.50' title: failed_reason defines the reason why the proposal failed proposal_type: - description: 'Since: cosmos-sdk 0.51' title: proposal_type defines the type of the proposal type: string enum: @@ -53009,6 +51411,17 @@ definitions: - PROPOSAL_TYPE_OPTIMISTIC - PROPOSAL_TYPE_EXPEDITED default: PROPOSAL_TYPE_UNSPECIFIED + description: >- + ProposalType enumerates the valid proposal types. + + All proposal types are v1.Proposal which have different voting + periods or tallying logic. + + - PROPOSAL_TYPE_UNSPECIFIED: PROPOSAL_TYPE_UNSPECIFIED defines no proposal type, which fallback to PROPOSAL_TYPE_STANDARD. + - PROPOSAL_TYPE_STANDARD: PROPOSAL_TYPE_STANDARD defines the type for a standard proposal. + - PROPOSAL_TYPE_MULTIPLE_CHOICE: PROPOSAL_TYPE_MULTIPLE_CHOICE defines the type for a multiple choice proposal. + - PROPOSAL_TYPE_OPTIMISTIC: PROPOSAL_TYPE_OPTIMISTIC defines the type for an optimistic proposal. + - PROPOSAL_TYPE_EXPEDITED: PROPOSAL_TYPE_EXPEDITED defines the type for an expedited proposal. description: Proposal defines the core field members of a governance proposal. description: proposals defines all the requested governance proposals. pagination: @@ -53042,18 +51455,56 @@ definitions: properties: yes_count: type: string - description: yes_count is the number of yes votes on a proposal. + description: |- + yes_count is the number of yes votes on a proposal. + + option 1 abstain_count: type: string - description: abstain_count is the number of abstain votes on a proposal. + description: |- + abstain_count is the number of abstain votes on a proposal. + + option 2 no_count: type: string - description: no_count is the number of no votes on a proposal. + description: |- + no_count is the number of no votes on a proposal. + + option 3 no_with_veto_count: type: string description: >- no_with_veto_count is the number of no with veto votes on a proposal. + + + option 4 + option_one_count: + type: string + description: >- + option_one_count corresponds to the number of votes for option one + (= yes_count for non multiple choice proposals). + option_two_count: + type: string + description: >- + option_two_count corresponds to the number of votes for option two + (= abstain_count for non multiple choice + + proposals). + option_three_count: + type: string + description: >- + option_three_count corresponds to the number of votes for option + three (= no_count for non multiple choice + + proposals). + option_four_count: + type: string + description: >- + option_four_count corresponds to the number of votes for option + four (= no_with_veto_count for non multiple choice + + proposals). spam_count: type: string description: spam_count is the number of spam votes on a proposal. @@ -53064,6 +51515,7 @@ definitions: type: object properties: vote: + description: vote defines the queried vote. type: object properties: proposal_id: @@ -53085,14 +51537,14 @@ definitions: type: string enum: - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_ONE - VOTE_OPTION_YES - - VOTE_OPTION_TWO + - VOTE_OPTION_ONE - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_THREE + - VOTE_OPTION_TWO - VOTE_OPTION_NO - - VOTE_OPTION_FOUR + - VOTE_OPTION_THREE - VOTE_OPTION_NO_WITH_VETO + - VOTE_OPTION_FOUR - VOTE_OPTION_SPAM default: VOTE_OPTION_UNSPECIFIED weight: @@ -53107,9 +51559,6 @@ definitions: the recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/gov#vote-5 - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. description: QueryVoteResponse is the response type for the Query/Vote RPC method. cosmos.gov.v1.QueryVotesResponse: type: object @@ -53138,14 +51587,14 @@ definitions: type: string enum: - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_ONE - VOTE_OPTION_YES - - VOTE_OPTION_TWO + - VOTE_OPTION_ONE - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_THREE + - VOTE_OPTION_TWO - VOTE_OPTION_NO - - VOTE_OPTION_FOUR + - VOTE_OPTION_THREE - VOTE_OPTION_NO_WITH_VETO + - VOTE_OPTION_FOUR - VOTE_OPTION_SPAM default: VOTE_OPTION_UNSPECIFIED weight: @@ -53208,16 +51657,54 @@ definitions: properties: yes_count: type: string - description: yes_count is the number of yes votes on a proposal. + description: |- + yes_count is the number of yes votes on a proposal. + + option 1 abstain_count: type: string - description: abstain_count is the number of abstain votes on a proposal. + description: |- + abstain_count is the number of abstain votes on a proposal. + + option 2 no_count: type: string - description: no_count is the number of no votes on a proposal. + description: |- + no_count is the number of no votes on a proposal. + + option 3 no_with_veto_count: type: string - description: no_with_veto_count is the number of no with veto votes on a proposal. + description: |- + no_with_veto_count is the number of no with veto votes on a proposal. + + option 4 + option_one_count: + type: string + description: >- + option_one_count corresponds to the number of votes for option one (= + yes_count for non multiple choice proposals). + option_two_count: + type: string + description: >- + option_two_count corresponds to the number of votes for option two (= + abstain_count for non multiple choice + + proposals). + option_three_count: + type: string + description: >- + option_three_count corresponds to the number of votes for option three + (= no_count for non multiple choice + + proposals). + option_four_count: + type: string + description: >- + option_four_count corresponds to the number of votes for option four + (= no_with_veto_count for non multiple choice + + proposals). spam_count: type: string description: spam_count is the number of spam votes on a proposal. @@ -53244,14 +51731,14 @@ definitions: type: string enum: - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_ONE - VOTE_OPTION_YES - - VOTE_OPTION_TWO + - VOTE_OPTION_ONE - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_THREE + - VOTE_OPTION_TWO - VOTE_OPTION_NO - - VOTE_OPTION_FOUR + - VOTE_OPTION_THREE - VOTE_OPTION_NO_WITH_VETO + - VOTE_OPTION_FOUR - VOTE_OPTION_SPAM default: VOTE_OPTION_UNSPECIFIED weight: @@ -53273,14 +51760,14 @@ definitions: type: string enum: - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_ONE - VOTE_OPTION_YES - - VOTE_OPTION_TWO + - VOTE_OPTION_ONE - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_THREE + - VOTE_OPTION_TWO - VOTE_OPTION_NO - - VOTE_OPTION_FOUR + - VOTE_OPTION_THREE - VOTE_OPTION_NO_WITH_VETO + - VOTE_OPTION_FOUR - VOTE_OPTION_SPAM default: VOTE_OPTION_UNSPECIFIED description: >- @@ -53288,14 +51775,14 @@ definitions: proposal. - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_ONE: VOTE_OPTION_ONE defines the first proposal vote option. - VOTE_OPTION_YES: VOTE_OPTION_YES defines the yes proposal vote option. - - VOTE_OPTION_TWO: VOTE_OPTION_TWO defines the second proposal vote option. + - VOTE_OPTION_ONE: VOTE_OPTION_ONE defines the first proposal vote option. - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines the abstain proposal vote option. - - VOTE_OPTION_THREE: VOTE_OPTION_THREE defines the third proposal vote option. + - VOTE_OPTION_TWO: VOTE_OPTION_TWO defines the second proposal vote option. - VOTE_OPTION_NO: VOTE_OPTION_NO defines the no proposal vote option. - - VOTE_OPTION_FOUR: VOTE_OPTION_FOUR defines the fourth proposal vote option. + - VOTE_OPTION_THREE: VOTE_OPTION_THREE defines the third proposal vote option. - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines the no with veto proposal vote option. + - VOTE_OPTION_FOUR: VOTE_OPTION_FOUR defines the fourth proposal vote option. - VOTE_OPTION_SPAM: VOTE_OPTION_SPAM defines the spam proposal vote option. cosmos.gov.v1.VotingParams: type: object @@ -53314,14 +51801,14 @@ definitions: type: string enum: - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_ONE - VOTE_OPTION_YES - - VOTE_OPTION_TWO + - VOTE_OPTION_ONE - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_THREE + - VOTE_OPTION_TWO - VOTE_OPTION_NO - - VOTE_OPTION_FOUR + - VOTE_OPTION_THREE - VOTE_OPTION_NO_WITH_VETO + - VOTE_OPTION_FOUR - VOTE_OPTION_SPAM default: VOTE_OPTION_UNSPECIFIED weight: @@ -53350,6 +51837,9 @@ definitions: type: string format: uint64 title: expected blocks per year + max_supply: + type: string + title: maximum supply for the token description: Params defines the parameters for the x/mint module. cosmos.mint.v1beta1.QueryAnnualProvisionsResponse: type: object @@ -53397,6 +51887,9 @@ definitions: type: string format: uint64 title: expected blocks per year + max_supply: + type: string + title: maximum supply for the token description: QueryParamsResponse is the response type for the Query/Params RPC method. cosmos.params.v1beta1.ParamChange: type: object @@ -53443,14 +51936,9 @@ definitions: exist for the subspace. - - - Since: cosmos-sdk 0.46 description: |- QuerySubspacesResponse defines the response types for querying for all registered subspaces and all keys for a subspace. - - Since: cosmos-sdk 0.46 cosmos.params.v1beta1.Subspace: type: object properties: @@ -53463,8 +51951,6 @@ definitions: description: |- Subspace defines a parameter subspace name and all the keys that exist for the subspace. - - Since: cosmos-sdk 0.46 cosmos.slashing.v1beta1.Params: type: object properties: @@ -53509,6 +51995,7 @@ definitions: type: object properties: val_signing_info: + title: val_signing_info is the signing info of requested val cons address type: object properties: address: @@ -53521,8 +52008,8 @@ definitions: type: string format: int64 description: >- - Index which is incremented every time a validator is bonded in a - block and + DEPRECATED: Index which is incremented every time a validator is + bonded in a block and _may_ have signed a pre-commit or not. This in conjunction with the @@ -53558,7 +52045,6 @@ definitions: their liveness activity. - title: val_signing_info is the signing info of requested val cons address title: >- QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC @@ -53582,8 +52068,8 @@ definitions: type: string format: int64 description: >- - Index which is incremented every time a validator is bonded in a - block and + DEPRECATED: Index which is incremented every time a validator is + bonded in a block and _may_ have signed a pre-commit or not. This in conjunction with the @@ -53664,8 +52150,8 @@ definitions: type: string format: int64 description: >- - Index which is incremented every time a validator is bonded in a block - and + DEPRECATED: Index which is incremented every time a validator is + bonded in a block and _may_ have signed a pre-commit or not. This in conjunction with the @@ -53880,37 +52366,49 @@ definitions: hash: type: string format: byte - title: PartsetHeader + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: root hash of all results from the txs from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. valset: type: array @@ -53923,9 +52421,12 @@ definitions: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, + as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -53982,121 +52483,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -54190,9 +52577,6 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -54318,6 +52702,7 @@ definitions: type: object properties: delegation_response: + description: delegation_responses defines the delegation info of a delegation. type: object properties: delegation: @@ -54355,12 +52740,6 @@ definitions: method signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it contains - a - - balance in addition to shares which is more suitable for client - responses. description: >- QueryDelegationResponse is response type for the Query/Delegation RPC method. @@ -54486,7 +52865,10 @@ definitions: description: >- UnbondingDelegationEntry defines an unbonding object with relevant metadata. - description: entries are the unbonding delegation entries. + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries description: >- UnbondingDelegation stores all of a single delegator's unbonding bonds @@ -54518,6 +52900,7 @@ definitions: type: object properties: validator: + description: validator defines the validator info. type: object properties: operator_address: @@ -54526,9 +52909,12 @@ definitions: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, as + a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -54583,119 +52969,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -54787,9 +53061,6 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -54804,27 +53075,6 @@ definitions: title: >- list of unbonding ids, each uniquely identifying an unbonding of this validator - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. description: |- QueryDelegatorValidatorResponse response type for the Query/DelegatorValidator RPC method. @@ -54842,9 +53092,12 @@ definitions: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, + as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -54901,121 +53154,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -55109,9 +53248,6 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -55222,37 +53358,49 @@ definitions: hash: type: string format: byte - title: PartsetHeader + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: root hash of all results from the txs from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. valset: type: array @@ -55265,9 +53413,12 @@ definitions: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -55325,126 +53476,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -55538,9 +53570,6 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -55734,7 +53763,10 @@ definitions: description: >- RedelegationEntry defines a redelegation object with relevant metadata. - description: entries are the redelegation entries. + description: |- + entries are the redelegation entries. + + redelegation entries description: >- Redelegation contains the list of a particular delegator's redelegating bonds @@ -55830,6 +53862,7 @@ definitions: type: object properties: unbond: + description: unbond defines the unbonding information of a delegation. type: object properties: delegator_address: @@ -55874,10 +53907,10 @@ definitions: description: >- UnbondingDelegationEntry defines an unbonding object with relevant metadata. - description: entries are the unbonding delegation entries. - description: |- - UnbondingDelegation stores all of a single delegator's unbonding bonds - for a single validator in an time-ordered list. + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries description: |- QueryDelegationResponse is response type for the Query/UnbondingDelegation RPC method. @@ -55956,6 +53989,7 @@ definitions: type: object properties: validator: + description: validator defines the validator info. type: object properties: operator_address: @@ -55964,9 +53998,12 @@ definitions: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, as + a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -56021,119 +54058,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -56225,9 +54150,6 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -56242,27 +54164,6 @@ definitions: title: >- list of unbonding ids, each uniquely identifying an unbonding of this validator - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. title: QueryValidatorResponse is response type for the Query/Validator RPC method cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse: type: object @@ -56314,7 +54215,10 @@ definitions: description: >- UnbondingDelegationEntry defines an unbonding object with relevant metadata. - description: entries are the unbonding delegation entries. + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries description: >- UnbondingDelegation stores all of a single delegator's unbonding bonds @@ -56356,9 +54260,12 @@ definitions: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, + as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -56415,121 +54322,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -56623,9 +54416,6 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -56740,7 +54530,10 @@ definitions: description: >- RedelegationEntry defines a redelegation object with relevant metadata. - description: entries are the redelegation entries. + description: |- + entries are the redelegation entries. + + redelegation entries description: >- Redelegation contains the list of a particular delegator's redelegating bonds @@ -56883,7 +54676,10 @@ definitions: description: >- RedelegationEntry defines a redelegation object with relevant metadata. - description: entries are the redelegation entries. + description: |- + entries are the redelegation entries. + + redelegation entries description: >- Redelegation contains the list of a particular delegator's redelegating bonds @@ -56993,7 +54789,10 @@ definitions: description: >- UnbondingDelegationEntry defines an unbonding object with relevant metadata. - description: entries are the unbonding delegation entries. + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries description: |- UnbondingDelegation stores all of a single delegator's unbonding bonds for a single validator in an time-ordered list. @@ -57038,9 +54837,12 @@ definitions: operator_address defines the address of the validator's operator; bech encoded in JSON. consensus_pubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, as a + Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -57092,116 +54894,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} jailed: type: boolean description: >- @@ -57291,9 +54984,6 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. - - - Since: cosmos-sdk 0.46 unbonding_on_hold_ref_count: type: string format: int64 @@ -57328,6 +55018,46 @@ definitions: exchange rate. Voting power can be calculated as total bonded shares multiplied by exchange rate. + cometbft.abci.v1.Event: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: EventAttribute is a single key-value pair, associated with an event. + description: >- + Event allows application developers to attach additional information to + + ResponseFinalizeBlock and ResponseCheckTx. + + Up to 0.37, this could also be used in ResponseBeginBlock, + ResponseEndBlock, + + and ResponseDeliverTx. + + Later, transactions may be queried using these events. + cometbft.abci.v1.EventAttribute: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: EventAttribute is a single key-value pair, associated with an event. cosmos.base.abci.v1beta1.ABCIMessageLog: type: object properties: @@ -57426,6 +55156,7 @@ definitions: type: string index: type: boolean + title: nondeterministic description: >- EventAttribute is a single key-value pair, associated with an event. @@ -57435,6 +55166,11 @@ definitions: ResponseFinalizeBlock and ResponseCheckTx. + Up to 0.37, this could also be used in ResponseBeginBlock, + ResponseEndBlock, + + and ResponseDeliverTx. + Later, transactions may be queried using these events. description: >- Events contains a slice of Event objects that were emitted during @@ -57446,7 +55182,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -57500,12 +55236,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -57611,10 +55342,7 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - description: |- - msg_responses contains the Msg handler responses type packed in Anys. - - Since: cosmos-sdk 0.46 + description: msg_responses contains the Msg handler responses type packed in Anys. description: Result is the union of ResponseFormat and ResponseCheckTx. cosmos.base.abci.v1beta1.StringEvent: type: object @@ -57720,9 +55448,10 @@ definitions: format: int64 description: Amount of gas consumed by transaction. tx: + description: The request transaction bytes. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -57774,116 +55503,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} timestamp: type: string description: >- @@ -57912,6 +55532,7 @@ definitions: type: string index: type: boolean + title: nondeterministic description: >- EventAttribute is a single key-value pair, associated with an event. @@ -57921,6 +55542,11 @@ definitions: ResponseFinalizeBlock and ResponseCheckTx. + Up to 0.37, this could also be used in ResponseBeginBlock, + ResponseEndBlock, + + and ResponseDeliverTx. + Later, transactions may be queried using these events. description: >- Events defines all the events emitted by processing a transaction. @@ -58035,6 +55661,7 @@ definitions: signer_infos: type: array items: + type: object $ref: '#/definitions/cosmos.tx.v1beta1.SignerInfo' description: >- signer_infos defines the signing modes for the required signers. The @@ -58122,9 +55749,6 @@ definitions: the `TipDecorator` in its posthandler. - - - Since: cosmos-sdk 0.46 type: object properties: amount: @@ -58205,6 +55829,7 @@ definitions: type: object properties: tx_response: + description: tx_response is the queried TxResponses. type: object properties: height: @@ -58289,9 +55914,10 @@ definitions: format: int64 description: Amount of gas consumed by transaction. tx: + description: The request transaction bytes. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -58346,119 +55972,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} timestamp: type: string description: >- @@ -58487,6 +56001,7 @@ definitions: type: string index: type: boolean + title: nondeterministic description: >- EventAttribute is a single key-value pair, associated with an event. @@ -58496,6 +56011,11 @@ definitions: ResponseFinalizeBlock and ResponseCheckTx. + Up to 0.37, this could also be used in ResponseBeginBlock, + ResponseEndBlock, + + and ResponseDeliverTx. + Later, transactions may be queried using these events. description: >- Events defines all the events emitted by processing a transaction. @@ -58510,11 +56030,6 @@ definitions: Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. description: |- BroadcastTxResponse is the response type for the Service.BroadcastTx method. @@ -58582,6 +56097,7 @@ definitions: txs: type: array items: + type: object $ref: '#/definitions/cosmos.tx.v1beta1.Tx' description: txs are the transactions in the block. block_id: @@ -58599,8 +56115,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. block: type: object properties: @@ -58648,38 +56166,50 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: commit from validators from the last block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: root hash of all results from the txs from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. data: type: object @@ -58723,8 +56253,10 @@ definitions: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -58746,8 +56278,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -58803,8 +56337,10 @@ definitions: SignedMsgType is a type of signed message in the consensus. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals + - SIGNED_MSG_TYPE_UNKNOWN: Unknown + - SIGNED_MSG_TYPE_PREVOTE: Prevote + - SIGNED_MSG_TYPE_PRECOMMIT: Precommit + - SIGNED_MSG_TYPE_PROPOSAL: Proposal height: type: string format: int64 @@ -58826,8 +56362,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its + hash and its `PartSetHeader`. timestamp: type: string format: date-time @@ -58934,40 +56472,56 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. + title: prev block info last_commit_hash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data data_hash: type: string format: byte + title: transactions validators_hash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block next_validators_hash: type: string format: byte + title: validators for the next block consensus_hash: type: string format: byte + title: consensus params for current block app_hash: type: string format: byte + title: state after txs from the previous block last_results_hash: type: string format: byte + title: >- + root hash of all results from the txs + from the previous block evidence_hash: type: string format: byte + description: evidence included in the block title: consensus info proposer_address: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -58995,8 +56549,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block + as its hash and its `PartSetHeader`. signatures: type: array items: @@ -59010,6 +56566,12 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for @@ -59028,6 +56590,10 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. + description: >- + SignedHeader contains a Header(H) and + Commit(H+1) with signatures of validators who + signed it. validator_set: type: object properties: @@ -59048,15 +56614,18 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating + in the consensus protocol. proposer: type: object properties: @@ -59072,18 +56641,25 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for - use with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 + public key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating in + the consensus protocol. total_voting_power: type: string format: int64 + description: ValidatorSet defines a set of validators. + description: >- + LightBlock is a combination of SignedHeader and + ValidatorSet. It is used by light clients. common_height: type: string format: int64 @@ -59104,15 +56680,18 @@ definitions: secp256k1: type: string format: byte - title: >- - PublicKey defines the keys available for use - with Validators + description: >- + PublicKey is a ED25519 or a secp256k1 public + key. voting_power: type: string format: int64 proposer_priority: type: string format: int64 + description: >- + Validator represents a node participating in the + consensus protocol. total_voting_power: type: string format: int64 @@ -59122,6 +56701,10 @@ definitions: description: >- LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. + description: >- + Evidence is a generic type for wrapping evidence of + misbehavior by a validator. + description: EvidenceList is a list of evidence. last_commit: type: object properties: @@ -59146,8 +56729,10 @@ definitions: hash: type: string format: byte - title: PartsetHeader - title: BlockID + description: Header of the parts set for a block. + description: >- + BlockID defines the unique ID of a block as its hash and its + `PartSetHeader`. signatures: type: array items: @@ -59161,6 +56746,11 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: Indicates an error condition + - BLOCK_ID_FLAG_ABSENT: The vote was not received + - BLOCK_ID_FLAG_COMMIT: Voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: Voted for nil title: BlockIdFlag indicates which BlockID the signature is for validator_address: type: string @@ -59175,6 +56765,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. + description: Block defines the structure of a block in the CometBFT blockchain. pagination: description: pagination defines a pagination for the response. type: object @@ -59199,9 +56790,6 @@ definitions: Service.GetBlockWithTxs method. - - - Since: cosmos-sdk 0.45.2 cosmos.tx.v1beta1.GetTxResponse: type: object properties: @@ -59209,6 +56797,7 @@ definitions: $ref: '#/definitions/cosmos.tx.v1beta1.Tx' description: tx is the queried transaction. tx_response: + description: tx_response is the queried TxResponses. type: object properties: height: @@ -59293,9 +56882,10 @@ definitions: format: int64 description: Amount of gas consumed by transaction. tx: + description: The request transaction bytes. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -59350,119 +56940,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} timestamp: type: string description: >- @@ -59491,6 +56969,7 @@ definitions: type: string index: type: boolean + title: nondeterministic description: >- EventAttribute is a single key-value pair, associated with an event. @@ -59500,6 +56979,11 @@ definitions: ResponseFinalizeBlock and ResponseCheckTx. + Up to 0.37, this could also be used in ResponseBeginBlock, + ResponseEndBlock, + + and ResponseDeliverTx. + Later, transactions may be queried using these events. description: >- Events defines all the events emitted by processing a transaction. @@ -59514,11 +56998,6 @@ definitions: Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. description: GetTxResponse is the response type for the Service.GetTx method. cosmos.tx.v1beta1.GetTxsEventResponse: type: object @@ -59526,6 +57005,7 @@ definitions: txs: type: array items: + type: object $ref: '#/definitions/cosmos.tx.v1beta1.Tx' description: txs is the list of queried transactions. tx_responses: @@ -59615,9 +57095,10 @@ definitions: format: int64 description: Amount of gas consumed by transaction. tx: + description: The request transaction bytes. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -59674,121 +57155,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} timestamp: type: string description: >- @@ -59817,6 +57184,7 @@ definitions: type: string index: type: boolean + title: nondeterministic description: >- EventAttribute is a single key-value pair, associated with an event. @@ -59826,6 +57194,11 @@ definitions: ResponseFinalizeBlock and ResponseCheckTx. + Up to 0.37, this could also be used in ResponseBeginBlock, + ResponseEndBlock, + + and ResponseDeliverTx. + Later, transactions may be queried using these events. description: >- Events defines all the events emitted by processing a @@ -59993,6 +57366,7 @@ definitions: mode_infos: type: array items: + type: object $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' title: |- mode_infos is the corresponding modes of the signers of the multisig @@ -60103,9 +57477,17 @@ definitions: type: object properties: public_key: + description: >- + public_key is the public key of the signer. It is optional for + accounts + + that already exist in state. If unset, the verifier can use the + required \ + + signer address for this position and lookup the public key. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -60157,116 +57539,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} mode_info: $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' title: |- @@ -60296,10 +57569,7 @@ definitions: tx_bytes: type: string format: byte - description: |- - tx_bytes is the raw transaction. - - Since: cosmos-sdk 0.43 + description: tx_bytes is the raw transaction. description: |- SimulateRequest is the request type for the Service.Simulate RPC method. @@ -60361,6 +57631,7 @@ definitions: type: string index: type: boolean + title: nondeterministic description: >- EventAttribute is a single key-value pair, associated with an event. @@ -60370,6 +57641,11 @@ definitions: ResponseFinalizeBlock and ResponseCheckTx. + Up to 0.37, this could also be used in ResponseBeginBlock, + ResponseEndBlock, + + and ResponseDeliverTx. + Later, transactions may be queried using these events. description: >- Events contains a slice of Event objects that were emitted during @@ -60381,7 +57657,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -60438,12 +57714,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -60556,9 +57827,6 @@ definitions: description: >- msg_responses contains the Msg handler responses type packed in Anys. - - - Since: cosmos-sdk 0.46 description: |- SimulateResponse is the response type for the Service.SimulateRPC method. @@ -60583,10 +57851,7 @@ definitions: tipper: type: string title: tipper is the address of the account paying for the tip - description: |- - Tip is the tip used for meta-transactions. - - Since: cosmos-sdk 0.46 + description: Tip is the tip used for meta-transactions. cosmos.tx.v1beta1.Tx: type: object properties: @@ -60599,7 +57864,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -60656,12 +57921,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -60846,7 +58106,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -60903,12 +58163,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -61031,7 +58286,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -61088,12 +58343,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -61239,7 +58489,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -61293,12 +58543,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -61474,7 +58719,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -61528,12 +58773,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -61651,7 +58891,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -61705,12 +58945,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -61833,8 +59068,6 @@ definitions: description: |- TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino RPC method. - - Since: cosmos-sdk 0.47 cosmos.tx.v1beta1.TxDecodeAminoResponse: type: object properties: @@ -61843,8 +59076,6 @@ definitions: description: |- TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino RPC method. - - Since: cosmos-sdk 0.47 cosmos.tx.v1beta1.TxDecodeRequest: type: object properties: @@ -61855,8 +59086,6 @@ definitions: description: |- TxDecodeRequest is the request type for the Service.TxDecode RPC method. - - Since: cosmos-sdk 0.47 cosmos.tx.v1beta1.TxDecodeResponse: type: object properties: @@ -61866,8 +59095,6 @@ definitions: description: |- TxDecodeResponse is the response type for the Service.TxDecode method. - - Since: cosmos-sdk 0.47 cosmos.tx.v1beta1.TxEncodeAminoRequest: type: object properties: @@ -61876,8 +59103,6 @@ definitions: description: |- TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino RPC method. - - Since: cosmos-sdk 0.47 cosmos.tx.v1beta1.TxEncodeAminoResponse: type: object properties: @@ -61887,8 +59112,6 @@ definitions: description: |- TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino RPC method. - - Since: cosmos-sdk 0.47 cosmos.tx.v1beta1.TxEncodeRequest: type: object properties: @@ -61898,8 +59121,6 @@ definitions: description: |- TxEncodeRequest is the request type for the Service.TxEncode RPC method. - - Since: cosmos-sdk 0.47 cosmos.tx.v1beta1.TxEncodeResponse: type: object properties: @@ -61910,39 +59131,6 @@ definitions: description: |- TxEncodeResponse is the response type for the Service.TxEncode method. - - Since: cosmos-sdk 0.47 - tendermint.abci.Event: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: EventAttribute is a single key-value pair, associated with an event. - description: |- - Event allows application developers to attach additional information to - ResponseFinalizeBlock and ResponseCheckTx. - Later, transactions may be queried using these events. - tendermint.abci.EventAttribute: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: EventAttribute is a single key-value pair, associated with an event. cosmos.upgrade.v1beta1.ModuleVersion: type: object properties: @@ -61953,10 +59141,7 @@ definitions: type: string format: uint64 title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. - - Since: cosmos-sdk 0.43 + description: ModuleVersion specifies a module and its consensus version. cosmos.upgrade.v1beta1.Plan: type: object properties: @@ -62000,9 +59185,16 @@ definitions: Any application specific upgrade info to be included on-chain such as a git commit that validators could automatically upgrade to upgraded_client_state: + description: >- + Deprecated: UpgradedClientState field has been deprecated. IBC upgrade + logic has been + + moved to the IBC module in the sub module 02-client. + + If this field is not empty, an error will be thrown. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -62054,116 +59246,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} description: >- Plan specifies information about a planned upgrade and when it should occur. @@ -62184,7 +59267,6 @@ definitions: properties: address: type: string - description: 'Since: cosmos-sdk 0.46' title: QueryAuthorityResponse is the response type for Query/Authority cosmos.upgrade.v1beta1.QueryCurrentPlanResponse: type: object @@ -62237,9 +59319,16 @@ definitions: such as a git commit that validators could automatically upgrade to upgraded_client_state: + description: >- + Deprecated: UpgradedClientState field has been deprecated. IBC + upgrade logic has been + + moved to the IBC module in the sub module 02-client. + + If this field is not empty, an error will be thrown. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -62294,119 +59383,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} description: >- QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC @@ -62427,10 +59404,7 @@ definitions: type: string format: uint64 title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. - - Since: cosmos-sdk 0.43 + description: ModuleVersion specifies a module and its consensus version. description: >- module_versions is a list of module names with their consensus versions. @@ -62439,16 +59413,12 @@ definitions: Query/ModuleVersions RPC method. - - - Since: cosmos-sdk 0.43 cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse: type: object properties: upgraded_consensus_state: type: string format: byte - title: 'Since: cosmos-sdk 0.43' description: >- QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState @@ -62460,7 +59430,7 @@ definitions: authorization: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -62512,12 +59482,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -62645,7 +59610,7 @@ definitions: authorization: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -62697,12 +59662,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -62830,7 +59790,7 @@ definitions: authorization: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -62887,12 +59847,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -63048,221 +60003,7 @@ definitions: authorization: type: object properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses of the - grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGranterGrantsResponse is the response type for the - Query/GranterGrants RPC method. - cosmos.authz.v1beta1.QueryGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - authorization: - type: object - properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -63319,12 +60060,216 @@ definitions: might be used with implementation specific semantics. - value: + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the + grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGranterGrantsResponse is the response type for the + Query/GranterGrants RPC method. + cosmos.authz.v1beta1.QueryGrantsResponse: + type: object + properties: + grants: + type: array + items: + type: object + properties: + authorization: + type: object + properties: + '@type': type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -63488,7 +60433,7 @@ definitions: description: allowance can be any of basic, periodic, allowed fee allowance. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -63540,12 +60485,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} title: Grant is stored in the KVStore to record a grant with full context cosmos.feegrant.v1beta1.QueryAllowanceResponse: type: object @@ -63568,7 +60508,7 @@ definitions: description: allowance can be any of basic, periodic, allowed fee allowance. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -63623,12 +60563,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} title: Grant is stored in the KVStore to record a grant with full context description: >- QueryAllowanceResponse is the response type for the Query/Allowance RPC @@ -63655,7 +60590,7 @@ definitions: description: allowance can be any of basic, periodic, allowed fee allowance. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -63712,12 +60647,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} title: Grant is stored in the KVStore to record a grant with full context description: allowances that have been issued by the granter. pagination: @@ -63742,9 +60672,6 @@ definitions: description: >- QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method. - - - Since: cosmos-sdk 0.46 cosmos.feegrant.v1beta1.QueryAllowancesResponse: type: object properties: @@ -63767,7 +60694,7 @@ definitions: description: allowance can be any of basic, periodic, allowed fee allowance. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -63824,12 +60751,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} title: Grant is stored in the KVStore to record a grant with full context description: allowances are allowance's granted for grantee by granter. pagination: @@ -63882,9 +60804,10 @@ definitions: type: string title: uri_hash is a hash of the document pointed by uri. Optional data: + title: data is the app specific metadata of the NFT class. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -63936,12 +60859,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -64046,7 +60964,6 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is the app specific metadata of the NFT class. Optional description: Class defines the class of the nft type. cosmos.nft.v1beta1.NFT: type: object @@ -64066,9 +60983,10 @@ definitions: type: string title: uri_hash is a hash of the document pointed by uri data: + title: data is an app specific data of the NFT. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -64120,12 +61038,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -64230,7 +61143,6 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is an app specific data of the NFT. Optional description: NFT defines the NFT. cosmos.nft.v1beta1.QueryBalanceByQueryStringResponse: type: object @@ -64239,7 +61151,6 @@ definitions: type: string format: uint64 title: amount is the number of all NFTs of a given class owned by the owner - description: 'Since: nft v0.1.1' title: >- QueryBalanceByQueryStringResponse is the response type for the Query/Balance RPC method @@ -64283,9 +61194,10 @@ definitions: type: string title: uri_hash is a hash of the document pointed by uri. Optional data: + title: data is the app specific metadata of the NFT class. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -64340,12 +61252,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -64453,8 +61360,6 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is the app specific metadata of the NFT class. Optional - description: 'Since: nft v0.1.1' title: >- QueryClassByQueryStringResponse is the response type for the Query/Class RPC method @@ -64462,6 +61367,7 @@ definitions: type: object properties: class: + description: class defines the class of the nft type. type: object properties: id: @@ -64489,9 +61395,10 @@ definitions: type: string title: uri_hash is a hash of the document pointed by uri. Optional data: + title: data is the app specific metadata of the NFT class. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -64546,12 +61453,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -64659,8 +61561,6 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is the app specific metadata of the NFT class. Optional - description: Class defines the class of the nft type. title: QueryClassResponse is the response type for the Query/Class RPC method cosmos.nft.v1beta1.QueryClassesResponse: type: object @@ -64697,9 +61597,10 @@ definitions: type: string title: uri_hash is a hash of the document pointed by uri. Optional data: + title: data is the app specific metadata of the NFT class. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -64756,12 +61657,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -64871,7 +61767,6 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is the app specific metadata of the NFT class. Optional description: Class defines the class of the nft type. description: class defines the class of the nft type. pagination: @@ -64916,9 +61811,10 @@ definitions: type: string title: uri_hash is a hash of the document pointed by uri data: + title: data is an app specific data of the NFT. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -64973,12 +61869,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -65086,9 +61977,7 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is an app specific data of the NFT. Optional description: NFT defines the NFT. - description: 'Since: nft v0.1.1' title: >- QueryNFTByQueryStringResponse is the response type for the Query/NFT RPC method @@ -65096,6 +61985,7 @@ definitions: type: object properties: nft: + title: owner is the owner address of the nft type: object properties: class_id: @@ -65113,9 +62003,10 @@ definitions: type: string title: uri_hash is a hash of the document pointed by uri data: + title: data is an app specific data of the NFT. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -65170,12 +62061,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -65283,9 +62169,7 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is an app specific data of the NFT. Optional description: NFT defines the NFT. - title: owner is the owner address of the nft title: QueryNFTResponse is the response type for the Query/NFT RPC method cosmos.nft.v1beta1.QueryNFTsResponse: type: object @@ -65310,9 +62194,10 @@ definitions: type: string title: uri_hash is a hash of the document pointed by uri data: + title: data is an app specific data of the NFT. Optional type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -65369,12 +62254,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -65484,7 +62364,6 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: data is an app specific data of the NFT. Optional description: NFT defines the NFT. title: NFT defines the NFT pagination: @@ -65513,7 +62392,6 @@ definitions: owner: type: string title: owner is the owner address of the nft - description: 'Since: nft v0.1.1' title: >- QueryOwnerByQueryStringResponse is the response type for the Query/Owner RPC method @@ -65531,7 +62409,6 @@ definitions: type: string format: uint64 title: amount is the number of all NFTs from the given class - description: 'Since: nft v0.1.1' title: >- QuerySupplyByQueryStringResponse is the response type for the Query/Supply RPC method @@ -65636,9 +62513,10 @@ definitions: would create a different result on a running proposal. decision_policy: + description: decision_policy specifies the group policy's decision policy. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -65690,116 +62568,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} created_at: type: string format: date-time @@ -65938,7 +62707,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -65992,12 +62761,7 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -66108,11 +62872,9 @@ definitions: passes. title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal description: >- Proposal defines a group proposal. Any member of a group can submit a @@ -66295,250 +63057,10 @@ definitions: would create a different result on a running proposal. decision_policy: + description: decision_policy specifies the group policy's decision policy. type: object properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy was - created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a - group policy. - description: group_policies are the group policies info with provided admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin - response type. - cosmos.group.v1.QueryGroupPoliciesByGroupResponse: - type: object - properties: - group_policies: - type: array - items: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the group policy. - - the recommended format of the metadata is to be found here: - - https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's GroupPolicyInfo - structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -66595,121 +63117,135 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} + created_at: + type: string + format: date-time description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. + created_at is a timestamp specifying when a group policy was + created. + description: >- + GroupPolicyInfo represents the high-level on-chain information for a + group policy. + description: group_policies are the group policies info with provided admin. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + was set, its value is undefined otherwise + description: >- + QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin + response type. + cosmos.group.v1.QueryGroupPoliciesByGroupResponse: + type: object + properties: + group_policies: + type: array + items: + type: object + properties: + address: + type: string + description: address is the account address of group policy. + group_id: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the group policy. - Example 3: Pack and unpack a message in Python. + the recommended format of the metadata is to be found here: - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 + version: + type: string + format: uint64 + description: >- + version is used to track changes to a group's GroupPolicyInfo + structure that - Example 4: Pack and unpack a message in Go + would create a different result on a running proposal. + decision_policy: + description: decision_policy specifies the group policy's decision policy. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + protocol buffer message. This string must contain at least - The pack methods provided by protobuf library will by default - use + one "/" character. The last segment of the URL's path must + represent - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + the fully qualified name of the type (as in - methods only use the fully qualified type name after the last - '/' + `path/google.protobuf.Duration`). The name should be in a + canonical form - in the type URL, for example "foo.bar.com/x/y.z" will yield type + (e.g., leading "." is not accepted). - name "y.z". + In practice, teams usually precompile into the binary all + types that they - JSON + expect it to use in the context of Any. However, for URLs + which use the - ==== + scheme `http`, `https`, or no scheme, one can optionally set + up a type - The JSON representation of an `Any` value uses the regular + server that maps type URLs to message definitions as + follows: - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + * If no scheme is provided, `https` is assumed. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + Note: this functionality is not currently available in the + official - If the embedded message type is well-known and has a custom JSON + protobuf release, and it is not used for type URLs beginning + with - representation, that representation will be embedded adding a - field + type.googleapis.com. - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + Schemes other than `http`, `https` (or the empty scheme) + might be - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + used with implementation specific semantics. + additionalProperties: {} created_at: type: string format: date-time @@ -66748,6 +63284,7 @@ definitions: type: object properties: info: + description: info is the GroupPolicyInfo of the group policy. type: object properties: address: @@ -66775,9 +63312,10 @@ definitions: would create a different result on a running proposal. decision_policy: + description: decision_policy specifies the group policy's decision policy. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -66832,128 +63370,13 @@ definitions: be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} created_at: type: string format: date-time description: >- created_at is a timestamp specifying when a group policy was created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a - group policy. description: QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type. cosmos.group.v1.QueryGroupsByAdminResponse: type: object @@ -67157,10 +63580,7 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QueryGroupsResponse is the Query/Groups response type. - - Since: cosmos-sdk 0.47.1 + description: QueryGroupsResponse is the Query/Groups response type. cosmos.group.v1.QueryProposalResponse: type: object properties: @@ -67284,7 +63704,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -67341,12 +63761,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -67461,11 +63876,9 @@ definitions: proposal passes. title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal description: QueryProposalResponse is the Query/Proposal response type. cosmos.group.v1.QueryProposalsByGroupPolicyResponse: @@ -67593,7 +64006,7 @@ definitions: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -67650,12 +64063,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -67772,11 +64180,9 @@ definitions: proposal passes. title: type: string - description: 'Since: cosmos-sdk 0.47' title: title is the title of the proposal summary: type: string - description: 'Since: cosmos-sdk 0.47' title: summary is a short summary of the proposal description: >- Proposal defines a group proposal. Any member of a group can submit @@ -68237,175 +64643,42 @@ definitions: breaker for Msg's of all type URLs. - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker actions and can grant permissions to other accounts. - cosmos.consensus.v1.QueryParamsResponse: + cometbft.types.v1.ABCIParams: type: object properties: - params: - description: >- - params are the tendermint consensus params stored in the consensus - module. - - Please note that `params.version` is not populated in this response, - it is - - tracked separately in the x/upgrade module. - type: object - properties: - block: - type: object - properties: - max_bytes: - type: string - format: int64 - title: |- - Max block size, in bytes. - Note: must be greater than 0 - max_gas: - type: string - format: int64 - title: |- - Max gas per block. - Note: must be greater or equal to -1 - description: BlockParams contains limits on the block size. - evidence: - type: object - properties: - max_age_num_blocks: - type: string - format: int64 - description: >- - Max age of evidence, in blocks. - - - The basic formula for calculating this is: MaxAgeDuration / - {average block - - time}. - max_age_duration: - type: string - description: >- - Max age of evidence, in time. - - - It should correspond with an app's "unbonding period" or other - similar - - mechanism for handling [Nothing-At-Stake - - attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). - max_bytes: - type: string - format: int64 - title: >- - This sets the maximum size of total evidence in bytes that can - be committed in a single block. - - and should fall comfortably under the max block bytes. - - Default is 1048576 or 1MB - description: EvidenceParams determine how we handle evidence of malfeasance. - validator: - type: object - properties: - pub_key_types: - type: array - items: - type: string - description: |- - ValidatorParams restrict the public key types validators can use. - NOTE: uses ABCI pubkey naming, not Amino names. - version: - type: object - properties: - app: - type: string - format: uint64 - description: VersionParams contains the ABCI application version. - abci: - type: object - properties: - vote_extensions_enable_height: - type: string - format: int64 - description: >- - vote_extensions_enable_height configures the first height - during which - - vote extensions will be enabled. During this specified height, - and for all - - subsequent heights, precommit messages that do not contain - valid extension data - - will be considered invalid. Prior to this height, vote - extensions will not - - be used or accepted by validators on the network. - - - Once enabled, vote extensions will be created by the - application in ExtendVote, - - passed to the application for validation in - VerifyVoteExtension and given - - to the application to use when proposing a block during - PrepareProposal. - description: >- - ABCIParams configure functionality specific to the Application - Blockchain Interface. - description: >- - QueryParamsResponse defines the response type for querying x/consensus - parameters. - tendermint.types.ABCIParams: + vote_extensions_enable_height: + type: string + format: int64 + description: |- + vote_extensions_enable_height has been deprecated. + Instead, use FeatureParams.vote_extensions_enable_height. + title: ABCIParams is deprecated and its contents moved to FeatureParams + cometbft.types.v1.BlockParams: type: object properties: - vote_extensions_enable_height: + max_bytes: type: string format: int64 description: >- - vote_extensions_enable_height configures the first height during which - - vote extensions will be enabled. During this specified height, and for - all + Maximum size of a block, in bytes. - subsequent heights, precommit messages that do not contain valid - extension data - - will be considered invalid. Prior to this height, vote extensions will - not - - be used or accepted by validators on the network. + Must be greater or equal to -1 and cannot be greater than the + hard-coded - Once enabled, vote extensions will be created by the application in - ExtendVote, + maximum block size, which is 100MB. - passed to the application for validation in VerifyVoteExtension and - given - to the application to use when proposing a block during - PrepareProposal. - description: >- - ABCIParams configure functionality specific to the Application Blockchain - Interface. - tendermint.types.BlockParams: - type: object - properties: - max_bytes: - type: string - format: int64 - title: |- - Max block size, in bytes. - Note: must be greater than 0 + If set to -1, the limit is the hard-coded maximum block size. max_gas: type: string format: int64 - title: |- - Max gas per block. - Note: must be greater or equal to -1 - description: BlockParams contains limits on the block size. - tendermint.types.ConsensusParams: + description: |- + Maximum gas wanted by transactions included in a block. + + Must be greater or equal to -1. If set to -1, no limit is enforced. + description: BlockParams define limits on the block size and gas. + cometbft.types.v1.ConsensusParams: type: object properties: block: @@ -68414,16 +64687,27 @@ definitions: max_bytes: type: string format: int64 - title: |- - Max block size, in bytes. - Note: must be greater than 0 + description: >- + Maximum size of a block, in bytes. + + + Must be greater or equal to -1 and cannot be greater than the + hard-coded + + maximum block size, which is 100MB. + + + If set to -1, the limit is the hard-coded maximum block size. max_gas: type: string format: int64 - title: |- - Max gas per block. - Note: must be greater or equal to -1 - description: BlockParams contains limits on the block size. + description: >- + Maximum gas wanted by transactions included in a block. + + + Must be greater or equal to -1. If set to -1, no limit is + enforced. + description: BlockParams define limits on the block size and gas. evidence: type: object properties: @@ -68431,36 +64715,39 @@ definitions: type: string format: int64 description: >- - Max age of evidence, in blocks. + Maximum age of evidence, in blocks. - The basic formula for calculating this is: MaxAgeDuration / - {average block + The recommended formula for calculating it is max_age_duration / + {average - time}. + block time}. max_age_duration: type: string description: >- - Max age of evidence, in time. + Maximum age of evidence, in time. - It should correspond with an app's "unbonding period" or other - similar + The recommended value of is should correspond to the application's - mechanism for handling [Nothing-At-Stake + "unbonding period" or other similar mechanism for handling - attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). + Nothing-At-Stake attacks. + + See: + https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed. max_bytes: type: string format: int64 - title: >- - This sets the maximum size of total evidence in bytes that can be - committed in a single block. + description: >- + Maximum size in bytes of evidence allowed to be included in a + block. - and should fall comfortably under the max block bytes. - Default is 1048576 or 1MB - description: EvidenceParams determine how we handle evidence of malfeasance. + It should fall comfortably under the maximum size of a block. + description: >- + EvidenceParams determine the validity of evidences of Byzantine + behavior. validator: type: object properties: @@ -68470,87 +64757,237 @@ definitions: type: string description: |- ValidatorParams restrict the public key types validators can use. - NOTE: uses ABCI pubkey naming, not Amino names. + + NOTE: uses ABCI public keys naming, not Amino names. version: type: object properties: app: type: string format: uint64 - description: VersionParams contains the ABCI application version. + description: |- + The ABCI application version. + + It was named app_version in CometBFT 0.34. + description: VersionParams contain the version of specific components of CometBFT. abci: + title: Use FeatureParams.vote_extensions_enable_height instead type: object properties: vote_extensions_enable_height: type: string format: int64 + description: |- + vote_extensions_enable_height has been deprecated. + Instead, use FeatureParams.vote_extensions_enable_height. + synchrony: + type: object + properties: + precision: + type: string description: >- - vote_extensions_enable_height configures the first height during - which + Bound for how skewed a proposer's clock may be from any validator + on the - vote extensions will be enabled. During this specified height, and - for all + network while still producing valid proposals. + message_delay: + type: string + description: >- + Bound for how long a proposal message may take to reach all + validators on - subsequent heights, precommit messages that do not contain valid - extension data + a network and still be considered valid. + description: >- + SynchronyParams determine the validity of block timestamps. - will be considered invalid. Prior to this height, vote extensions - will not - be used or accepted by validators on the network. + These parameters are part of the Proposer-Based Timestamps (PBTS) + algorithm. + + For more information on the relationship of the synchrony parameters + to + + block timestamps validity, refer to the PBTS specification: + + https://github.com/tendermint/spec/blob/master/spec/consensus/proposer-based-timestamp/README.md + feature: + type: object + properties: + vote_extensions_enable_height: + type: string + format: int64 + description: >- + First height during which vote extensions will be enabled. + + + During the specified height, and for all subsequent heights, + precommit + + messages that do not contain valid extension data will be + considered + + invalid. Prior to this height, or when this height is set to 0, + vote + + extensions will not be used or accepted by validators on the + network. Once enabled, vote extensions will be created by the application - in ExtendVote, + in + + ExtendVote, validated by the application in VerifyVoteExtension, + and + + used by the application in PrepareProposal, when proposing the + next block. + + + Cannot be set to heights lower or equal to the current blockchain + height. + pbts_enable_height: + type: string + format: int64 + description: >- + Height at which Proposer-Based Timestamps (PBTS) will be enabled. + + + From the specified height, and for all subsequent heights, the + PBTS + + algorithm will be used to produce and validate block timestamps. + Prior to - passed to the application for validation in VerifyVoteExtension - and given + this height, or when this height is set to 0, the legacy BFT Time - to the application to use when proposing a block during - PrepareProposal. + algorithm is used to produce and validate timestamps. + + + Cannot be set to heights lower or equal to the current blockchain + height. description: >- - ABCIParams configure functionality specific to the Application - Blockchain Interface. + FeatureParams configure the height from which features of CometBFT are + enabled. description: |- ConsensusParams contains consensus critical parameters that determine the validity of blocks. - tendermint.types.EvidenceParams: + cometbft.types.v1.EvidenceParams: type: object properties: max_age_num_blocks: type: string format: int64 description: >- - Max age of evidence, in blocks. + Maximum age of evidence, in blocks. - The basic formula for calculating this is: MaxAgeDuration / {average - block + The recommended formula for calculating it is max_age_duration / + {average - time}. + block time}. max_age_duration: type: string description: >- - Max age of evidence, in time. + Maximum age of evidence, in time. + + The recommended value of is should correspond to the application's - It should correspond with an app's "unbonding period" or other similar + "unbonding period" or other similar mechanism for handling - mechanism for handling [Nothing-At-Stake + Nothing-At-Stake attacks. - attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). + See: + https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed. max_bytes: type: string format: int64 - title: >- - This sets the maximum size of total evidence in bytes that can be - committed in a single block. + description: |- + Maximum size in bytes of evidence allowed to be included in a block. + + It should fall comfortably under the maximum size of a block. + description: EvidenceParams determine the validity of evidences of Byzantine behavior. + cometbft.types.v1.FeatureParams: + type: object + properties: + vote_extensions_enable_height: + type: string + format: int64 + description: >- + First height during which vote extensions will be enabled. + + + During the specified height, and for all subsequent heights, precommit + + messages that do not contain valid extension data will be considered + + invalid. Prior to this height, or when this height is set to 0, vote + + extensions will not be used or accepted by validators on the network. + + + Once enabled, vote extensions will be created by the application in + + ExtendVote, validated by the application in VerifyVoteExtension, and - and should fall comfortably under the max block bytes. + used by the application in PrepareProposal, when proposing the next + block. - Default is 1048576 or 1MB - description: EvidenceParams determine how we handle evidence of malfeasance. - tendermint.types.ValidatorParams: + + Cannot be set to heights lower or equal to the current blockchain + height. + pbts_enable_height: + type: string + format: int64 + description: >- + Height at which Proposer-Based Timestamps (PBTS) will be enabled. + + + From the specified height, and for all subsequent heights, the PBTS + + algorithm will be used to produce and validate block timestamps. Prior + to + + this height, or when this height is set to 0, the legacy BFT Time + + algorithm is used to produce and validate timestamps. + + + Cannot be set to heights lower or equal to the current blockchain + height. + description: >- + FeatureParams configure the height from which features of CometBFT are + enabled. + cometbft.types.v1.SynchronyParams: + type: object + properties: + precision: + type: string + description: >- + Bound for how skewed a proposer's clock may be from any validator on + the + + network while still producing valid proposals. + message_delay: + type: string + description: >- + Bound for how long a proposal message may take to reach all validators + on + + a network and still be considered valid. + description: >- + SynchronyParams determine the validity of block timestamps. + + + These parameters are part of the Proposer-Based Timestamps (PBTS) + algorithm. + + For more information on the relationship of the synchrony parameters to + + block timestamps validity, refer to the PBTS specification: + + https://github.com/tendermint/spec/blob/master/spec/consensus/proposer-based-timestamp/README.md + cometbft.types.v1.ValidatorParams: type: object properties: pub_key_types: @@ -68559,14 +64996,228 @@ definitions: type: string description: |- ValidatorParams restrict the public key types validators can use. - NOTE: uses ABCI pubkey naming, not Amino names. - tendermint.types.VersionParams: + + NOTE: uses ABCI public keys naming, not Amino names. + cometbft.types.v1.VersionParams: type: object properties: app: type: string format: uint64 - description: VersionParams contains the ABCI application version. + description: |- + The ABCI application version. + + It was named app_version in CometBFT 0.34. + description: VersionParams contain the version of specific components of CometBFT. + cosmos.consensus.v1.QueryParamsResponse: + type: object + properties: + params: + description: >- + params are the tendermint consensus params stored in the consensus + module. + + Please note that `params.version` is not populated in this response, + it is + + tracked separately in the x/upgrade module. + type: object + properties: + block: + type: object + properties: + max_bytes: + type: string + format: int64 + description: >- + Maximum size of a block, in bytes. + + + Must be greater or equal to -1 and cannot be greater than the + hard-coded + + maximum block size, which is 100MB. + + + If set to -1, the limit is the hard-coded maximum block size. + max_gas: + type: string + format: int64 + description: >- + Maximum gas wanted by transactions included in a block. + + + Must be greater or equal to -1. If set to -1, no limit is + enforced. + description: BlockParams define limits on the block size and gas. + evidence: + type: object + properties: + max_age_num_blocks: + type: string + format: int64 + description: >- + Maximum age of evidence, in blocks. + + + The recommended formula for calculating it is max_age_duration + / {average + + block time}. + max_age_duration: + type: string + description: >- + Maximum age of evidence, in time. + + + The recommended value of is should correspond to the + application's + + "unbonding period" or other similar mechanism for handling + + Nothing-At-Stake attacks. + + See: + https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed. + max_bytes: + type: string + format: int64 + description: >- + Maximum size in bytes of evidence allowed to be included in a + block. + + + It should fall comfortably under the maximum size of a block. + description: >- + EvidenceParams determine the validity of evidences of Byzantine + behavior. + validator: + type: object + properties: + pub_key_types: + type: array + items: + type: string + description: |- + ValidatorParams restrict the public key types validators can use. + + NOTE: uses ABCI public keys naming, not Amino names. + version: + type: object + properties: + app: + type: string + format: uint64 + description: |- + The ABCI application version. + + It was named app_version in CometBFT 0.34. + description: >- + VersionParams contain the version of specific components of + CometBFT. + abci: + title: Use FeatureParams.vote_extensions_enable_height instead + type: object + properties: + vote_extensions_enable_height: + type: string + format: int64 + description: |- + vote_extensions_enable_height has been deprecated. + Instead, use FeatureParams.vote_extensions_enable_height. + synchrony: + type: object + properties: + precision: + type: string + description: >- + Bound for how skewed a proposer's clock may be from any + validator on the + + network while still producing valid proposals. + message_delay: + type: string + description: >- + Bound for how long a proposal message may take to reach all + validators on + + a network and still be considered valid. + description: >- + SynchronyParams determine the validity of block timestamps. + + + These parameters are part of the Proposer-Based Timestamps (PBTS) + algorithm. + + For more information on the relationship of the synchrony + parameters to + + block timestamps validity, refer to the PBTS specification: + + https://github.com/tendermint/spec/blob/master/spec/consensus/proposer-based-timestamp/README.md + feature: + type: object + properties: + vote_extensions_enable_height: + type: string + format: int64 + description: >- + First height during which vote extensions will be enabled. + + + During the specified height, and for all subsequent heights, + precommit + + messages that do not contain valid extension data will be + considered + + invalid. Prior to this height, or when this height is set to + 0, vote + + extensions will not be used or accepted by validators on the + network. + + + Once enabled, vote extensions will be created by the + application in + + ExtendVote, validated by the application in + VerifyVoteExtension, and + + used by the application in PrepareProposal, when proposing the + next block. + + + Cannot be set to heights lower or equal to the current + blockchain height. + pbts_enable_height: + type: string + format: int64 + description: >- + Height at which Proposer-Based Timestamps (PBTS) will be + enabled. + + + From the specified height, and for all subsequent heights, the + PBTS + + algorithm will be used to produce and validate block + timestamps. Prior to + + this height, or when this height is set to 0, the legacy BFT + Time + + algorithm is used to produce and validate timestamps. + + + Cannot be set to heights lower or equal to the current + blockchain height. + description: >- + FeatureParams configure the height from which features of CometBFT + are enabled. + description: >- + QueryParamsResponse defines the response type for querying x/consensus + parameters. cosmos.app.v1alpha1.Config: type: object properties: @@ -68612,7 +65263,7 @@ definitions: cosmos.app.v1alpha1.is_module extension. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -68669,12 +65320,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} golang_bindings: type: array items: @@ -68799,7 +65445,7 @@ definitions: extension. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -68851,12 +65497,7 @@ definitions: Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} golang_bindings: type: array items: @@ -68934,7 +65575,7 @@ definitions: cosmos.app.v1alpha1.is_module extension. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -68992,12 +65633,7 @@ definitions: might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} golang_bindings: type: array items: diff --git a/contrib/devtools/Dockerfile b/contrib/devtools/Dockerfile index 7a4ec204a535..892bafdb0f73 100644 --- a/contrib/devtools/Dockerfile +++ b/contrib/devtools/Dockerfile @@ -22,12 +22,13 @@ RUN adduser -u $UID -s /bin/sh $UNAME -D USER $UNAME ENV GOLANG_PROTOBUF_VERSION=1.28.1 \ - GRPC_GATEWAY_VERSION=1.16.0 + GRPC_GATEWAY_VERSION=1.16.0 \ + GRPC_GATEWAY_PROTOC_GEN_OPENAPIV2_VERSION=2.20.0 RUN go install github.com/cosmos/cosmos-proto/cmd/protoc-gen-go-pulsar@latest && \ go install google.golang.org/protobuf/cmd/protoc-gen-go@v${GOLANG_PROTOBUF_VERSION} && \ - go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v${GRPC_GATEWAY_VERSION} \ - github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@v${GRPC_GATEWAY_VERSION} && \ + go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v${GRPC_GATEWAY_VERSION} && \ + go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v${GRPC_GATEWAY_PROTOC_GEN_OPENAPIV2_VERSION} && \ go install cosmossdk.io/orm/cmd/protoc-gen-go-cosmos-orm@v1.0.0-beta.3 && \ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest diff --git a/proto/buf.gen.swagger.yaml b/proto/buf.gen.swagger.yaml index d0f7535b1a45..39d0bd87f618 100644 --- a/proto/buf.gen.swagger.yaml +++ b/proto/buf.gen.swagger.yaml @@ -1,5 +1,5 @@ version: v1 plugins: - - name: swagger + - name: openapiv2 out: ../tmp-swagger-gen - opt: logtostderr=true,fqn_for_swagger_name=true,simple_operation_ids=true + opt: logtostderr=true,fqn_for_openapi_name=true,simple_operation_ids=true,json_names_for_fields=false diff --git a/proto/cosmos/app/v1alpha1/config.proto b/proto/cosmos/app/v1alpha1/config.proto index ee3e70659e4b..f1993b82c134 100644 --- a/proto/cosmos/app/v1alpha1/config.proto +++ b/proto/cosmos/app/v1alpha1/config.proto @@ -4,6 +4,8 @@ package cosmos.app.v1alpha1; import "google/protobuf/any.proto"; +option go_package = "cosmossdk.io/api/app/v1alpha1"; + // Config represents the configuration for a Cosmos SDK ABCI app. // It is intended that all state machine logic including the version of // baseapp and tx handlers (and possibly even Tendermint) that an app needs diff --git a/proto/cosmos/app/v1alpha1/module.proto b/proto/cosmos/app/v1alpha1/module.proto index e5413786509e..823dcb7d3259 100644 --- a/proto/cosmos/app/v1alpha1/module.proto +++ b/proto/cosmos/app/v1alpha1/module.proto @@ -4,6 +4,8 @@ package cosmos.app.v1alpha1; import "google/protobuf/descriptor.proto"; +option go_package = "cosmossdk.io/api/app/v1alpha1"; + extend google.protobuf.MessageOptions { // module indicates that this proto type is a config object for an app module // and optionally provides other descriptive information about the module. diff --git a/proto/cosmos/app/v1alpha1/query.proto b/proto/cosmos/app/v1alpha1/query.proto index 2c222d870647..cc611943108b 100644 --- a/proto/cosmos/app/v1alpha1/query.proto +++ b/proto/cosmos/app/v1alpha1/query.proto @@ -4,6 +4,8 @@ package cosmos.app.v1alpha1; import "cosmos/app/v1alpha1/config.proto"; +option go_package = "cosmossdk.io/api/app/v1alpha1"; + // Query is the app module query service. service Query { diff --git a/proto/cosmos/orm/query/v1alpha1/query.proto b/proto/cosmos/orm/query/v1alpha1/query.proto index 4500e99d5dc6..2ee19c120733 100644 --- a/proto/cosmos/orm/query/v1alpha1/query.proto +++ b/proto/cosmos/orm/query/v1alpha1/query.proto @@ -7,6 +7,8 @@ import "google/protobuf/duration.proto"; import "google/protobuf/any.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; +option go_package = "cosmossdk.io/api/app/cosmos/orm/query/v1alpha1"; + // Query is a generic gRPC service for querying ORM data. service Query { diff --git a/scripts/protoc-swagger-gen.sh b/scripts/protoc-swagger-gen.sh index 9edbc2d07f48..497cef5e4c1c 100755 --- a/scripts/protoc-swagger-gen.sh +++ b/scripts/protoc-swagger-gen.sh @@ -4,7 +4,7 @@ set -eo pipefail mkdir -p ./tmp-swagger-gen cd proto -proto_dirs=$(find ./cosmos -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) +proto_dirs=$(find ./cosmos ../x -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) for dir in $proto_dirs; do # generate swagger files (filter query files) query_file=$(find "${dir}" -maxdepth 1 \( -name 'query.proto' -o -name 'service.proto' \)) From 2e966a8f3ec2af237bd506313c5e8373950a36b4 Mon Sep 17 00:00:00 2001 From: tianyeyouyou <150894831+tianyeyouyou@users.noreply.github.com> Date: Fri, 31 May 2024 22:29:29 +0800 Subject: [PATCH 14/16] refactor(server/v2/cometbft): update function comments (#20506) --- server/v2/cometbft/client/rpc/block.go | 5 ++--- server/v2/cometbft/client/rpc/utils.go | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/server/v2/cometbft/client/rpc/block.go b/server/v2/cometbft/client/rpc/block.go index ead230b16b87..47ff2a081c28 100644 --- a/server/v2/cometbft/client/rpc/block.go +++ b/server/v2/cometbft/client/rpc/block.go @@ -55,7 +55,7 @@ func QueryBlocks(ctx context.Context, rpcClient CometRPC, page, limit int, query return result, nil } -// get block by height +// GetBlockByHeight gets block by height func GetBlockByHeight(ctx context.Context, rpcClient CometRPC, height *int64) (*v11.Block, error) { // header -> BlockchainInfo // header, tx -> Block @@ -76,6 +76,7 @@ func GetBlockByHeight(ctx context.Context, rpcClient CometRPC, height *int64) (* return out, nil } +// GetBlockByHash gets block by hash func GetBlockByHash(ctx context.Context, rpcClient CometRPC, hashHexString string) (*v11.Block, error) { hash, err := hex.DecodeString(hashHexString) if err != nil { @@ -89,8 +90,6 @@ func GetBlockByHash(ctx context.Context, rpcClient CometRPC, hashHexString strin } else if resBlock.Block == nil { return nil, fmt.Errorf("block not found with hash: %s", hashHexString) } - - // TODO: Also move NewResponseResultBlock somewhere around this package out, err := NewResponseResultBlock(resBlock) if err != nil { return nil, err diff --git a/server/v2/cometbft/client/rpc/utils.go b/server/v2/cometbft/client/rpc/utils.go index c41542c9734c..6dfac989b9a1 100644 --- a/server/v2/cometbft/client/rpc/utils.go +++ b/server/v2/cometbft/client/rpc/utils.go @@ -61,7 +61,7 @@ func NewResponseResultBlock(res *coretypes.ResultBlock) (*v11.Block, error) { return blk, nil } -// calculate total pages in an overflow safe manner +// calcTotalPages calculates total pages in an overflow safe manner func calcTotalPages(totalCount, limit int64) int64 { totalPages := int64(0) if totalCount != 0 && limit != 0 { From ffc3f76fcbfb342c09f5f264ba5e326097974d39 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 31 May 2024 17:57:54 +0200 Subject: [PATCH 15/16] ci: run action in merge queue (#20508) --- .github/workflows/pr-go-mod-tidy-mocks.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr-go-mod-tidy-mocks.yml b/.github/workflows/pr-go-mod-tidy-mocks.yml index c1891099e074..30f4a697385f 100644 --- a/.github/workflows/pr-go-mod-tidy-mocks.yml +++ b/.github/workflows/pr-go-mod-tidy-mocks.yml @@ -1,6 +1,8 @@ -name: 'Checks dependencies and mocks generation' +name: "Checks dependencies and mocks generation" on: + merge_group: pull_request: + push: branches: - main From fda440d5630087e2c13e70ca63fa4e165ca926a5 Mon Sep 17 00:00:00 2001 From: Marko Date: Fri, 31 May 2024 23:06:18 +0200 Subject: [PATCH 16/16] chore: sonar ignore directories with their own go.mods (#20509) Co-authored-by: Julien Robert --- .golangci.yml | 26 +++++++++++--------------- sonar-project.properties | 4 ++-- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 20fadf26179f..fc4dd038ba30 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,19 +1,8 @@ run: tests: true timeout: 15m - sort-results: true allow-parallel-runners: true - exclude-dir: testutil/testdata - skip-files: - - server/grpc/gogoreflection/fix_registration.go - - "fix_registration.go" - - ".*\\.pb\\.go$" - - ".*\\.pb\\.gw\\.go$" - - ".*\\.pulsar\\.go$" - - crypto/keys/secp256k1/internal/* - - types/coin_regex.go - -build-tags: + build-tags: - e2e - ledger - test_ledger_mock @@ -46,6 +35,16 @@ linters: - unused issues: + exclude-dirs: + - testutil/testdata + exclude-files: + - server/grpc/gogoreflection/fix_registration.go + - "fix_registration.go" + - ".*\\.pb\\.go$" + - ".*\\.pb\\.gw\\.go$" + - ".*\\.pulsar\\.go$" + - crypto/keys/secp256k1/internal/* + - types/coin_regex.go exclude-rules: - text: "Use of weak random number generator" linters: @@ -141,11 +140,8 @@ linters-settings: extra-rules: true dogsled: max-blank-identifiers: 6 - maligned: - suggest-new: true nolintlint: allow-unused: false - allow-leading-space: true require-explanation: true require-specific: false gosimple: diff --git a/sonar-project.properties b/sonar-project.properties index 816abe8a8c79..95bd2b396fa3 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -5,8 +5,8 @@ sonar.projectName=Cosmos SDK 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.exclusions=**/*_test.go,**/*.pb.go,**/*.pulsar.go,**/*.pb.gw.go,*.java +sonar.coverage.exclusions=**/*_test.go,**/testutil/**,**/*.pb.go,**/*.pb.gw.go,**/*.pulsar.go,docs/**,server/v2/**,store/v2/**,x/tx/**,tools/**,simapp/**,testutil/**,test_helpers.go,tests/**,test_helpers.go,docs/**,store/**,tests/**,orm/**,client/v2/**,runtime/v2/**,core/**,store/**,x/evidence,x/feegrant,x/authz,x/auth,x/bank,api,x/gov,x/staking,x/group,x/nft sonar.tests=. sonar.test.inclusions=**/*_test.go,tests/**,**/testutil/** sonar.go.coverage.reportPaths=coverage.out,*profile.out